【发布时间】:2018-08-20 16:32:59
【问题描述】:
我正在编写一个程序,它基本上将语法作为自定义格式(和一些其他规则)的输入,并生成一个 OCaml 程序(检查器),一旦编译,它就可以根据语法和规则。
我使用 OCaml 作为生成器,使用 Menhir 来解析语法和规则。现在,我必须为要生成检查器的所有语法手动编写解析器。我想像 Menhir 一样自动生成解析器的代码。
我可以输出一个 Menhir 语法并从我的 OCaml 程序中调用 Menhir,但是进行适当的错误处理会很乏味。
有没有办法使用 Menhir 作为后端(在运行时为其提供语法以生成解析器)或者是否有任何库可以在 OCaml(或 C,因为它可以与 OCaml 链接)中做到这一点?
如果可能的话,我也希望能够以语法描述的格式来表达规则,是否有任何库也可以在运行时生成解释器?
【问题讨论】:
-
你的问题有点笼统。您要完成的是元语法(描述语法的语法),但它仍然是语法。
-
你能利用
menhir --interpret吗? -
menhir --interpret 可能是最后一个问题的解决方案,如果我从用户给出的语法中以我的自定义格式输出 menhir 语法。