嗨我有3个文件nano.ml,它是一个类型,还有一个paser和lexer文件。我不知道如何编写解析器的规则,我尝试编写规则,但它给了我erro说不接受参数。
当我尝试编译它给我这个
: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)
并且程序假设做这样的事情:
答案 0 :(得分:1)
我怀疑你想要{Let($2, $3, $5)}
而不是{Let($1, $2, $3)}
。但是,这需要查看很多代码。你可能想从一个小例子开始,然后从那里开始工作。