From 2dd098d1e16bd0b8786ca97ccc7d3b06fa6bc3d1 Mon Sep 17 00:00:00 2001 From: Ryo Nihei Date: Sun, 12 Jun 2022 00:40:28 +0900 Subject: Prohibit using a pattern in an alternative When a syntax error occurs, the parser must provide a user with the names of expected tokens. However, if a pattern appears directly in an alternative, Vartan cannot assign an appropriate name to the pattern. Therefore, this commit prohibits alternatives from containing patterns. --- spec/grammar/syntax_error.go | 1 + 1 file changed, 1 insertion(+) (limited to 'spec/grammar/syntax_error.go') diff --git a/spec/grammar/syntax_error.go b/spec/grammar/syntax_error.go index 1fec801..1f9664b 100644 --- a/spec/grammar/syntax_error.go +++ b/spec/grammar/syntax_error.go @@ -37,6 +37,7 @@ var ( synErrNoDirectiveName = newSyntaxError("a directive needs a name") synErrNoOrderedSymbolName = newSyntaxError("an ordered symbol name is missing") synErrUnclosedDirGroup = newSyntaxError("a directive group must be closed by )") + synErrPatternInAlt = newSyntaxError("a pattern literal cannot appear directly in an alternative. instead, please define a terminal symbol with the pattern literal") synErrStrayExpOp = newSyntaxError("an expansion operator ... must be preceded by an identifier") synErrInvalidExpOperand = newSyntaxError("an expansion operator ... can be applied to only an identifier") synErrSemicolonNoNewline = newSyntaxError("a semicolon must be followed by a newline") -- cgit v1.2.3