0
我挣扎了解ANTLR,我试图匹配这样一句话:ANTLR令牌匹配,而不是文本
name "some_name" module ....
的grammare文件看起来像这样的:
swdFile : nameDecl module* EOF;
nameDecl: NAME DBL_QUOTE appName DBL_QUOTE;
appName: TEXT;
module: MODULE;
DBL_QUOTE : '\"';
NAME:'name';
MODULE:'module';
TEXT : ('a'..'z'|'A'..'Z')+ ;
该作品很好,但有一个我似乎无法理解的小故障。如果我试图解析这段文字,它会失败,因为它将引用文本与令牌匹配:
name "module" module ...
为什么?我明确告诉过,引号之间的内容是纯文本,它应该匹配TEXT标记。
行,所以词法“标记化”我在“独立”与分析器输入莫名其妙:字符串文本通常是由词法分析器,在这种情况下,你不会有一个问题来处理。感谢Bart的回答,我需要将引号移动到令牌中,以便antlr可以正确识别引用的“STRING”。仍然为什么antlr试图匹配每个TOKEN,只有在它匹配解析器语法之后? – victor
我想如何处理案件,当我想解析的东西没有引号 - >'名称模块模块',我想模块的第一次出现是名称,第二个模块是好的..模块令牌。谢谢 ! – victor