序幕:尽管解析器(上下文无关语法)识别的语言集严格大于扫描器(常规语法)识别的语言集,但大多数解析器生成器都需要扫描器。
(请不要试图解释其背后的原因,我很了解它们)。
我见过解析器,不需要像这样的扫描仪
-
Elkhound http://scottmcpeak.com/elkhound/(可选,富田/GLR)
-
DParser http://dparser.sourceforge.net/(富田/GLR)
-
SDLR http://www.program-transformation.org/Sdf/SGLR(富田/GLR)
不使用扫描仪有一些优点:
- 只有一个概念(上下文无关语法)而不是两个
- 在一个文件中解析多种语言(例如 HTML/Javascript)
- 解析没有保留关键字的语言(例如PL/1 http://en.wikipedia.org/wiki/PL/1#cite_ref-35)
通常,会使用“解决方法”,例如根据解析器的请求切换扫描器。
问题:您知道任何其他无扫描器解析器生成器(任何语言)吗?这些是否实用(或纯粹学术)?除了 Tomita/GLR 之外还有其他方法吗?
Answers:
-
提升::精神::气 http://www.boost.org/doc/libs/1_42_0/libs/spirit/doc/html/spirit/qi.html by AraK https://stackoverflow.com/questions/2224373/scannerless-parser-generators#2224497
- 解析表达式语法 (LPEG http://www.inf.puc-rio.br/~roberto/lpeg/lpeg.html对于 Lua)诺曼拉姆齐 https://stackoverflow.com/questions/2224373/scannerless-parser-generators#answer-2259075
-
Yakker http://portal.acm.org/citation.cfm?id=1707801.1706347 by 诺曼拉姆齐 https://stackoverflow.com/questions/2224373/scannerless-parser-generators#answer-2259075
-
MBase http://www.meta-alternative.net/mbase.html by SK-logic https://stackoverflow.com/questions/2224373/scannerless-parser-generators#2468670
-
Waxeye http://waxeye.org/ by 特雷弗·罗宾逊 https://stackoverflow.com/questions/2224373/scannerless-parser-generators#7542186
另外两个:
事实上,我是无扫描器解析器的忠实粉丝;它们极大地简化了配置。温和地说,典型的扫描仪生成器使用起来并没有多大乐趣。来自 Lex 的手册页:
杀死这只恐龙的小行星仍在轨道上。 http://dinosaur.compilertools.net/
最后,我对 Elkhound 没有个人经验,但我听到的二手报告令人印象深刻。我想说毫无疑问,但是some无扫描器解析器生成器非常实用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)