summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Thurston <thurston@colm.net>2020-05-11 09:36:38 +0300
committerAdrian Thurston <thurston@colm.net>2020-05-11 09:36:38 +0300
commite9d02062b2e588ca22efcd68e8bf1586c0b88a31 (patch)
tree13323a6e41138917c66992d2b81805070f73570f
parent0f4125989c9824502d719d91294afdbc8ef8ff2c (diff)
downloadcolm-e9d02062b2e588ca22efcd68e8bf1586c0b88a31.tar.gz
added production redefinition tests
-rw-r--r--test/colm.d/Makefile.am7
-rw-r--r--test/colm.d/redef1.lm29
-rw-r--r--test/colm.d/redef2.lm30
-rw-r--r--test/colm.d/redef3.lm30
-rw-r--r--test/colm.d/redef4.lm24
-rw-r--r--test/colm.d/redef5.lm27
6 files changed, 146 insertions, 1 deletions
diff --git a/test/colm.d/Makefile.am b/test/colm.d/Makefile.am
index 08e40121..e2a4c911 100644
--- a/test/colm.d/Makefile.am
+++ b/test/colm.d/Makefile.am
@@ -175,7 +175,12 @@ EXTRA_DIST = \
streamseq1b.in \
streamseq1c.in \
travs2.in \
- include1a.lmi
+ include1a.lmi \
+ redef1.lm \
+ redef2.lm \
+ redef3.lm \
+ redef4.lm \
+ redef5.lm
gentests: gentests.sh Makefile
@$(top_srcdir)/sedsubst $< $@ -w,+x $(SED_SUBST)
diff --git a/test/colm.d/redef1.lm b/test/colm.d/redef1.lm
new file mode 100644
index 00000000..6923a4d3
--- /dev/null
+++ b/test/colm.d/redef1.lm
@@ -0,0 +1,29 @@
+lex
+ token ident /[a-z]+/
+ ignore /[ \t\n]+/
+end
+
+def main
+ [ident]
+
+redef main
+ [ident ident]
+
+parse Main: main[stdin]
+
+if Main
+ print [Main]
+else
+ print "parse error
+##### IN #####
+a
+##### EXP #####
+parse error
+##### IN #####
+a b
+##### EXP #####
+a b
+##### IN #####
+a b c
+##### EXP #####
+parse error
diff --git a/test/colm.d/redef2.lm b/test/colm.d/redef2.lm
new file mode 100644
index 00000000..3d44bb47
--- /dev/null
+++ b/test/colm.d/redef2.lm
@@ -0,0 +1,30 @@
+lex
+ token ident /[a-z]+/
+ ignore /[ \t\n]+/
+end
+
+def main
+ [ident]
+
+redef main
+ [...]
+| [ident ident]
+
+parse Main: main[stdin]
+
+if Main
+ print [Main]
+else
+ print "parse error
+##### IN #####
+a
+##### EXP #####
+a
+##### IN #####
+a b
+##### EXP #####
+a b
+##### IN #####
+a b c
+##### EXP #####
+parse error
diff --git a/test/colm.d/redef3.lm b/test/colm.d/redef3.lm
new file mode 100644
index 00000000..e8013018
--- /dev/null
+++ b/test/colm.d/redef3.lm
@@ -0,0 +1,30 @@
+lex
+ token ident /[a-z]+/
+ ignore /[ \t\n]+/
+end
+
+def main
+ [ident]
+
+redef main
+ [ident ident]
+| [...]
+
+parse Main: main[stdin]
+
+if Main
+ print [Main]
+else
+ print "parse error
+##### IN #####
+a
+##### EXP #####
+a
+##### IN #####
+a b
+##### EXP #####
+a b
+##### IN #####
+a b c
+##### EXP #####
+parse error
diff --git a/test/colm.d/redef4.lm b/test/colm.d/redef4.lm
new file mode 100644
index 00000000..c88df267
--- /dev/null
+++ b/test/colm.d/redef4.lm
@@ -0,0 +1,24 @@
+lex
+ token ident /[a-z]+/
+ ignore /[ \t\n]+/
+end
+
+token alt_ident /[a-z]+/
+
+def main
+ [ident]
+
+redef main
+ [...]
+| [alt_ident]
+
+parse Main: main[stdin]
+if Main {
+ AI: alt_ident = alt_ident in Main
+ if AI
+ print "found [^AI]
+}
+
+##### IN #####
+a
+##### EXP #####
diff --git a/test/colm.d/redef5.lm b/test/colm.d/redef5.lm
new file mode 100644
index 00000000..aa19d3f5
--- /dev/null
+++ b/test/colm.d/redef5.lm
@@ -0,0 +1,27 @@
+lex
+ token ident /[a-z]+/
+ ignore /[ \t\n]+/
+end
+
+lex
+ token alt_ident /[a-z]+/
+ ignore /[ \t\n]+/
+end
+
+def main
+ [ident]
+
+redef main
+ [alt_ident]
+| [...]
+
+parse Main: main[stdin]
+if Main {
+ AI: alt_ident = alt_ident in Main
+ if AI
+ print "found alt [^AI]
+}
+##### IN #####
+a
+##### EXP #####
+found alt a