0

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

4

1 回答 1

0

普通函数调用是存在Camlp4Tracer的,也许你可以从中汲取灵感,为camlp4语法本身编写一个Camlp4Filter..如果你在那个努力中发疯,我不承担任何责任%)

于 2014-02-10T04:44:28.100 回答