我很难理解句法导向翻译(SDT)和语义分析之间的确切区别。
通过阅读“龙书”,我知道SDT就像CFG的延伸。将规则或操作添加到CFG中,这些规则或操作可以在解析期间进行评估,并将创建抽象语法树。(或者将被转换为AST的具体语法树)
然而,我不明白语义分析的目的是什么。因为在我看来,使用SDT,您将进行语义分析。如果SDT实现了规则/操作,那么SDT不是也在进行某种类型检查吗?
谢谢。
发布于 2014-04-04 23:47:05
语法导向翻译(SDT)意味着所有的翻译过程都是由语言的解析器驱动的。很多时候,这是在没有构建代码的显式树的情况下完成的。解析器检测指令并几乎直接生成目标输出。
另一方面,语义分析是一个独立的概念。这是编译器的主要阶段之一。它负责检测诸如未定义的变量/函数、超出作用域的访问等。
SDT与SA可能相关。如果编译器使用SDT,它必须调整SA阶段,以便在解析器级别进行这些验证。
https://stackoverflow.com/questions/22831757
复制相似问题