mirror of
https://github.com/samsonjs/compiler.git
synced 2026-03-25 08:45:52 +00:00
op precedence pseudo-bnf
This commit is contained in:
parent
5940ac99c0
commit
9667c21e8b
1 changed files with 25 additions and 0 deletions
25
op-precedence.txt
Normal file
25
op-precedence.txt
Normal file
|
|
@ -0,0 +1,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
|
||||
Loading…
Reference in a new issue