-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBasicExpression.g4
More file actions
67 lines (54 loc) · 1.37 KB
/
BasicExpression.g4
File metadata and controls
67 lines (54 loc) · 1.37 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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
grammar BasicExpression;
import BasicLexer;
prog: stat+;
stat
: expression NEWLINE
| NEWLINE
;
expression
: SUB expression # unaryMinusExpr
| string # StringExpr
| number # NumberExpr
| float # FloatExpr
| func # FuncExpr
| id # IdExpr
| (LPAREN expression RPAREN) # ParenExpr
| expression LPARENSQ expression RPARENSQ # ArrExpr
| expression op=(MUL|DIV|IDIV|MOD) expression # MulDivExpr
| expression op=(ADD|SUB) expression # AddSubExpr
| expression op=(GTE|GT|LTE|LT|EQ|NEQ) expression # RelExpr
| NOT expression # NotExpr
| expression AND expression # AndExpr
| expression OR expression # OrExpr
| <assoc=right> expression EXP expression # ExpExpr
;
func
: lenfunc
| valfunc
| isnanfunc
| randfunc
;
string
: STRINGLITERAL
;
number
: NUMBER
;
float
: FLOAT
;
id
: ID
;
lenfunc
: LEN LPAREN expression RPAREN
;
valfunc
: VAL LPAREN expression RPAREN
;
isnanfunc
: ISNAN LPAREN expression RPAREN
;
randfunc
: RAND LPAREN expression COMMA expression RPAREN
;