1

私は ocamllex と ocamlyacc を使用してインタープリターを作成しました。レクサーとパーサーは正しく動作しますが、現在のところ、それらすべてとは対照的に、受信した最後の .txt 引数のみを解析します。たとえば、解析とは対照的に、./interpret one.txt two.txt three.txt解析のみが必要です。たとえば、解析結果は次のようになります。three.txtone.txttwo.txtthree.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;

御時間ありがとうございます

4

1 に答える 1