-
Notifications
You must be signed in to change notification settings - Fork 2
/
op-precedence.txt
25 lines (19 loc) · 894 Bytes
/
op-precedence.txt
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
keyword := 'if' | 'while' | 'until' | 'repeat' | 'for' | 'do' | 'break' |
'print' | 'else' | 'end'
identifier := /[a-zA-Z][[:alnum:]]+/
number := /\d+/
boolean-literal := 'true' | 'false'
factor := '(' boolean-expression ')' | identifier | number
signed-factor := '-' factor | '+' factor | factor
term := signed-factor (/[*/]/ signed-factor)*
arithmetic-expression := term (/[-+]/ term)*
bit-op := '|' | '&' | '^'
bit-expression := arithmetic-expression (bit-op arithmetic-expression)*
rel-op := '==' | '!=' | '>' | '>=' | '<' | '<='
relation := bit-expression (rel-op bit-expression)*
boolean-factor := boolean-literal | relation
not-factor := '!' boolean-factor | boolean-factor
boolean-term := not-factor ('&&' not-factor)*
boolean-expression := boolean-term ('||' boolean-term)*
assignment := identifier '=' boolean-expression
expression := assignment | boolean-expression