一、编译原理中的短语、直接短语、句柄?
如果给出短语等名词的形式化的定义,便较难理解,不好求。
我们通过构造语法树来求解。
首先你应该会根据文法将所给句型构造成语法树的形式,即根据文法怎样推导出句型E+T*F。
如果你有数据结构二叉树基础的话这很简单就构造出来了。
构造出语法树后,求短语看根节点,有T,和E。
则短语为:E+T*F,T*F,而直接短语是指能直接推出叶子节点的根所对应的短语,可知该节点为T,直接短语为:T*F。
句柄是最左直接短语,可知为:T*F。
二、英语语法树木本身的东西用介词in,其他东西在树上用介词on吗?
你说反了,应该是:树木本身的东西用介词on,其他东西在树上用介词in.如: There is a monkey in the tree.There are many apples on the tree.
三、编译原理语法树是唯一的吗?
在计算机科学中,抽象语法树( syntax tree或者缩写为AST),或者语法树(syntax tree),是源代码的抽象语法结构的树状表现形式,这里特指编程语言的源代码。树上的每个节点都表示源代码中的一种结构。之所以说语法是“抽象”的,是因为这里的语法并不会表示出真实语法中出现的每个细节。
比如,嵌套括号被隐含在树的结构中,并没有以节点的形式呈现;而类似于if-condition-then这样的条件跳转语句,可以使用带有两个分支的节点来表示。
和抽象语法树相对的是具体语法树(concrete syntaxtree),通常称作分析树(parse tree)。一般的,在源代码的翻译和编译过程中,语法分析器创建出分析树。
一旦AST被创建出来,在后续的处理过程中,比如语义分析阶段,会添加一些信息。