6 bool read_file(const std::string
& path
, std::string
* dest
)
9 in
.open(path
, std::ios::in
);
10 *dest
= std::string((std::istreambuf_iterator
<char>(in
)), (std::istreambuf_iterator
<char>()));
14 void make_argv(Interpreter
& ip
, size_t start
, std::vector
<std::string
>& args
)
17 auto arr
= ip
.makeArray();
18 for(i
=start
; i
<args
.size(); i
++)
20 arr
->add(ip
.makeString(args
[i
]));
22 ip
.setGlobal(ip
.makeString("ARGV"), arr
);
25 int interp_main(std::vector
<std::string
>& args
)
36 args
[2] = "<commandline>";
37 make_argv(ip
, 2, args
);
43 if(read_file(fname
, &source
))
45 make_argv(ip
, 1, args
);
51 std::cerr
<< "cannot open '" << fname
<< "' for reading" << std::endl
;
58 std::cerr
<< "no input file provided" << std::endl
;
64 int main(int argc
, char *argv
[])
66 std::vector
<std::string
> args(argv
, argv
+ argc
);
67 return interp_main(args
);