我已经使用 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;
谢谢你的时间