From ed43562cf58e8c0f9390421848879308fdfc60cb Mon Sep 17 00:00:00 2001 From: Ryo Nihei Date: Mon, 28 Mar 2022 22:31:30 +0900 Subject: Add label notation --- driver/parser_test.go | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) (limited to 'driver/parser_test.go') 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 @@ -714,6 +714,66 @@ s foo: 'foo'; 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, }, -- cgit v1.2.3