gpt4 book ai didi

comments - 无法使 ANTLR4 语法跳过注释

转载 作者:行者123 更新时间:2023-12-02 19:44:23 24 4
gpt4 key购买 nike

我正在尝试编写一个 ANTLR4 语法来解析 actionscript3。我决定从相当粗粒度的东西开始:

grammar actionscriptGrammar;

OBRACE:'{';
CBRACE:'}';
STRING_DELIM:'"';

BLOCK_COMMENT : '/*' .*? '*/' -> skip;
EOL_COMMENT : '//' .*? '/n' -> skip;
WS: [ \n\t\r]+ -> skip;

TEXT: ~[{} \n\t\r"]+;

thing
: TEXT
| string_literal
| OBRACE thing+? CBRACE;

string_literal : STRING_DELIM .+? STRING_DELIM;

start_rule
: thing+?;

基本上,我想要一棵按词法范围分组的事物树。我希望注释被忽略,并且字符串文字是它们自己的东西,这样它们可能包含的任何大括号都不会影响词​​法范围。 string_literal 规则工作正常(确实如此),但两个注释规则似乎没有任何效果。 (即评论不会被忽略)。

我错过了什么?

最佳答案

这是我在 ANTLR v4 中编写的简化 Java 语法。

WS
: [ \t\r\n]+ -> channel(HIDDEN)
;

COMMENT
: '/*' .*? '*/' -> skip
;

LINE_COMMENT
: '//' ~[\r\n]* -> skip
;

也许这可以帮助你。

此外,请尝试重新排列您的代码。首先编写解析器规则,最后编写词法分析器规则。遵循自上而下的方法。我发现它对调试更有帮助。当您从 ANTLR 4 Eclipse 插件创建语法的 HTML 导出时,它也会看起来很不错。

祝你好运!

关于comments - 无法使 ANTLR4 语法跳过注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23409731/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com