【发布时间】:2016-06-02 12:00:18
【问题描述】:
给定以下 ANTLR 语法:
tokens
{
SET;
UNKNOWN;
LIST;
}
statement : SET_KEYWORD list = value_list -> ^(SET $list)
| UNKNOWN_KEYWORD -> ^(UNKNOWN);
value_list : element += value (COMMA_KEYWORD element += value)* -> ^(LIST $element+);
value : STRING_KEYWORD;
SET_KEYWORD : 'SET';
UNKNOWN_KEYWORD : .;
fragment STRING_KEYWORD : '"' ('a'..'z' | 'A'..'Z')* '"';
当解析以下文本时(即不关闭双引号):
SET "example
ANTLR 给出以下错误:
TEST(1) : lexer error 1 :
Unexpected character at offset 12, (end of input).
This indicates a poorly specified lexer RULE
or unterminated input element such as: "STRING["]
The lexer was matching from line 1, offset 3, which
looks like this:
"example
人们会认为 UNKNOWN_KEYWORD 会赶上这类问题。如何修复语法,使上述错误消息不再显示?
【问题讨论】:
标签: c antlr interpreter antlr3