summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
Diffstat (limited to 'examples')
-rw-r--r--examples/test/srg/cyclic-direct/cyclic-direct.gf7
-rw-r--r--examples/test/srg/cyclic-empty-prod/cyclic-empty-prod.gf9
-rw-r--r--examples/test/srg/cyclic-indirect/cyclic-indirect.gf11
-rw-r--r--examples/test/srg/lc_lr-empty-category/lc_lr-empty-category.gf9
-rw-r--r--examples/test/srg/left-recursive/left-recursive.gf7
-rw-r--r--examples/test/srg/variants-ebnf/variants-ebnf.gf4
6 files changed, 47 insertions, 0 deletions
diff --git a/examples/test/srg/cyclic-direct/cyclic-direct.gf b/examples/test/srg/cyclic-direct/cyclic-direct.gf
new file mode 100644
index 000000000..e9bc669c6
--- /dev/null
+++ b/examples/test/srg/cyclic-direct/cyclic-direct.gf
@@ -0,0 +1,7 @@
+cat S;
+
+fun f : S -> S ;
+fun g : S ;
+
+lin f s = { s = s.s } ;
+lin g = { s = "g" } ; \ No newline at end of file
diff --git a/examples/test/srg/cyclic-empty-prod/cyclic-empty-prod.gf b/examples/test/srg/cyclic-empty-prod/cyclic-empty-prod.gf
new file mode 100644
index 000000000..fc87b893f
--- /dev/null
+++ b/examples/test/srg/cyclic-empty-prod/cyclic-empty-prod.gf
@@ -0,0 +1,9 @@
+cat S; E;
+
+fun s : S ;
+fun es : E -> S -> S ;
+fun e : E ;
+
+lin s = { s = "s" } ;
+lin es e s = { s = e.s ++ s.s } ;
+lin e = { s = [] } ;
diff --git a/examples/test/srg/cyclic-indirect/cyclic-indirect.gf b/examples/test/srg/cyclic-indirect/cyclic-indirect.gf
new file mode 100644
index 000000000..316589cd8
--- /dev/null
+++ b/examples/test/srg/cyclic-indirect/cyclic-indirect.gf
@@ -0,0 +1,11 @@
+-- a grammar with an indirect cycle
+
+cat S; G;
+
+fun f : S ;
+fun fg : G -> S ;
+fun gf : S -> G ;
+
+lin f = { s = "f" } ;
+lin fg x = x;
+lin gf x = x;
diff --git a/examples/test/srg/lc_lr-empty-category/lc_lr-empty-category.gf b/examples/test/srg/lc_lr-empty-category/lc_lr-empty-category.gf
new file mode 100644
index 000000000..f0df42fc8
--- /dev/null
+++ b/examples/test/srg/lc_lr-empty-category/lc_lr-empty-category.gf
@@ -0,0 +1,9 @@
+cat S; E;
+
+fun f : E -> S ;
+fun g : S -> S ;
+fun e : E ;
+
+lin f e = { s = e.s } ;
+lin g s = { s = s.s ++ "x" } ;
+lin e = { s = "e" } ;
diff --git a/examples/test/srg/left-recursive/left-recursive.gf b/examples/test/srg/left-recursive/left-recursive.gf
new file mode 100644
index 000000000..df873e4a9
--- /dev/null
+++ b/examples/test/srg/left-recursive/left-recursive.gf
@@ -0,0 +1,7 @@
+cat S;
+
+fun f : S -> S ;
+ g : S ;
+
+lin f x = { s = x.s ++ "f" } ;
+ g = { s = "s" } ;
diff --git a/examples/test/srg/variants-ebnf/variants-ebnf.gf b/examples/test/srg/variants-ebnf/variants-ebnf.gf
new file mode 100644
index 000000000..6671918ec
--- /dev/null
+++ b/examples/test/srg/variants-ebnf/variants-ebnf.gf
@@ -0,0 +1,4 @@
+cat S;
+fun f : S;
+
+lin f = { s = variants {"a"; "b"} ++ variants {"c"; "d"} ++ variants {"e"; "f"} ++ variants { "g";"h";} } ; \ No newline at end of file