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