diff options
author | Ryo Nihei <nihei.dev@gmail.com> | 2022-03-28 22:31:30 +0900 |
---|---|---|
committer | Ryo Nihei <nihei.dev@gmail.com> | 2022-03-29 01:45:05 +0900 |
commit | ed43562cf58e8c0f9390421848879308fdfc60cb (patch) | |
tree | 16beff7d233b95ae53d2c8019bc47be378f304b8 /driver/parser_test.go | |
parent | Simplify the syntax of #ast directive (diff) | |
download | cotia-ed43562cf58e8c0f9390421848879308fdfc60cb.tar.gz cotia-ed43562cf58e8c0f9390421848879308fdfc60cb.tar.xz |
Add label notation
Diffstat (limited to 'driver/parser_test.go')
-rw-r--r-- | driver/parser_test.go | 60 |
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{ |