問題タブ [ocamlyacc]
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 - OCamllex: 正規表現
現在、私は Ocaml でインタプリタを書こうとしていますが、これは私の lexer.mll です:
なぜ ocamllex が { FILE_NAME lxm } 行でエラーを表示するのか、私は本当に混乱しています。レクサーの先頭に置く#load "str.cma"と、その行にエラー構文エラーが出力されます。
なんで?私はかなり混乱しています...
編集
する必要があります[ [^\\]*\.(\w+)$ ] as lxm { FILE_NAME lxm }
しかし、問題はまだ解決されていません...
ocaml - OCaml Interpreter: インタープリターがファイル内の 1 行しか実行しない理由
パーサーとレクサーをコンパイルするために、ocamlyacc と ocamllex を使用してインタープリターを作成しています。
私の問題は、ファイル calles テストがあり、lexer で定義されている 2 つのコマンドが含まれていることです。
しかし、インタープリターは行print aのみを実行します! 問題は主にパーサーにあり、再帰する必要があることはわかっています。このように修正しました(以下のコード)が、それでも機能しません。
編集
これは私のレクサーです。エラーを見つけるために、できるだけ単純化しようとしました。
Main.ml
ocaml - より大きなレキシコンのために ocamllex を展開します
より多くのキーワードで ocammlex を動作させる方法はありますか? 私はドイツ語用のインタープリターとパーサーを作成しました。これは、言語分析のためにドイツ語のテキストをラテックス画像に「コンパイル」します。それは本当にうまく機能し、言語学の世界では本当に新しいものです。ocamllex や menhir などのツールをそのような目的で悪用できることを、ocaml のすべての開発者に感謝します。しかし、すぐに辞書のサイズによる ocammlex-automaton の限界に到達します。
私はハッシュテーブルの解決策を知っています。それが今後の問題を解決するかどうかはまだ試していませんが、ocamllex-source-codeの制限整数などのタイプを簡単に変更できる場合、プログラムコードを変更せずに誤用できることを誰かが知っていますか? ? 私の意見では、自動化のサイズに関するこのエラーは不必要にばかげており、さらに悪用するには扱いにくいので、質問したいと思います。
ありがとう、良い一日を。
ocaml - OCaml パーサーの $1 と $3 は何を示していますか?
OCaml パーサーのサンプル コードは次のとおりです。
スキャナーと AST (Abstract Syntax Tree) のコードもあります。ここの $1 と $3 は何を示していますか?
補遺: 変数に値を代入したい。また、すべての変数の値を配列に格納したいと考えています。どうやってやるの?
ocaml - ユーザー定義型でプリミティブ関数を使用する
開始点の型がすべてのルールの戻り値の型と一致しないという問題が ocamlyacc で発生していました (ある時点で文字列を返し、別の時点で文字列リスト -> 文字列リフトを返していました)。新しいタイプ:
そのため、エントリ ポイントのタイプをそのように設定して、発生していたエラーを停止することができました (それを行うためのより良い方法があるかどうかはわかりません)。タイプ SI は ^ だけを使用することはできません。これを行う方法はありますか?
ありがとう