【发布时间】:2016-07-12 03:42:19
【问题描述】:
我们正在用 OCaml 为我们自己的领域特定语言编写编译器。到目前为止,我们已经有了可用的扫描仪、解析器和 ast。
此时测试扫描仪/解析器的最佳方法是什么?我知道可以将一系列令牌传递给解析器/扫描器,看看它是否被扫描器/解析器接受/拒绝。 (例如,echo "FLOAT ID" | menhir --interpret --interpret-show-cst parser.mly)。
但是,有没有办法将用我们自己的语言编写的实际程序传递给扫描器/解析器并查看它是否被接受?
我必须补充一点,我对 OCaml 很陌生,而且我对编译器知之甚少。
【问题讨论】:
-
你不能使用 Lexing.from_channel 或 Lexing.from_string 吗? val from_string : string -> lexbuf 创建一个从给定字符串读取的词法分析器缓冲区。读取从字符串中的第一个字符开始。当到达字符串的结尾时,会生成一个输入结束条件。
-
你能举个例子吗?