我为自己的自定义语言编写了一个简单的解释器,而且我现在尝试实现一个解析树。我正在使用C ++。
我想过使用2D数组为我提供一个网格状结构,我可以轻松地在解析树上导航节点,这就是我的意思:
如果我想解析这段代码:
if 1 <= 10 {
print "Hello"
} else {
print "World"
}
这是我的解析树的2D数组:
------------ Parse Grid ------------
root | | | | |
if | | | body | else |
<= | 1 | 10 | print | print |
| | | "Hello"| "World"|
这里更容易表示我的解析树:
------------ Parse Tree ------------
root
/ | \
if body else
/ | \
<= print print
/ | \
1 10 "Hello" "World"
解析器从上到下解析左右。
这是表示解析树的有效方法吗?我想到了因为从一个节点移动到另一个节点只需要你改变数组索引。