【问题标题】:How to handle multiple source files during semantic analysis?语义分析时如何处理多个源文件?
【发布时间】:2013-12-22 04:27:16
【问题描述】:

我正在尝试使用手工编译器实现外部 DSL。我已经完成了词法分析和解析,但是目前我在从单独的文件(即继承)中解析符号方面迷路了。

我已尝试搜索此内容,但没有发现与编译器级别的处理有关。然而,我偶然发现了目标文件、链接器和加载器,但在进一步的研究中,它们似乎是在编译之后而不是在编译期间发挥作用的。

感谢任何可以提供帮助的人。

【问题讨论】:

    标签: java scala compiler-construction


    【解决方案1】:

    这在很大程度上取决于您的语言的性质。

    • 如果你是 C 类,你有定义共享符号的头文件,并且你在每个使用它的地方都包含头文件(重新编译头文件作为该文件的一部分)。
    • 如果您是类 Java 用户,则可以使用标准命名约定和包/目录层次结构来定位符号。
    • 如果你是 Javascript 类的,你不会在编译时解析任何符号;如果在使用符号时未定义符号,则只会抛出错误。 (对于小型脚本语言,这通常是最简单的答案)

    如果 DSL 中的代码总量很小,第三种选择就是加载并解析所有代码,然后一次性对整个代码进行符号解析传递。

    【讨论】:

    • 在 Java 中,如果一个类被称为 MyClass 并且它在 package com.me.mypackage 中,那么 Java 会查找文件 [root]/com/me/mypackage/MyClass.class
    • 感谢您的澄清。
    猜你喜欢
    • 2014-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多