私たちは独自のドメイン固有の言語のためにOCamlにコンパイラを書いています。これまでのところ、私たちはスキャナ、パーサ、astを操作しています。OCaml:スキャナとパーサーをテストするには?
この時点でスキャナ/パーサーをテストする最良の方法は何ですか?パーサ/スキャナに一連のトークンを渡して、それがスキャナ/パーサによって受け入れ/拒否されるかどうかを確認することは可能です。 (例えば、echo "FLOAT ID" | menhir --interpret --interpret-show-cst parser.mly
)。
しかし、私たち自身の言語で書かれた実際のプログラムをスキャナ/パーサに渡し、それが受け入れられるかどうかを確認する方法はありますか?
私はOCamlには新しく、コンパイラについてはほとんど分かりません。
Lexing.from_channelまたはLexing.from_stringを使用できませんか? _val from_string:string - > lexbuf 指定された文字列から読み込むレクサーバッファを作成します。読み込みは文字列の最初の文字から始まります。文字列の終わりに達すると、入力終了条件が生成されます._ – Lhooq
例を挙げてください。 – fomkatya