我正在使用 Flask 开发一个小型 Web 应用程序。这个应用程序需要一个 DSL,它可以表达 .pdf 文件的内容。
我已经使用 JetBrains MPS 开发了一个 DSL,但现在我不确定如何在我的 Web 应用程序中使用它。可能吗?或者我应该考虑切换到另一个 DSL 或直接在 Python 中制作我的 DSL。
我正在使用 Flask 开发一个小型 Web 应用程序。这个应用程序需要一个 DSL,它可以表达 .pdf 文件的内容。
我已经使用 JetBrains MPS 开发了一个 DSL,但现在我不确定如何在我的 Web 应用程序中使用它。可能吗?或者我应该考虑切换到另一个 DSL 或直接在 Python 中制作我的 DSL。
如果您想在 Web 前端使用 MPS,简单的答案是:不。
由于 MPS 是一个投影编辑器,它需要一个投影引擎,以便用户可以与程序/模型进行交互。MPS 的投影引擎是用 Java 构建的,用于桌面应用程序。已经有一些努力将 MPS 放到 Web 上并构建 Java Script/HTML 投影引擎,但没有一个工作是完整的。因此,除非您要构建类似的东西,否则无法在前端使用 MPS。
如果您的 DSL 无论如何都是文本的,并且没有利用 MPS 的投影特性,我会使用专门的工具来沿着文本 DSL 之路走下去,例如您建议的 python 或 Xtext。
如果您决定在 python 路线中使用 DSL,我想我会提出建议。
TextX是一个很好的 DSL 创建库,支持 BNF 语法并使用 PEG 解析器。