使用2D数组实现解析树

时间:2015-02-16 14:58:05

标签: c++ arrays parsing tree abstract-syntax-tree

我为自己的自定义语言编写了一个简单的解释器,而且我现在尝试实现一个解析树。我正在使用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"

解析器从上到下解析左右。

这是表示解析树的有效方法吗?我想到了因为从一个节点移动到另一个节点只需要你改变数组索引。

0 个答案:

没有答案