【问题标题】:Syntax Directed Translation and Semantic Analysis语法导向翻译和语义分析
【发布时间】:2014-05-14 22:26:09
【问题描述】:

我很难理解 语法定向翻译 (SDT) 和 语义分析 之间的确切区别。

通过阅读龙之书,我知道 SDT 就像对 CFG 的扩展。您向 CFG 添加规则或操作,这些规则或操作可以在解析期间进行评估,并将创建一个抽象语法树。 (或具体的语法树,然后将其转换为 AST)

但是,我不明白这部分之后语义分析的目的是什么。因为在我看来,使用 SDT,您将进行语义分析。如果 SDT 实现了规则/动作,它不是也做一些类型检查吗?

谢谢。

【问题讨论】:

    标签: parsing compiler-construction compiler-theory


    【解决方案1】:

    语法定向翻译 (SDT) 意味着所有翻译过程都由您的语言的解析器驱动。很多时候,这是在没有构建代码的显式树的情况下完成的。解析器检测指令并几乎直接生成目标输出。

    另一方面,语义分析 (SA) 是一个独立的概念。这是编译器的主要阶段之一。它负责检测诸如未定义的变量/函数、超出范围的访问等。

    SDT 和 SA 可以关联。如果编译器使用 SDT,它必须调整 SA 阶段以在解析器级别进行这些验证。

    【讨论】:

    • 我觉得很奇怪,快速浏览一下龙书的内容,发现没有关于语义分析的单独部分。是不是很困难? (因此超出了本文的范围?)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多