C++ 使用下推自动化创建语法树?

C++ 使用下推自动化创建语法树?,c++,c,parsing,pushdown-automaton,C++,C,Parsing,Pushdown Automaton,如果我要创建一个下推自动化,它接受statename,这些状态接受transitionInput、pop、push、nextState。所有这些如何帮助我构建解析树 我的意思是,下推自动机非常适合于检查语言中是否有某种东西,比如一系列标记或任何东西的顺序是否正确。。。但是语法树呢 我的意思是考虑下面的例子: Foo { Woo { Hello World } } pda只能记住堆栈中的顶部项目和当前输入。我该如何建造这棵树?我应该将PDA与递归结合起来吗?从广义上讲,堆栈上的每个项目都

如果我要创建一个下推自动化,它接受statename,这些状态接受transitionInput、pop、push、nextState。所有这些如何帮助我构建解析树

我的意思是,下推自动机非常适合于检查语言中是否有某种东西,比如一系列标记或任何东西的顺序是否正确。。。但是语法树呢

我的意思是考虑下面的例子:

Foo {
 Woo {
  Hello World
 }
}

pda只能记住堆栈中的顶部项目和当前输入。我该如何建造这棵树?我应该将PDA与递归结合起来吗?

从广义上讲,堆栈上的每个项目都包含一个语法子树列表。推送新项目时,其列表开始为空。当您使用令牌时,将其添加到此列表中。弹出时,将获取顶部项目列表中的所有子树,将它们设置为新节点的子节点,并将此新子树添加到项目堆栈新顶部的列表中。最后,当您从堆栈中弹出最后一项时,您将得到一个子树,这将是整个语法树。

我理解。你能举个小例子吗。也许是一些图形或者一些让人更容易想象的东西?我会让它更容易消费。