我正在用 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似乎没有内置任何这样的东西,所以我想知道它是否可能。