gpt4 book ai didi

java - 如何检查字符串是否在 ANTLR 上下文中匹配?

转载 作者:行者123 更新时间:2023-11-29 04:11:06 25 4
gpt4 key购买 nike

这个 ANTLR4 语法:

/* Parser rules */
statement: A '='? B;
/* Lexer rules */
A: ...
B: ...

...匹配 A BA = B

如果我成为访客:

public String visitStatement(StatementContext ctx) {
...
}

如何检查匹配的内容是A B还是A = B(更具体地说,=是否匹配) ?我可以这样做:

ctx.getChild(1).getText().equals("=")

但是它看起来太hacky了,如果碰巧B的文本是“=”,它就不起作用了。是否有公认的方法来执行此操作?

最佳答案

您可以在语法中为“=”标记指定一个名称,或者在该特定规则中为 '='? 添加标签。

命名 token :

statement: A '='? B; // You can write EQ? here or leave it as '='?
/* Lexer rules */
EQ: '=';

使用标签:

statement: A eq='='? B;

然后您可以分别使用 .EQ().eq 来访问与给定 StatementContext< 匹配的 = 标记。如果没有 =,您将得到 null。因此,您可以使用 ctx.EQ() == nullctx.eq == null 来检查 = 是否存在。

关于java - 如何检查字符串是否在 ANTLR 上下文中匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55070280/

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