我的问题其实非常简单。我目前正在研究一种语言解析器,它可以解析嵌入式DSL的元语言。这对我来说非常有趣,因为它可能用HTML和嵌入式JavaScript / CSS解析网站。我想为一个特定的用例设计一些具有最小DSL的类似系统。
boost :: spirit是否能够做类似的事情?我只是不知道boost :: spirit如何处理词法分析器生成或者它是否是无扫描器解析器。
提前致谢!
答案 0 :(得分:5)
Spirit Qi可以与扫描仪(Spirit Lex)一起使用或不使用。
在我的拙见中,Spirit在使用无扫描仪时会发光。原因主要是当你避免复杂性时精神闪耀,并且使用精灵Lex就像灵气齐语法定义的复杂性乘数一样。
那就不用了,
那就是说,我强烈建议为此目的查看现成的解析器/标记器。我的立场通常概括为:使用Spirit进行快速开发和临时解析。
一旦你的语法变得足够复杂并且你知道语法是固定的/稳定的,我相信你可以用手写的解析器或者使用一些比较繁琐的解析器生成器(如ANTLR,CoCo / R,Flex /)来获得最佳结果野牛等,需要更多的设置成本。
¹旁注:我认为“DSLs”不适合HTML中的脚本。 “嵌入”性质仅与切向相关,例如, ECMAScript几乎不是“特定领域”,因此我将坚持使用“嵌入式语法”