我正在用Camlp4编写一个简单的解析器。复杂性开始变得难以推断出确切的解析序列。生成包含所使用的令牌和匹配规则的解析“跟踪”的最佳方法是什么。
E.g。以下解析器片段:
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的内容,所以我想知道它是否可能。
答案 0 :(得分:0)
普通函数调用存在Camlp4Tracer
,也许你可以从中汲取灵感并为camlp4语法本身编写一个Camlp4Filter ..如果你在这种努力中疯狂,我不应该承担责任%)