【发布时间】:2013-10-19 03:55:14
【问题描述】:
我有一个大型 c 代码文件 (>9000 LoC) 并尝试使用以下语法对其进行解析:
https://github.com/antlr/grammars-v4/blob/master/c/C.g4
我等了一个多小时才中止。该机器是具有 4GB 内存的 Core 2 Duo L9400。最大 java vm-heap-size 设置为 2GB。 它不会产生任何解析错误,但它根本没有完成。
在做了一些研究之后,我将预测模式设置为 SLL,这会产生一个 在几秒钟内“输入没有可行的替代方案”。
接下来,我将预测模式设置为 LL_EXACT_AMBIG_DETECTION 并将 DiagnosticErrorListener 附加到解析器。这会产生很多“歧义报告”,主要是 关于声明/声明说明符。我认为这会迫使解析器非常频繁地回溯,这可能是解析时间长的原因?
除了尝试重写语法之外,我还能做些什么来提高性能?
任何帮助表示赞赏;)
【问题讨论】:
标签: c performance parsing antlr antlr4