我开始写一些OCaml,但我发现很难找到Syntax错误。我来自JavaScript,它会告诉我Unexpected token ***
。但在这里,我得到的只是Syntax error
......
有没有办法获得更明确的信息?
提前感谢您的回答。
答案 0 :(得分:3)
尝试camlp4o source.ml
,它将使用不同的解析器解析代码,该解析器能够告诉每个输入点的预期结果。
答案 1 :(得分:3)
我在回复ygrek的回复中看到你的代码是http://pastebin.com/6c0sKFeh。
此代码使用语法扩展来支持流解析器,这是一种几年前从核心语言中删除的语法糖。要按原样编译它,您应该将预处理器调用命令添加到编译行。而不是:
ocamlc -o foo ... foo.ml
使用
ocamlc -pp camlp4o -o foo ... foo.ml
camlp4o
“只返回源代码”的原因是它正确解析了它,现在打印出后处理源。您还可以将此源存储在文件camlp4o foo.ml -o foo2.ml
中,然后直接编译:{{1}}。
如果您的教材没有通知您应该使用处理器,那么它已经过时了。这是“使用Objective Caml开发应用程序”一书中的少数几个问题之一 - 这是我推荐阅读的一个很好的资源。
PS:下次,请立即发布您的源代码。
答案 2 :(得分:1)
您可以复制粘贴整个错误消息吗?它很可能包含一个非常精确的位置:文件名,行号,列号。并且需要在那里进行修正。
有时这个位置是一个块的结束,需要在块内进行修正。
此外,如果您可以将代码简化为最小的示例,则可以更轻松地提供帮助。