adding op (unordered)
This commit is contained in:
		
							
								
								
									
										65
									
								
								spf.lark
									
									
									
									
									
								
							
							
						
						
									
										65
									
								
								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,6 +20,21 @@ 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  | ||||
| 	| STR_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" | ||||
|  | ||||
|  | ||||
		Reference in New Issue
	
	Block a user