私は ocamllex と ocamlyacc を使用してインタープリターを作成しました。レクサーとパーサーは正しく動作しますが、現在のところ、それらすべてとは対照的に、受信した最後の .txt 引数のみを解析します。たとえば、解析とは対照的に、./interpret one.txt two.txt three.txt
解析のみが必要です。たとえば、解析結果は次のようになります。three.txt
one.txt
two.txt
three.txt
one.txt -> "1"
two.txt -> "2"
three.txt -> "3"
./interpret one.txt two.txt three.txt
現在の出力を呼び出すと、次の3
ようになります。123
stdin
これが、とを扱う私のメインクラスですstdout
open Lexer
open Parser
open Arg
open Printf
let toParse c =
try let lexbuf = Lexing.from_channel c in
parser_main lexer_main lexbuf
with Parsing.Parse_error -> failwith "Parse failure!" ;;
let argument = ref stdin in
let prog p = argument := open_in p in
let usage = "./interpreter FILE" in
parse [] prog usage ;
let parsed = toParse !argument in
let result = eval parsed in
let _ = parsed in
flush stdout;
御時間ありがとうございます