|
@@ -5,7 +5,14 @@ grammar{
|
|
|
|
|
|
include: INCLUDE STRVALUE newline+;
|
|
|
|
|
|
- statement: ((vardecl | assignment | return | func_call) newline) | (ifelse | while) | (newline) @Rm;
|
|
|
+ statement
|
|
|
+ : (vardecl newline)
|
|
|
+ | (assignment newline)
|
|
|
+ | (return newline)
|
|
|
+ | (func_call newline)
|
|
|
+ | ifelse
|
|
|
+ | while
|
|
|
+ | newline @Rm;
|
|
|
|
|
|
vardecl: type_specifier ID;
|
|
|
|
|
@@ -18,10 +25,6 @@ grammar{
|
|
|
binary_operation
|
|
|
: disjunction;
|
|
|
|
|
|
- //lvalue
|
|
|
- // : IDENTIFIER
|
|
|
- // | IDENTIFIER LSQUARE expression RSQUARE;
|
|
|
-
|
|
|
disjunction
|
|
|
: (disjunction OR conjunction)
|
|
|
| conjunction;
|
|
@@ -78,7 +81,7 @@ grammar{
|
|
|
deref: QUESTIONMARK ANYTHING?;
|
|
|
|
|
|
type_specifier: INT | FLOAT | BOOL | STRING | TYPE | ACTION | ELEMENT;
|
|
|
- actionname: EXCLAMATION (IF_NODE | WHILE_NODE | ASSIGN_NODE | CALL_NODE | BREAK_NODE | CONTINUE_NODE | RETURN_NODE | RESOLVE_NODE | ACCESS_NODE | CONSTANT_NODE | GLOBAL_NODE | DECLARE_NODE | INPUT_NODE | OUTPUT_NODE);
|
|
|
+ actionname: IF_NODE | WHILE_NODE | ASSIGN_NODE | CALL_NODE | BREAK_NODE | CONTINUE_NODE | RETURN_NODE | RESOLVE_NODE | ACCESS_NODE | CONSTANT_NODE | GLOBAL_NODE | DECLARE_NODE | INPUT_NODE | OUTPUT_NODE;
|
|
|
|
|
|
string: (STRVALUE|LONG_STRVALUE);
|
|
|
|
|
@@ -123,27 +126,25 @@ grammar{
|
|
|
|
|
|
tokens{
|
|
|
// TOKENS (written in CAPS)
|
|
|
- ID: '[a-zA-Z_][a-zA-Z_0-9.]*';
|
|
|
- ANYTHING: '[a-zA-Z_0-9/.]+';
|
|
|
VOID: 'Void';
|
|
|
INCLUDE: 'include';
|
|
|
|
|
|
ELEMENT: 'Element';
|
|
|
|
|
|
- IF_NODE: 'if';
|
|
|
- WHILE_NODE: 'while';
|
|
|
- ASSIGN_NODE: 'assign';
|
|
|
- CALL_NODE: 'call';
|
|
|
- BREAK_NODE: 'break';
|
|
|
- CONTINUE_NODE: 'continue';
|
|
|
- RETURN_NODE: 'return';
|
|
|
- RESOLVE_NODE: 'resolve';
|
|
|
- ACCESS_NODE: 'access';
|
|
|
- CONSTANT_NODE: 'constant';
|
|
|
- INPUT_NODE: 'input';
|
|
|
- OUTPUT_NODE: 'output';
|
|
|
- GLOBAL_NODE: 'global';
|
|
|
- DECLARE_NODE: 'declare';
|
|
|
+ IF_NODE: '!if';
|
|
|
+ WHILE_NODE: '!while';
|
|
|
+ ASSIGN_NODE: '!assign';
|
|
|
+ CALL_NODE: '!call';
|
|
|
+ BREAK_NODE: '!break';
|
|
|
+ CONTINUE_NODE: '!continue';
|
|
|
+ RETURN_NODE: '!return';
|
|
|
+ RESOLVE_NODE: '!resolve';
|
|
|
+ ACCESS_NODE: '!access';
|
|
|
+ CONSTANT_NODE: '!constant';
|
|
|
+ INPUT_NODE: '!input';
|
|
|
+ OUTPUT_NODE: '!output';
|
|
|
+ GLOBAL_NODE: '!global';
|
|
|
+ DECLARE_NODE: '!declare';
|
|
|
|
|
|
FUNCTION: 'function';
|
|
|
RETURN: 'return';
|
|
@@ -203,5 +204,7 @@ grammar{
|
|
|
FALSE: 'False';
|
|
|
|
|
|
COMM: '[\t]*//[^\n]*';
|
|
|
+ ID: '[a-zA-Z_][a-zA-Z_0-9.]*';
|
|
|
+ ANYTHING: '[a-zA-Z_0-9/.]+';
|
|
|
}
|
|
|
}
|