summaryrefslogtreecommitdiff
path: root/test/colm.d/ragelambig1.lm
diff options
context:
space:
mode:
authorAdrian Thurston <thurston@colm.net>2019-09-09 10:19:58 -0600
committerAdrian Thurston <thurston@colm.net>2019-09-09 10:19:58 -0600
commitfff52cd5a567ec541cd487b9fee2d89bf9b6f6eb (patch)
tree046a3f0f457343f7c99bf096863daf023a085051 /test/colm.d/ragelambig1.lm
parent2d8e9c3f5c0417d6237c945c50f92bf8d28b32d5 (diff)
downloadcolm-fff52cd5a567ec541cd487b9fee2d89bf9b6f6eb.tar.gz
base (aapl, colm, ragel) test cases building
Diffstat (limited to 'test/colm.d/ragelambig1.lm')
-rw-r--r--test/colm.d/ragelambig1.lm71
1 files changed, 71 insertions, 0 deletions
diff --git a/test/colm.d/ragelambig1.lm b/test/colm.d/ragelambig1.lm
new file mode 100644
index 00000000..1e98bcf6
--- /dev/null
+++ b/test/colm.d/ragelambig1.lm
@@ -0,0 +1,71 @@
+lex
+ ignore /[\t\n ]+/
+ literal `^ `| `- `, `: `! `? `.
+ literal `( `) `{ `} `* `& `+
+
+ literal `-- `:> `:>> `<: `-> `**
+
+ token word /[a-zA-Z_][a-zA-Z0-9_]*/
+ token uint /[0-9]+/
+end
+
+
+def start
+ [expression]
+ {
+ print( xml( lhs ) )
+ }
+
+def expression
+ [expression `| term]
+| [expression `& term]
+| [expression `- term]
+| [expression `-- term]
+| [term]
+
+def term
+ [term factor_with_rep]
+ {
+ if match lhs [term `- uint]
+ reject
+ }
+| [term `. factor_with_rep]
+| [term `:> factor_with_rep]
+| [term `:>> factor_with_rep]
+| [term `<: factor_with_rep]
+| [factor_with_rep]
+
+def factor_with_rep
+ [factor_with_rep `*]
+| [factor_with_rep `**]
+| [factor_with_rep `?]
+| [factor_with_rep `+]
+| [factor_with_rep `{ factor_rep_num `}]
+| [factor_with_rep `{ `, factor_rep_num `}]
+| [factor_with_rep `{ factor_rep_num `, `}]
+| [factor_with_rep `{ factor_rep_num `, factor_rep_num `}]
+| [factor_with_neg]
+
+def factor_rep_num [uint]
+
+def factor_with_neg
+ [`! factor_with_neg]
+| [`^ factor_with_neg]
+| [factor]
+
+def factor
+ [alphabet_num]
+| [word]
+| [`( expression `)]
+
+def alphabet_num
+ [uint]
+| [`- uint]
+
+parse start[ stdin ]
+
+print( '\n' )
+##### IN #####
+1 - 1
+##### EXP #####
+<start><expression><expression><term><factor_with_rep><factor_with_neg><factor><alphabet_num><uint>1</uint></alphabet_num></factor></factor_with_neg></factor_with_rep></term></expression><_literal_0007>-</_literal_0007><term><factor_with_rep><factor_with_neg><factor><alphabet_num><uint>1</uint></alphabet_num></factor></factor_with_neg></factor_with_rep></term></expression></start>