gpt4 book ai didi

java - 如何在 ANTLR4 中发出 token ?

转载 作者:行者123 更新时间:2023-12-04 08:42:24 25 4
gpt4 key购买 nike

这是我的 grammar.g4:

FOO: 'x';
BAR: 'y'
{ /* here! */ };

我希望在输入包含 y 时发出标记 BARFOO。我应该在 here! 部分写什么?请不要建议重写语法,这只是一个测试示例,我的实际情况要复杂得多。

最佳答案

这是一个快速演示:

grammar T;

@lexer::members {
private java.util.LinkedList<Token> tokens = new java.util.LinkedList<>();

@Override
public Token nextToken() {
return tokens.isEmpty() ? super.nextToken() : tokens.poll();
}
}

parse
: foo bar foo EOF
;

foo : FOO;
bar : BAR;

FOO : 'x';
BAR : 'y' {this.tokens.offer(new CommonToken(TLexer.FOO, "x"));};

SPACES : [ \t\r\n] -> skip;

测试:

TLexer lexer = new TLexer(CharStreams.fromString("x y"));
TParser parser = new TParser(new CommonTokenStream(lexer));

System.out.println(parser.parse().toStringTree(parser));

将打印:

(parse (foo x) (bar y) (foo x) <EOF>)

关于java - 如何在 ANTLR4 中发出 token ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64496755/

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