java ANTLR 4支持空格和特殊字符的字符串语法规则
我没有经验,仍在学习语法。我只需要一个支持空格和特殊字符的语法示例,比如!,“,#,$,^,&;。 因为根据我目前的语法和里面的规则,我无法打印出一些支持空格和特殊符号的字符串。我知道空格会被丢弃)
例如,如果我输入:你好,世界强>
输出为HelloWorld<;-空白和;字符(!)投掷
请看这张图片: problem
为什么
下面是我当前的语法示例。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
但我不明白发生了什么。我需要一个建议。谢谢
# 1 楼答案
最后我找到了一个能给我答案的人。 他是jim
下面是他的解决方案: 您正在将字符串的规则声明为解析器规则。
Lexer规则应该以大写字母开头:STRING:。。。。
您的字母规则不是一个片段,因此它与Id冲突
您尚未指定如何处理lexer中的空白,因此它将不匹配并给出一个错误。
找一本在线教程,或者买这本书,或者更好的是,两者都做
吉姆
现在我的问题解决了,我可以打印出带有空格的字符串