aboutsummaryrefslogtreecommitdiff
path: root/driver
diff options
context:
space:
mode:
Diffstat (limited to 'driver')
-rw-r--r--driver/parser_test.go60
1 files changed, 60 insertions, 0 deletions
diff --git a/driver/parser_test.go b/driver/parser_test.go
index 3f67bf2..dfc2fe5 100644
--- a/driver/parser_test.go
+++ b/driver/parser_test.go
@@ -717,6 +717,66 @@ error: 'error' #skip;
`,
specErr: true,
},
+ // A label must be unique in an alternative.
+ {
+ specSrc: `
+%name test
+
+s
+ : foo@x bar@x
+ ;
+
+foo: 'foo';
+bar: 'bar';
+`,
+ specErr: true,
+ },
+ // The same label can be used between different alternatives.
+ {
+ specSrc: `
+%name test
+
+s
+ : foo@x bar
+ | foo@x
+ ;
+
+foo: 'foo';
+bar: 'bar';
+`,
+ src: `foo`,
+ },
+ // A label cannot be the same name as terminal symbols.
+ {
+ specSrc: `
+%name test
+
+s
+ : foo bar@foo
+ ;
+
+foo: 'foo';
+bar: 'bar';
+`,
+ specErr: true,
+ },
+ // A label cannot be the same name as non-terminal symbols.
+ {
+ specSrc: `
+%name test
+
+s
+ : foo@a
+ ;
+a
+ : bar
+ ;
+
+foo: 'foo';
+bar: 'bar';
+`,
+ specErr: true,
+ },
}
classes := []grammar.Class{