我已经用C++构建了一个解释器,到目前为止一切正常,但是现在我陷入了import / include /无论您想调用它的函数的设计中。
我考虑了以下几点:
include
时,将使用指定的文件名递归调用 token 化函数。然后将include
d文件的标记化代码添加到include的先前位置。缺点:无条件include(!)
must
可以这样做,因为有条件的包含是可能的。 现在我的问题是:
最佳答案
如果您有一个干净的设计并且知道您在做什么,这个问题很容易解决。否则可能很难。我至少编写了6个都具有此功能的解释器,而且非常简单。
抽象语法树确实是关键。如果具有此功能,则在输入中遇到import / include构造时,您只需进行递归调用即可获得更多抽象语法。您可以在解析器或评估器中执行此操作。如果要条件导入,则必须在评估程序中进行,因为只有评估程序才能计算条件。
Source code for my interpreters在网络上。其中两个是用C语言编写的;其他的则用Standard ML编写。
关于c++ - 解释器:处理包含/导入,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2609145/