如何对这款口译员进行分类

问题描述 投票:0回答:1

目前,我正在开发 DSL 的解释器(?)。但我很难找到如何准确地对其进行分类。我什至不确定你是否可以称其为口译员。

我尝试过搜索不同类型的口译员,但到目前为止我找到的口译员似乎并不能涵盖我所拥有的。

TLDR: 它本质上是通过使用预定义函子网络构造一个对象来工作的。当对象被调用时,它会遍历该网络来完成任何需要完成的工作。

工作原理:

  • 每个文件都以类似 YAML 的语法描述一种行为(本质上,当满足此条件时执行此操作)

部分示例:

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。

  • 每个行为都被保存在一个更高的对象中,并从那里定期调用

非常感谢。

我不太擅长解释自己,所以如果您有任何疑问,请询问。

interpreter dsl
1个回答
0
投票

它不是一个 解释器,它是声明语言的一个解析器

A parser 反过来,采用一系列标记并生成摘要 语言的语法树(AST)。解析器运行的规则 通常由正式语法指定。 解释器是一个程序 动态解释程序源代码的 AST(无需 先编译)。

© www.soinside.com 2019 - 2024. All rights reserved.