menhir

    1

    1答えて

    私は単純なプログラムを解析する方法を学ぶ途中です。 これは私のレクサーです。 { open Parser exception SyntaxError of string } let white = [' ' '\t']+ let blank = ' ' let identifier = ['a'-'z'] rule token = parse | whi

    0

    1答えて

    私は "Modern Compiler Implementation in ML"を使って、SMLをOCamlに変換しています。この本は、Tigerという言語を定義しています。この言語は、与えられた式のスコープ内の型、変数、関数を宣言するための構文がlet ... in ... endです。さらに、同じ種類の隣接宣言は、相互再帰を可能にするためにグループ化する必要があります。私は、シフト/紛争を減

    1

    1答えて

    Andrew AppelのTiger言語(ocaml)の現在の私の現在のlexerとparserです。 私は現在、相互再帰関数をサポートしようとしているが、次のパーサコードは動作しません。 decs : | l = list(dec) { l } dec : | t = nonempty_list(loc(tydec)) { S.TypeDec t } | v =

    1

    2答えて

    私は割り当て言語のための小さなコンパイラを構築しています。 は、次のルールを考えてみましょう: var_block : | LPAREN var_decl+ RPAREN { var_scope := var_scope + 1 }; はセマンティックアクションですvar_blockが最初に認識されているか、それが生産の端が(この場合、RPARENに)達するとトリガされたときにトリガ

    0

    1答えて

    menhirで書かれたフロントエンドは、文字列から式ASTへの式の解析を試みます。フロントエンドParser_e.mainのエントリポイントは、私のOCamlコードのいくつかの異なる場所で呼び出されます。ですから、私は外部よりもフロントエンド内で起こりうるエラーをキャッチできるようにしたいと考えています。エラーをキャッチするとき、私が表示したいと思う重要な情報は、の入力文字列全体がフロントエンドが

    0

    1答えて

    私は次のコードをexprのように後に持っている:int {} | BOOL {}などしかし、私はこのパーサーの型で書く必要があります型がわからない、私はint型で動作する電卓の例がintですが、私のプログラムで浮動小数点文字の文字列など..ありがとうあなたの文法から判断 %{ dont know what to write here %} %token <int> INT %token

    5

    1答えて

    オペレーターがMenhirパーサー(Ocamlyaccに似ています)を使用して動的属性(優先順位と優先順位)を持つ言語を解析しようとしています。レキシングフェーズでは、すべての演算子がOP:stringトークンを埋めます(したがって、 "+"は(OP "+")などになります)。 演算子の属性は、解析時に決定され、演算子とその属性を関連付けるテーブルを埋めます。このテーブルが与えられると、このテーブ

    7

    3答えて

    私は現在、OCamlで書かれ、js_of_ocamlを使ってjavascriptにコンパイルされたウェブサイトプロジェクトに取り組んでいます。 ocamlfind ocamlc -package js_of_ocaml -package js_of_ocaml.syntax -syntax camlp4o -linkpkg -o file.byte file.mlというコマンドを使用しているソース

    4

    2答えて

    は立石に未使用の優先順位の警告を抑制することが可能ですか? 背景: 私は、別途、Lib.mlyから定義を使用して、追加のパーサ(A.mly、B.mly、...)のホストをいくつかのルールを持つコアパーサLib.mlyを持っていると。すべての言語で単一のレクサーを使用するために、すべてのトークンはLib.mlyで定義されており、_tagsにはexternal_tokens(Lib)注釈を使用し、my