登录
首页 >  Golang >  Go问答

ANTLR4 中可以用简单语法匹配空字符串的替代方案

来源:stackoverflow

时间:2024-03-17 17:30:21 468浏览 收藏

在 ANTLR4 中,当规则包含一个闭包,并且该闭包中存在至少一个可以匹配空字符串的替代方案时,就会出现错误。在本文中,作者遇到了一个错误,原因是 lit_string 规则中 |片段中包含了空字符串匹配项。作者对错误感到困惑,但通过检查表达式的书写,发现了额外的空字符串匹配项。

问题内容

我正在使用 antlr4 构建一个小型解析器,但我对遇到的错误感到困惑。词法分析器的定义如下: 词法分析器语法 lexerrules;

INT             :   'Int';
FLOAT           :   'Float';
STRING          :   'String';
BOOL            :   'Bool';
CHAR            :   'Character';
LIT_INT         :   '0' | DIGIT DIGIT*;
LIT_FLOAT       :   DIGIT+ '.' DIGIT+;
LIT_STRING      :   '"' (ESCAPE|.)*? '"';
LIT_CHAR        :   '\'' (CHARACTER | ESCAPE) '\'';
LIT_NIL         :   'nil';
WS              :   [ \t]+ -> skip;
ID              :   [a-zA-Z_][a-zA-Z0-9_]+;
LINE_COMMENT    :   '//' .*? '\r'? '\n' -> skip;
COMMNET         :   '/*' .*? '*/' -> skip;

fragment
DIGIT           :   [0-9];
fragment
CHARACTER       :   [a-zA-Z];
fragment
ESCAPE          :   '\\"' | '\\\\' || '\\n';

但是,在 lit_string 的规则中会出现以下错误:规则 lit_string 包含一个闭包,该闭包具有至少一个可以匹配空字符串的替代项。 我真的不明白可以匹配空字符串的替代方案是什么。我有什么遗漏的吗?


正确答案


我放置了一个 |片段中的额外内容。经常检查表达式的书写。

终于介绍完啦!小伙伴们,这篇关于《ANTLR4 中可以用简单语法匹配空字符串的替代方案》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>