目前,我正在开发 DSL 的解释器(?)。但我很难找到如何准确地对其进行分类。我什至不确定你是否可以称其为口译员。
我尝试过搜索不同类型的口译员,但到目前为止我找到的口译员似乎并不能涵盖我所拥有的。
TLDR: 它本质上是通过使用预定义函子网络构造一个对象来工作的。当对象被调用时,它会遍历该网络来完成任何需要完成的工作。
工作原理:
部分示例:
Action:
Condition: *list of sub conditions*
Response: *list of sub actions*
在运行时,为每个文件创建一个新的行为对象
每个带有“:”的部分都是一个组件,每个组件都被实现为一个添加到其父组件的函子。或者行为本身(如果它是顶级组件)
示例:
Action: // adds a new action functor with its child components
Condition: 10 seconds elapsed // creates a time elapsed functor with 10 seconds bound to it
Response: set value 5 // creates a set functor with the value 5 bound to it (made up example)
这会导致每 10 秒将值设置为 5。
非常感谢。
我不太擅长解释自己,所以如果您有任何疑问,请询问。
它不是一个 解释器,它是声明语言的一个解析器。
A parser 反过来,采用一系列标记并生成摘要 语言的语法树(AST)。解析器运行的规则 通常由正式语法指定。 解释器是一个程序 动态解释程序源代码的 AST(无需 先编译)。