我正在用Camlp4编写一个简单的解析器。复杂性开始达到这样的程度,我在推理准确的解析序列时遇到了困难。生成解析“跟踪”的最佳方式是什么,该“跟踪”包括使用的令牌和匹配的规则。
例如,下面的解析器片段:
let parse_func_call = parser
| [< 'Token.Ident id; 'Token.LParen; 'Token.Ident id; 'Token.RParen >] -> ...可能会输出一个跟踪片段,如:
CONSUMED Ident
MATCHED parse_func_call
CONSUMED LParen
CONSUMED Ident
CONSUMED RParen看起来Camlp4中并没有内置这样的东西,所以我想知道这是否可能。
发布于 2014-02-10 12:44:28
存在用于普通函数调用的Camlp4Tracer,也许您可以从中获得一些启发,并为camlp4语法本身编写一个Camlp4Filter。如果你在这一过程中精神错乱,我不承担责任。%)
https://stackoverflow.com/questions/21612448
复制相似问题