第7章 外部DSL的实现载体
本章内容
- 外部DSL的处理流程
- 语法分析器的分类
- 用ANTLR开发一种外部DSL
- Eclipse Modeling Framework与Xtext
外部DSL跟内部DSL一样,都是在已有的领域模型外面覆盖一层抽象,差别在于怎样实现这层抽象。外部DSL会自行建立一套语言处理设施,包括语法分析器、词法分析器和处理逻辑。
我们的讨论将从外部DSL处理设施的整体架构开始。内部DSL可以借用宿主语言的基础设施,而外部DSL需要从头开始构建它们。第一步我们打算手工编写一个语法分析器,然后使用ANTLR语法分析器生成器开发你的第一个自定义外部DSL。本章的最后一节会介绍另一种外部DSL开发范式——在外部DSL开发环境Xtext的支持下,基于Eclipse Modeling Framework(EMF)的模型驱动方式。图7-1是本章讨论进程的路线图。
图7-1 本章路线图
本章将学习利用能从市面上获得的工具开发一套语言处理基础设施。有了这些基础设施,就可以用它开发自定义DSL语言处理程序。