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冲突
您没有指定如何处理您的词法分析器中的空格,因此它将不匹配并给出错误。
查找在线教程之一,或购买这本书,或者更好的是,两者都做。

吉姆


现在我的问题解决了,我可以打印出里面有空格的字符串。