diff options
Diffstat (limited to 'tcllib/modules/pt/include/example/expr_container.inc')
-rw-r--r-- | tcllib/modules/pt/include/example/expr_container.inc | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/tcllib/modules/pt/include/example/expr_container.inc b/tcllib/modules/pt/include/example/expr_container.inc new file mode 100644 index 0000000..b568459 --- /dev/null +++ b/tcllib/modules/pt/include/example/expr_container.inc @@ -0,0 +1,33 @@ +[example { +snit::type a_pe_grammar { + constructor {} { + install myg using pt::peg::container ${selfns}::G + $myg start {n Expression} + $myg add AddOp Digit Expression Factor MulOp Number Sign Term + $myg modes { + AddOp value + Digit value + Expression value + Factor value + MulOp value + Number value + Sign value + Term value + } + $myg rules { + AddOp {/ {t -} {t +}} + Digit {/ {t 0} {t 1} {t 2} {t 3} {t 4} {t 5} {t 6} {t 7} {t 8} {t 9}} + Expression {/ {x {t \50} {n Expression} {t \51}} {x {n Factor} {* {x {n MulOp} {n Factor}}}}} + Factor {x {n Term} {* {x {n AddOp} {n Term}}}} + MulOp {/ {t *} {t /}} + Number {x {? {n Sign}} {+ {n Digit}}} + Sign {/ {t -} {t +}} + Term {n Number} + } + return + } + + component myg + delegate method * to myg +} +}] |