summaryrefslogtreecommitdiffstats
path: root/tcllib/modules/pt/include/example/expr_container.inc
diff options
context:
space:
mode:
Diffstat (limited to 'tcllib/modules/pt/include/example/expr_container.inc')
-rw-r--r--tcllib/modules/pt/include/example/expr_container.inc33
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
+}
+}]