我正在尝试为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
我想知道如何创建这棵树,或者甚至是正确的事情。谢谢!
答案 0 :(得分:0)
简单的答案是您需要为TI-Basic编写解析器。您已经编写了词法分析器(词法分析器),现在需要编写语法分析器。
有很多方法可以做到这一点,但解析器上的维基百科页面是一个很好的起点:examples of parsers。