首先,语义规则和抽象语法树规则是否相同?
现在,如果我有一个语言规范,我有CFG,那么我如何开始构建抽象语法树规则。任何来源都是值得感谢的。谢谢。
发布于 2012-03-06 09:20:31
“抽象语法树”规则(这是奇怪的术语)可能被解释为那些在解析进行时塑造抽象语法结构的规则。这些通常写在非终结符T的语法规则中,作为通过解析T的辅助短语而产生的抽象语法树上的构造器。如果
T = '(' A ';' B ')' ;是语法规则,则T的AST构造函数可能是
T(A,B)这意味着T节点的构造,其子节点是为A和B子语法分析构造的AST。
语义规则是程序必须满足的约束才是合法的,而不仅仅是语法。因此,我们可以构造一个抽象的语法树(从“规则”);这样做只是证明程序在语法上是正确的。但是抽象语法可以表达在语义上简单无意义的东西,例如,
"declare s as function; ... s=7; ..."通常检查这一点的唯一方法是遍历抽象语法树,在本地收集事实(例如,"s是一个函数“是从declare语句中提取的事实;"s被赋值为一个整数”是从赋值中收集的),并传播这些事实,直到它们相遇并被证明是( in )兼容的。
发布于 2012-03-06 05:09:10
为了回答您的第二个问题,这里有一篇文章,将语法和语法树的概念联系在一起,并研究了一些解析算法。
http://www.cs.purdue.edu/homes/xyzhang/spring11/notes/ast.pdf
摘自文章:
The resulting grammar is called the concrete grammar.
The corresponding derivation tree is called the parse tree.具体语法树或解析树是根据某种形式语法表示字符串的语法结构的树。
下面是一个从语法派生解析树示例的链接:
http://www.cs.rochester.edu/~nelson/courses/csc_173/grammars/parsetrees.html
这也突出了处理歧义语法的问题。
https://stackoverflow.com/questions/9573879
复制相似问题