对于一个学校项目,我需要为用户界面(可能基于 XML)的标记语言实现一个解析器。根据输入,它生成一个带有各种 UI 组件(文本区域、输入、面板、对话框等)的 HTML 文档。
您对我可能使用的工具/库有什么建议吗?(在学校我们使用 Flex 和 Bison,但我们被允许使用现代工具——也许是具有 lex 和 yacc 功能的工具)
对于一个学校项目,我需要为用户界面(可能基于 XML)的标记语言实现一个解析器。根据输入,它生成一个带有各种 UI 组件(文本区域、输入、面板、对话框等)的 HTML 文档。
您对我可能使用的工具/库有什么建议吗?(在学校我们使用 Flex 和 Bison,但我们被允许使用现代工具——也许是具有 lex 和 yacc 功能的工具)
如果您的输入如建议的那样是 XML,而您的输出是 HTML,那么这就是 XSLT 的基本用例。XML的全部意义在于您不必编写自己的解析器,因此如果这是作为一项工作而不是作为一个学校项目来完成的,那将是第一个使用的技术。如果您不能将其表达为转换,那么您可能会寻找其他地方。
如果您不想使用 XML,那么用于纯文本语言的现代工具包括解析器表达式语法和 DSL 合成工具,例如Microsoft M。
PEG 使您不必单独进行 lex 和解析,因此标记可以是上下文敏感的,而不会使语法复杂化(因为许多标记在许多语言中),并且某些实现意味着您不必担心左/右递归循环。
DSL 合成工具将基于 IDE 的语法与运行时语义相结合。Martin Fowler在他的网站上有一本关于 DSL的书。
但是对于作为转换输入的 UI 定义语言,XML 或其他一些可以通过 SAX 接口充当 XSLT 处理器的输入的标准结构映射(JSON、YAML)将是我尝试的第一件事.