Java 从标记创建语法树

Java 从标记创建语法树,java,tokenize,abstract-syntax-tree,Java,Tokenize,Abstract Syntax Tree,我正在尝试为语法创建一个小型解释器 这是我试图解释的TI-BASIC的一个片段 A->(2+(3*3)) 我已将上面的代码标记为以下标记序列: Token{type=VARIABLE, content='A'} Token{type=ASSIGN, content='null'} Token{type=L_PAREN, content='null'} Token{type=NUM, content='2'} Token{type=ADD, content='null'} Token{ty

我正在尝试为语法创建一个小型解释器

这是我试图解释的TI-BASIC的一个片段

A->(2+(3*3))
我已将上面的代码标记为以下标记序列:

Token{type=VARIABLE, content='A'}
Token{type=ASSIGN, content='null'}
Token{type=L_PAREN, content='null'}
Token{type=NUM, content='2'}
Token{type=ADD, content='null'}
Token{type=L_PAREN, content='null'}
Token{type=NUM, content='3'}
Token{type=MULT, content='null'}
Token{type=NUM, content='3'}
Token{type=R_PAREN, content='null'}
Token{type=R_PAREN, content='null'}
Token{type=EOS, content='null'} (end of statement)
Token{type=EOF, content='null'} (end of file)
如果我没有弄错的话,我认为下一步是将这些标记表示为语句树(抽象语法树?)


我想知道我应该如何创建这棵树,或者这是否是正确的做法。谢谢

简单的答案是,您需要为TI Basic编写解析器。您已经编写了lexer(词法分析器),现在需要编写语法分析器


有很多方法可以做到这一点,但是关于解析器的Wikipedia页面是一个很好的开始:。

谢谢,我会看看这些:)@August如果这是答案,那么请将其标记为这样。他需要的不仅仅是解析器。他需要一个构建AST的解析器。您可以通过构建一个解析器,并将AST片段构建操作编织成附加到匹配规则的操作来实现这一点。请参阅YACC/Bison/JavaCC/Antlr以了解实现此目的的各种方法。。。。通过这一步后,必须有人建造AST施工机械。解析器生成器通常不会这样做(我们的DMS软件再工程工具包是第一个仅从语法自动构建AST的工具之一,ANTLR的人最近也在效仿,但据我所知,没有其他工具)。这意味着OP必须考虑他必须这么做。你声称(在这里,隐藏在评论中)这不是一个巨大的进步。但这一步需要非零能量和一些额外的教育,而不仅仅是“解析”。你的回答没有告诉他这一点。@IraBaxter同样,如果你想写你自己的答案,那就请写吧!如果您这样做,将来任何人都会从中受益。相关:
 Assignment (->)
    / \
   /   \
  A    Add
       /\
      /  \
     2  Multiply
           /\
          /  \
         3    3