据我所知,DSL 编辑器使用两种方法:
1-开发文本 DSL 的基于解析器的方法:用户指定语法,工作台生成识别该语法的解析器。解析器构建一个抽象语法树,供代码生成器等使用。
2-投影方法:这里没有解析器。抽象语法树由用户的手势直接编辑,投影规则指定抽象语法树的呈现方式。这允许同时使用不同的符号(文本、图形、表格...)。
现在,当我查看仅图形化的 DSL 工作台(例如 Microsoft 的 DSL 工具)时,我想知道它们使用什么方法以及定义 DSL 背后涉及的步骤是什么。如果它是投影方法,那么为什么它仅限于图形符号?
我的想法是它同时使用两者。使符号图形化的投影方法,但模型以特定格式(例如 XML)保存并解析。
谢谢你。