用一个字符定义标识符的antlr规则

用一个字符定义标识符的antlr规则,antlr,Antlr,我喜欢定义一个非常简单的规则,它应该表示标识符。这对于长度超过一个字符的标识符非常有效,但是对于只有一个字符的标识符,我会得到一个不匹配的TokenException(64!=45)。这是规则: ID:('a'..'z'|'a'..'z')+ ; 这有什么不对 谢谢 你完全正确,规则本身是好的,但我发现ANTLR中的很多东西都取决于规则的顺序。我以前有另一条规则,它已经与ID规则匹配。最后,它是有意义的,因为Lexer无法决定采用哪个规则 谢谢 你完全正确,规则本身是好的,但我发现ANTLR中的

我喜欢定义一个非常简单的规则,它应该表示标识符。这对于长度超过一个字符的标识符非常有效,但是对于只有一个字符的标识符,我会得到一个不匹配的TokenException(64!=45)。这是规则:

ID:('a'..'z'|'a'..'z')+ ;

这有什么不对


谢谢

你完全正确,规则本身是好的,但我发现ANTLR中的很多东西都取决于规则的顺序。我以前有另一条规则,它已经与ID规则匹配。最后,它是有意义的,因为Lexer无法决定采用哪个规则


谢谢

你完全正确,规则本身是好的,但我发现ANTLR中的很多东西都取决于规则的顺序。我以前有另一条规则,它已经与ID规则匹配。最后,它是有意义的,因为Lexer无法决定采用哪个规则


谢谢

ID:('a'..'z'|'a'..'z')+你应该展示你的全部语法,现在没有足够的信息来回答你的问题。我同意Aivar。可能会显示您的令牌文件,特别是64和45。哦,是的,可能是您的输入。
ID:('a'..'z'|'a'..'z')+你应该展示你的全部语法,现在没有足够的信息来回答你的问题。我同意Aivar。可能会显示您的令牌文件,特别是64和45。哦,是的,可能是您的输入。如果您已经解决了自己的问题,请接受您自己的答案以解决所有人的问题。谢谢,我只是简单地将我的ID规则移到字符串文本之后,但在我的URI规则之前,它解决了问题。如果您已经解决了自己的问题,请接受您自己的答案,让问题远离每个人。谢谢,我只是简单地改变了我的ID规则,并将其放在字符串文本之后,但在我的URI规则之前,它解决了这个问题。