-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathg.g4
More file actions
31 lines (24 loc) · 1.04 KB
/
Copy pathg.g4
File metadata and controls
31 lines (24 loc) · 1.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
grammar g;
root : (gen? '\n')* EOF ;
gen : expr # genExpr
| VAR '=:' expr # genAssign
| VAR '=:' func # genFunc
;
expr : <assoc=right> expr operBin expr # exprOperBin
| operUn expr # exprOperUn
| '(' expr ')' # exprPar
| NUM+ # exprLlista
| VAR # exprVar
;
func : func '@:' func # funcComp
| expr operBin ']' # funcOperBin
| operUn # funcOperUn
| '(' func ')' # funcPar
;
operBin : ('+' | '-' | '*' | '%' | '^' | '|' | '>' | '<' | '>=' | '<=' | '=' | '<>' | ',' | '#' | '{')('~')? ;
operUn : (']' | '#' | 'i.' | operBin ':' | operBin '/' | VAR) ;
VAR : ([a-z] | [A-Z])([a-z] | [A-Z] | [0-9] | '_')* ;
NUM : '_'?[0-9]+ ;
COM : 'NB.' ~[\n]* -> skip ;
WS : [ \t\r]+ -> skip ;
LEXICAL_ERROR : . ;