从标记创建语法树

时间:2014-07-09 19:06:53

标签: java tokenize abstract-syntax-tree

我正在尝试为TI-BASIC语法创建一个小解释器。

这是我试图解释的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)

如果我没有弄错的话,我认为下一步是将这些令牌表示为语句树(抽象语法树?)

 Assignment (->)
    / \
   /   \
  A    Add
       /\
      /  \
     2  Multiply
           /\
          /  \
         3    3

我想知道如何创建这棵树,或者甚至是正确的事情。谢谢!

1 个答案:

答案 0 :(得分:0)

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

有很多方法可以做到这一点,但解析器上的维基百科页面是一个很好的起点:examples of parsers