2

私はOCamlを書き始めていますが、構文エラーを見つけるのは非常に難しいと思います。私は JavaScript から来ましたUnexpected token ***。しかし、ここで得られるのはSyntax error...

より明確なメッセージを取得する方法はありますか?

ご回答ありがとうございます。

4

3 に答える 3

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

教材にプロセッサを使用する必要があることが記載されていない場合、それは古くなっています。これは、たとえば「Developping Applications with Objective Caml」という書籍の数少ない問題の 1 つです。それ以外の場合は、読むことをお勧めする素晴らしいリソースです。

PS: 次回は、すぐにソース コードを投稿してください。

于 2012-12-21T14:50:03.920 に答える
3

を試してくださいcamlp4o source.ml。入力の各ポイントで何を期待するかを伝えることができる別のパーサーでコードを解析します。

于 2012-12-21T12:59:39.480 に答える
1

エラーメッセージ全体をコピーペーストできますか? ファイル名、行番号、列番号など、非常に正確な場所が含まれている可能性があります。そして、修正はその場で行う必要があります。

場合によっては、この位置がブロックの終わりであり、ブロック内で修正を行う必要があります。

また、コードを最小限の例にまとめることができれば、助けやすくなります。

于 2012-12-21T13:40:18.023 に答える