1

嗨,我有 3 个文件 nano.ml,它是类型,还有一个 paser 和 lexer 文件。我不知道如何为解析器编写规则,我尝试编写规则,但它给了我错误的说法,即不接受参数。
当我尝试编译时,它给了我这个

:File "nanoParse.mly", line 31: $1 refers to terminal `LET', which has no argument
Compiling (to byte code) OCAML module nanoLex.ml
ocamlc -dtypes -c nanoLex.ml -o nanoLex.cmo
File "nanoLex.mll", line 10, characters 32-37:
Error: The constructor LET expects 1 argument(s),
but is here applied to 0 argument(s)

并且程序假设做这样的事情:

4

1 回答 1

1

我怀疑你想要{Let($2, $3, $5)}而不是{Let($1, $2, $3)}. 但是,这是需要查看的大量代码。你可能想从一个小例子开始,然后从那里开始。

于 2013-02-15T04:07:05.657 回答