問題タブ [ocamllex]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ocaml - 架空のプログラミング言語の解析中にエラーが発生しました
私が作ったプログラミング言語の言語インタプリタに取り組んでいます。これは、動作するはずのコードの例ですが、Syntax error at offset 45.
このテストケースを読むと現在停止しています。
正しい解釈は、最初の行で foo を使用してマップを作成し、それを foo という名前の変数に格納し、2 行目でレコード foo のフィールド min の値を検索し、開始/終了のカーリーをセミコロンで囲みます。 2 つの式を 1 つのexpr_seq
(つまり、ブロック) に変換すると、その中の最後のものと同じものに評価されexpr
ます。
私の parser.mly の簡略版は次のとおりです。
自分でデバッグしようとすると、次の| v = VAR LBRACK f = q_var RBRACK ASSIGN e = exp
ものを削除すると解析されて正しく実行されることがわかりましたが、マップに設定できるようにしたいと思っています。
問題が mly ファイルにあることは 98% 確信していますが、単純化したバージョンの lexer.mll は次のようになります。
シンプルな ml ファイルは次のとおりです。
編集: ここに Makefile があります。parser.mly、lexer.mll、および interpreter.ml は、上記の 2 番目、3 番目、および 4 番目のファイルです。
ここで、test.in が上記の最初のものです。
編集2:| e = VAR LBRACK v = q_var RBRACK
{ GetMap(v,LookupVar(e)) }
パーサーに特別なケースとして追加するだけになりました。それで、問題は解決しましたか?
ocaml - Ocamlyacc で認識されないルールを定義する方法
私は会社のプロジェクトに取り組んでおり、Ocamlyacc と Ocamllex を使用して言語のコンパイラを作成する必要があります。Ocamlyacc パーサーで、入力の構文に一致する文法のルールがないことを示すルールを定義できるかどうかを知りたいです。
私は Ocamllex/Ocamlyacc の初心者であることを主張しなければなりません
大変お世話になりました。
ocaml - パーサーとレクサーを組み合わせたプログラムの作り方
Ocamllex/Ocamlyacc を使用してコンパイラを構築し、OcamlParser と OcamlLexer の両方を結合するメイン プログラムを作成したいと考えています。問題は、次のコードのようなコマンドラインでの入力を使用してそれを行う方法を知っているということです:
しかし、ファイルを入力として使用したい場合はどうすればよいですか。私はこのようなことを試しました:
しかし、実際には機能していません。
ocaml - OCaml Syntax Error in Parser
Can someone help me explain why I have a syntax error at this line: let wordMap = StringMap.empty
? This is contained in an .mll file. The module StringMap is defined above.
I know it prints nothing, this is just for testing.