2

我开始写一些 OCaml,但我发现很难找到语法错​​误。我来自 JavaScript,它会告诉我Unexpected token ***。但在这里,我得到的只是Syntax error......

有什么方法可以得到更明确的信息吗?

预先感谢您的回答。

4

3 回答 3

3

尝试一下camlp4o source.ml,它将使用不同的解析器解析代码,该解析器能够告诉它在每个输入点的期望。

于 2012-12-21T12:59:39.480 回答
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中,然后直接编译:ocamlc ... foo2.ml.

如果您的教材没有告诉您应该使用处理器,那么它已经过时了。例如,这是“使用 Objective Caml 开发应用程序”一书的少数问题之一——否则,这是我推荐阅读的一个很好的资源。

PS:下一次,请立即发布您的源代码。

于 2012-12-21T14:50:03.920 回答
1

你能复制粘贴整个错误信息吗?它很可能包含一个非常精确的位置:文件名、行号、列号。并且需要在那里进行更正。

有时这个位置是块的末端,需要在块内部进行修正。

此外,如果您可以将代码简化为一个最小的示例,那么它会更容易提供帮助。

于 2012-12-21T13:40:18.023 回答