首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >语义规则/抽象语法树规则

语义规则/抽象语法树规则
EN

Stack Overflow用户
提问于 2012-03-06 04:58:22
回答 2查看 1.3K关注 0票数 5

首先,语义规则和抽象语法树规则是否相同?

现在,如果我有一个语言规范,我有CFG,那么我如何开始构建抽象语法树规则。任何来源都是值得感谢的。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-06 09:20:31

“抽象语法树”规则(这是奇怪的术语)可能被解释为那些在解析进行时塑造抽象语法结构的规则。这些通常写在非终结符T的语法规则中,作为通过解析T的辅助短语而产生的抽象语法树上的构造器。如果

代码语言:javascript
复制
 T = '(' A ';' B ')' ;

是语法规则,则T的AST构造函数可能是

代码语言:javascript
复制
   T(A,B)

这意味着T节点的构造,其子节点是为A和B子语法分析构造的AST。

语义规则是程序必须满足的约束才是合法的,而不仅仅是语法。因此,我们可以构造一个抽象的语法树(从“规则”);这样做只是证明程序在语法上是正确的。但是抽象语法可以表达在语义上简单无意义的东西,例如,

代码语言:javascript
复制
  "declare s as function; ...  s=7; ..."

通常检查这一点的唯一方法是遍历抽象语法树,在本地收集事实(例如,"s是一个函数“是从declare语句中提取的事实;"s被赋值为一个整数”是从赋值中收集的),并传播这些事实,直到它们相遇并被证明是( in )兼容的。

票数 5
EN

Stack Overflow用户

发布于 2012-03-06 05:09:10

为了回答您的第二个问题,这里有一篇文章,将语法和语法树的概念联系在一起,并研究了一些解析算法。

http://www.cs.purdue.edu/homes/xyzhang/spring11/notes/ast.pdf

摘自文章:

代码语言:javascript
复制
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

这也突出了处理歧义语法的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9573879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档