我没有经验,仍然在学习语法。我只需要一个支持空格和特殊字符的示例语法,如!,“,#,$,^和&amp ;. 因为我目前的语法和里面的规则我不能打印出一些支持空格和特殊符号的字符串。我知道空白被扔了。)
例如,如果我提供输入: Hello World !!!!! 输出是 HelloWorld < - 空白& char(!)tossed
看看这张图片: problem
为什么?
这是我目前的语法example.g4
string
: '"' (~'"'|'\"')* '"'
;
Id
: Letter(Letter|Digit)*
;
Num
: Digit
;
fragment
Digit
: [0-9]+
;
Letter
: [a-zA-Z]
;
LINE_COMMENT
: '//' ~[\r\n]* -> skip
;
我看了这个链接: ANTLR parse strings (keep whitespaces) and parse normal identifiers
但我无法理解发生了什么。我需要一个建议。感谢。
答案 0 :(得分:1)
Finnaly我发现有人给我解决方案。 他是jim
在这里他的解决方案:
您将字符串规则声明为解析器规则。
Lexer规则应以大写字母开头:STRING:....
You Letter规则不是片段,因此与Id冲突
你还没有指定如何处理词法分析器中的空格,所以它只是不匹配并给出错误。
找到一个在线教程,或者购买这本书,或者更好的是,两者兼顾。
吉姆
现在我的问题解决了,我可以打印出里面有空格的字符串。