读书人

DSL之三 DSL兑现

发布时间: 2012-11-09 10:18:47 作者: rapoo

DSL之三 DSL实现

?

在解析为语义模型的过程中,一般隐含着一个概念——语法树(Syntax Tree)

DSL之三 DSL兑现

在内部DSL中,语法树的实现是以函数参数调用(嵌套函数 Nested Function)及嵌套对象(方法链)的形式。有时语言并没有强制的层次结构,那么就需要借助函数序列(Function Sequence)和上下文变量(Context Variables)来模拟层次结构。

语法(grammar)是用于描述文本流如何转换为语法树的规则集。

语法树和语义模型的不同之处在于:同样的语法树可能有不同的语义模型,反义亦然。

?

在解析生成语法树的过程中,解析器可能需要存储一些数据。为解决这个问题,引入了符号表(Symbol Table)

DSL之三 DSL兑现

本质上来讲,符号表是一个字典,键为标识符,值为语法树中对应的对象。

DSL的测试可以分为三部分,对语义模型的测试,对解析器的测试,以及对DSL脚本测试。

读书人网 >软件架构设计

热点推荐