为了账号安全,请及时绑定邮箱和手机立即绑定

将令牌类型整数映射到 ANTLR4 中的字符串

将令牌类型整数映射到 ANTLR4 中的字符串

jeck猫 2021-08-13 15:48:55
我是 ANTLR4 的新手。我正在尝试处理一种名为 Mo 的玩具语言并打印标记文本及其类型。以下是我的 Mo.java 文件:import org.antlr.v4.runtime.*;import org.antlr.v4.runtime.tree.*;import static org.antlr.v4.runtime.CharStreams.fromFileName;public class Mo {  public static void main (String [] args) {    CharStream cs = null;    try {        cs = fromFileName(args[0]);  //load the file    } catch (Exception e) {            System.err.println("No input file: " + e.getMessage());            return;    }         MoLexer lexer = new MoLexer(cs);  //instantiate a lexer        CommonTokenStream tokens = new CommonTokenStream(lexer); //scan stream for tokens        MoParser parser = new MoParser(tokens);  //parse the tokens        ParseTree tree = parser.molang(); // parse the content and get the tree        MoWalker listener = new MoWalker();        ParseTreeWalker walker = new ParseTreeWalker();        walker.walk(listener,tree);  }}这是我的 MoWalker.java 文件:public class MoWalker extends MoBaseListener {public void enterMicrolang(MoParser.MolangContext ctx ) {    for (int i = 0; i<ctx.children.size()-1; i++){        Token representedToken = ((TerminalNodeImpl) ctx.getChild(i)).getSymbol();        System.out.print("Token: "+representedToken.getText());        int typee = representedToken.getType();        System.out.println(" --- "+typee);    }}public void exitMicrolang(MicroParser.MicrolangContext ctx ) {        System.out.println( "Exiting R" );  }}我的问题:我想打印其名称,而不是将令牌类型打印为整数。(即如果类型是INTLITERAL(==4) 而不是打印4 我想打印INTLITERAL)我所以这篇文章,但它使用词汇类。有没有其他方法,比如类似的东西 getSymbolType(int type) ?
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 197 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信