0

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

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

问候,

4

2 回答 2

0

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

您当然会为此付出间接费用。如果您的语法和它解析的源很小,这可能没问题。

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

于 2014-07-17T16:51:02.300 回答
0

您可以使用PEG(手写或类似boost:spirit的东西)

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

于 2014-07-17T17:03:47.220 回答