Posted to tcl by ccbbaa at Fri Oct 26 13:40:41 GMT 2018view raw
- PEG Calculator (Expression)
- Expression <- Term (' '* AddOp ' '* Term)* ;
- Term <- Factor (' '* MulOp ' '* Factor)* ;
- Fragment <- '(' ' '* Expression ' '* ')' / Number / Var ;
- Factor <- Fragment (' '* PowOp ' '* Fragment)* ;
- Number <- Sign? Digit+ ;
- Var <- '$' ( 'x'/'y'/'z' ) ;
- Digit <- '0'/'1'/'2'/'3'/'4'/'5'/'6'/'7'/'8'/'9' ;
- Sign <- '-' / '+' ;
- MulOp <- '*' / '/' ;
- AddOp <- '+' / '-' ;
- PowOp <- '**'
- END;
- # cli command to compile:
- pt generate \
- snit -class Calculator -name Grammar "Grammar0.snit" \
- peg "Grammar0.peg"
- # error:
- pt failed: Reading peg Grammar0.peg ...
- Generating a snit parser ...
- Parse error at position 719 (Line 16, column 0).
- ... '**'\nEND;\n ...
- -----------^
- Expected one of
- * A string "END"
- * A string "leaf"
- * A unicode alphabetical character
- * The character '_:'
- # references:
- # https://wiki.tcl-lang.org/page/PEG+Example
- # NOTE: the same grammar seems to compile cleanly with pgen, only pt does
- # not like it
- % info pa
- 8.6.6