【问题标题】:Tools to build a UI markup language parser构建 UI 标记语言解析器的工具
【发布时间】:2023-04-07 20:26:02
【问题描述】:
对于一个学校项目,我需要为用户界面(可能基于 XML)的标记语言实现一个解析器。根据输入,它会生成一个带有各种 UI 组件(文本区域、输入、面板、对话框等)的 HTML 文档
您对我可能使用的工具/库有什么建议吗?
(在学校我们使用 Flex 和 Bison,但我们可以使用现代工具——也许是具有 lex 和 yacc 功能的工具)
【问题讨论】:
标签:
parsing
user-interface
yacc
markup
lex
【解决方案1】:
如果您的输入如建议的那样是 XML,而您的输出是 HTML,那么这就是 XSLT 的基本用例。 XML 的全部意义在于您不必编写自己的解析器,因此如果这是作为一项工作而不是作为一个学校项目来完成,那将是第一个使用的技术.如果您不能将其表达为转换,那么您可能会寻找其他地方。
如果您不想使用 XML,那么用于纯文本语言的现代工具包括 parser expression grammars 和 DSL 合成工具,例如 Microsoft M。
PEG 使您不必分别进行 lex 和解析,因此标记可以是上下文敏感的,而不会使语法复杂化(因为许多标记都使用多种语言),并且某些实现意味着您不必担心左/右递归循环。
DSL 合成工具将基于 IDE 的语法与运行时语义相结合。 Martin Fowler 有一个book on DSLs on his site。
但是对于作为转换输入的 UI 定义语言,XML 或其他一些可以通过 SAX 接口充当 XSLT 处理器输入的结构标准映射(JSON、YAML)将是第一件事我会尝试。