是否存在未生成的LL(*)解析器

时间:2014-07-17 16:30:03

标签: parsing ll

我需要在运行时更改解析器的语法规则,并且我希望每次规则更改时都不要重新生成解析器。

是否存在不使用代码生成的解析器?

此致

2 个答案:

答案 0 :(得分:0)

你可以使用(意思是可能实现自己,不太可能是一个图书馆)Earley parser

你当然会为此付出高昂的代价。如果你的语法和解析的来源很小,这可能会很好。

否则你可能会重新考虑;为什么你不想重建解析器?大多数解析器生成器的运行速度远远超过人们编辑规则的速度。

答案 1 :(得分:0)

您可以使用PEG(手写或类似boost:spirit

PEG不是LL语法的严格超集,但通常更具表现力,因为它们具有各种额外的功能,例如有限的否定和后续的上下文测试。