应用介绍
做过 DSL 的人都知道最难受的是哪一步:语法想好了,词法分析器和解析器还得从头写一遍,改个语法规则又要把 parser 推倒重来。JetBrains MPS 干脆把解析这件事整个取消了——它用投影式编辑,你在编辑器里改的直接就是抽象语法树,屏幕上显示的只是这棵树的一种呈现方式,所以根本不需要 parser。
取消解析之后,语言能长什么样就不再受文本限制。一个决策表可以真的画成表格嵌在方法体里,公式可以按数学写法带分式和求和符号,状态机可以是图。领域专家看得懂的记号可以直接变成语言本身的一部分,不用先翻译成一堆花括号。
投影式编辑器:光标移动、补全、重构都作用在 AST 节点上,不存在括号不配对、缩进写错这种问题,语法上非法的代码压根输入不进去。
表格、图形和数学记号:语言的具体表现形式可以是表格、树、图或者数学排版,不局限于一行行文本,把条件矩阵和费率表写成真正的表格。
代码生成器:内置生成器把 DSL 编译成 Java、C、XML 这些目标语言,写完的模型直接落到能跑的产物上,不用自己维护一套模板引擎。
语言可以互相扩展:新语言能建立在已有语言之上,往 Java 里加一套自己的语句,或者把几种 DSL 混在同一个文件里用。
整套 IDE 都是现成的:基于 IntelliJ 平台,你定义的语言自动获得高亮、补全、查找用法、重构、调试器和断点,连版本控制(Git、Subversion)都是配好的。
示例工程随装随看:安装包自带一批完整的示例语言,从最小的表达式语言到语音菜单、决策表,照着改比从空白开始快得多。
取消解析之后,语言能长什么样就不再受文本限制。一个决策表可以真的画成表格嵌在方法体里,公式可以按数学写法带分式和求和符号,状态机可以是图。领域专家看得懂的记号可以直接变成语言本身的一部分,不用先翻译成一堆花括号。
软件功能
投影式编辑器:光标移动、补全、重构都作用在 AST 节点上,不存在括号不配对、缩进写错这种问题,语法上非法的代码压根输入不进去。
表格、图形和数学记号:语言的具体表现形式可以是表格、树、图或者数学排版,不局限于一行行文本,把条件矩阵和费率表写成真正的表格。
代码生成器:内置生成器把 DSL 编译成 Java、C、XML 这些目标语言,写完的模型直接落到能跑的产物上,不用自己维护一套模板引擎。
语言可以互相扩展:新语言能建立在已有语言之上,往 Java 里加一套自己的语句,或者把几种 DSL 混在同一个文件里用。
整套 IDE 都是现成的:基于 IntelliJ 平台,你定义的语言自动获得高亮、补全、查找用法、重构、调试器和断点,连版本控制(Git、Subversion)都是配好的。
示例工程随装随看:安装包自带一批完整的示例语言,从最小的表达式语言到语音菜单、决策表,照着改比从空白开始快得多。


