且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

《领域特定语言》一1.7 可视化

更新时间:2022-09-30 09:05:55

1.7 可视化

语言工作台的一大优势在于它们给了DSL更为多样的表现形式,特别是图形化表示。然而,即便是文本化的DSL也可以有图形化的表示。确实,我们在本章中非常早就看到这些内容。当查看图1-1时,你也许已经注意到了,这个图并不像我以往所画的那些图那样整洁。原因在于,这并不是我画的图,而是我根据格兰特小姐控制器的“语义模型”(第11章)自动生成的。状态机类不仅可以执行,还可以用DOT语言对自身进行渲染。
DOT语言是Graphviz包的一部分,它是一个开源工具,可以用它描述数学里的图结构(节点和边),然后自动画出来。只要告诉它,什么是节点,什么是边,用什么样的形状,以及其他一些提示,它就会算出如何对这个图进行布局。
对许多DSL来说,使用类似于Graphviz这样的工具非常有用,因为它给了我们另一种表现形式。类似于DSL本身,这种可视化(visualization)表现形式可以让人更好地理解模型。可视化不同于对应的源码,其本身无法编辑─但是,另一方面,它可以完成可编辑形式无法完成的操作,比如渲染出那样的图。
可视化并不一定要图形化。当编写解析器时,我时常用简单的文本可视化帮我调试。我见过有人用Excel生成可视化的东西,帮助他们与领域专家交流。重点在于,一旦经过辛勤工作创建出语义模型,添加可视化真的就很容易。注意,可视化是根据模型产生的,而非DSL,因此,即便不用DSL组装模型,依旧可以这么做。