对于学校项目,我需要为用户界面实现(可能是基于XML的)标记语言的解析器。根据输入,它生成一个HTML文档,其中包含各种UI组件(textareas,输入,面板,对话框等)。
您对我可能使用的工具/库有什么建议吗? (在学校我们使用Flex和Bison,但我们允许使用现代工具 - 也许是一种具有lex和yacc功能的工具)
答案 0 :(得分:2)
如果你的输入是建议的,XML和你的输出是HTML,那么这就是XSLT的基本用例。 XML的整点是你不必编写自己的解析器,所以如果这是作为工作的工作而不是作为学校项目,这将是第一个使用的技术。如果您无法将其表达为转型,那么您可能会在其他地方寻找。
如果您不想使用XML,那么纯文本语言的现代工具包括parser expression grammars和DSL综合工具,例如Microsoft M。
PEG使您无需单独执行lex和parse,因此令牌可以是上下文敏感的而不会使语法复杂化(因为许多令牌都是多种语言),而某些实现意味着您不必担心左/右递归循环。
DSL综合工具将基于IDE的语法与运行时语义相结合。 Martin Fowler有一个book on DSLs on his site。
但是对于作为转换输入的UI定义语言,XML或其他一些标准的结构映射(JSON,YAML)可以作为通过SAX接口输入XSLT处理器的第一件事我会尝试。