adding op (unordered)
This commit is contained in:
parent
197df773f7
commit
9c17bd6c81
67
spf.lark
67
spf.lark
@ -1,15 +1,16 @@
|
||||
start: (instruction)*
|
||||
|
||||
instruction: keyword expression TERMINAL
|
||||
| type declaration TERMINAL
|
||||
instruction: type declaration TERMINAL
|
||||
| assignation TERMINAL
|
||||
| controls
|
||||
| SHOW_KW expression ("," expression)* TERMINAL
|
||||
| ADD_KW expression "dans" VARIABLE TERMINAL
|
||||
|
||||
keyword: ADD_KW
|
||||
| SHOW_KW
|
||||
|
||||
expression: expressionleft
|
||||
expression: expressionleft // TODO: priorité des op certainement fausse
|
||||
| gen_op
|
||||
| bool_op
|
||||
| int_op
|
||||
| list_op
|
||||
|
||||
expressionleft: literal
|
||||
| list
|
||||
@ -19,8 +20,23 @@ expressionleft: literal
|
||||
gen_op: expressionleft SAME_OP expression
|
||||
| expressionleft DIFF_OP expression
|
||||
|
||||
bool_op: expressionleft AND_OP expression
|
||||
| expressionleft OR_OP expression
|
||||
| NOT_OP expression
|
||||
|
||||
int_op: expressionleft LT_OP expression
|
||||
| expressionleft LE_OP expression
|
||||
| expressionleft GT_OP expression
|
||||
| expressionleft GE_OP expression
|
||||
| expressionleft operator expression
|
||||
| NEG_OP expression
|
||||
|
||||
list_op: expressionleft CONC_OP expression
|
||||
| expressionleft ("[" expression "]" | range)
|
||||
| SIZE_OP expression
|
||||
|
||||
type: BOOL_TYPE
|
||||
| INT_TYPE
|
||||
| INT_TYPE
|
||||
| STR_TYPE
|
||||
| LIST_TYPE
|
||||
|
||||
@ -29,6 +45,7 @@ declaration: VARIABLE (EQUAL_SIGN expression)?
|
||||
assignation: VARIABLE EQUAL_SIGN expression
|
||||
|
||||
loop: "tant" "que" expression "faire" "{" (instruction)* "}"
|
||||
| "pour" "chaque" type VARIABLE "dans" expression "faire" "{" (instruction)* "}"
|
||||
|
||||
literal: ENTIER
|
||||
| booleen
|
||||
@ -36,7 +53,7 @@ literal: ENTIER
|
||||
|
||||
list: "[" expression? ("," expression)* "]"
|
||||
|
||||
range: "[" ENTIER? ":" ENTIER? "]"
|
||||
range: "[" expression? ":" expression? "]"
|
||||
|
||||
controls: test
|
||||
| loop
|
||||
@ -45,10 +62,10 @@ test: "si" expression "alors" "{" instruction* "}"
|
||||
| "si" expression "alors" "{" instruction* "}" "sinon" "{" instruction* "}"
|
||||
|
||||
|
||||
operator: PLUS_SIGN
|
||||
| MINUS_SIGN
|
||||
| TIMES_SIGN
|
||||
| DIVIDE_SIGN // TODO: not complete
|
||||
operator: PLUS_OP
|
||||
| MINUS_OP
|
||||
| TIMES_OP
|
||||
| DIVIDE_OP // TODO: not complete
|
||||
|
||||
TERMINAL: ";"
|
||||
|
||||
@ -57,16 +74,11 @@ VARIABLE: VAR_CHARS (VAR_CHARS | /[0-9]/)*
|
||||
|
||||
EQUAL_SIGN: "="
|
||||
|
||||
ENTIER: /[1-9][0-9]*/
|
||||
ENTIER: /0|[1-9][0-9]*/
|
||||
|
||||
booleen: TRUE_KW
|
||||
| FALSE_KW
|
||||
|
||||
PLUS_SIGN: "+"
|
||||
MINUS_SIGN: "-"
|
||||
TIMES_SIGN: "*"
|
||||
DIVIDE_SIGN: "/"
|
||||
|
||||
BOOL_TYPE: "booléen"
|
||||
INT_TYPE: "entier"
|
||||
STR_TYPE: "texte"
|
||||
@ -75,6 +87,25 @@ LIST_TYPE: "liste"
|
||||
SAME_OP: "==" | "vaut"
|
||||
DIFF_OP: "!=" | "ne" "vaut" "pas"
|
||||
|
||||
AND_OP: "et"
|
||||
OR_OP: "ou"
|
||||
NOT_OP: "not"
|
||||
|
||||
NEG_OP: "-"
|
||||
|
||||
PLUS_OP: "+"
|
||||
MINUS_OP: "-"
|
||||
TIMES_OP: "*"
|
||||
DIVIDE_OP: "/"
|
||||
|
||||
LT_OP: "<"
|
||||
LE_OP: "<="
|
||||
GT_OP: ">"
|
||||
GE_OP: ">="
|
||||
|
||||
CONC_OP: "+"
|
||||
SIZE_OP: "taille"
|
||||
|
||||
ADD_KW: "ajouter"
|
||||
SHOW_KW: "afficher"
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user