compiler\parser.nim
implemented arrow like operators
This commit is contained in:
parent
7b480ea2ba
commit
2804c0373c
2 changed files with 36 additions and 37 deletions
|
|
@ -4,7 +4,7 @@ semicolon = ';' COMMENT?
|
|||
colon = ':' COMMENT?
|
||||
colcom = ':' COMMENT?
|
||||
|
||||
operator = OP0 | OP1 | OP2 | OP3 | OP4 | OP5 | OP6 | OP7 | OP8 | OP9
|
||||
operator = OP0 | OP1 | OP2 | OP3 | OP4 | OP5 | OP6 | OP7 | OP8 | OP9 | OP10
|
||||
| 'or' | 'xor' | 'and'
|
||||
| 'is' | 'isnot' | 'in' | 'notin' | 'of'
|
||||
| 'div' | 'mod' | 'shl' | 'shr' | 'not' | 'addr' | 'static' | '..'
|
||||
|
|
@ -14,16 +14,17 @@ prefixOperator = operator
|
|||
optInd = COMMENT?
|
||||
optPar = (IND{>} | IND{=})?
|
||||
|
||||
simpleExpr = assignExpr (OP0 optInd assignExpr)*
|
||||
assignExpr = orExpr (OP1 optInd orExpr)*
|
||||
orExpr = andExpr (OP2 optInd andExpr)*
|
||||
andExpr = cmpExpr (OP3 optInd cmpExpr)*
|
||||
cmpExpr = sliceExpr (OP4 optInd sliceExpr)*
|
||||
sliceExpr = ampExpr (OP5 optInd ampExpr)*
|
||||
ampExpr = plusExpr (OP6 optInd plusExpr)*
|
||||
plusExpr = mulExpr (OP7 optInd mulExpr)*
|
||||
mulExpr = dollarExpr (OP8 optInd dollarExpr)*
|
||||
dollarExpr = primary (OP9 optInd primary)*
|
||||
simpleExpr = arrowExpr (OP0 optInd arrowExpr)*
|
||||
arrowExpr = assignExpr (OP1 optInd assignExpr)*
|
||||
assignExpr = orExpr (OP2 optInd orExpr)*
|
||||
orExpr = andExpr (OP3 optInd andExpr)*
|
||||
andExpr = cmpExpr (OP4 optInd cmpExpr)*
|
||||
cmpExpr = sliceExpr (OP5 optInd sliceExpr)*
|
||||
sliceExpr = ampExpr (OP6 optInd ampExpr)*
|
||||
ampExpr = plusExpr (OP7 optInd plusExpr)*
|
||||
plusExpr = mulExpr (OP8 optInd mulExpr)*
|
||||
mulExpr = dollarExpr (OP9 optInd dollarExpr)*
|
||||
dollarExpr = primary (OP10 optInd primary)*
|
||||
symbol = '`' (KEYW|IDENT|literal|(operator|'('|')'|'['|']'|'{'|'}'|'=')+)+ '`'
|
||||
| IDENT
|
||||
indexExpr = expr
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue