hcl/pas/main.pas

43 lines
1.1 KiB
ObjectPascal
Raw Normal View History

2024-02-02 05:57:46 +00:00
program main;
{$mode objfpc}{$H+}
uses HCL, SysUtils;
2024-02-02 05:57:46 +00:00
var
x: HCL.Interp = nil;
begin
(* System.ParamCount() returns only the number of argumetns except System.ParamStr(0). It is the upper bound to System.ParamStr(). *)
if System.ParamCount() <> 1 then begin
writeln (System.Stderr, SysUtils.Format('Usage: %s <filename>', [SysUtils.ExtractFileName(System.ParamStr(0))]));
System.Halt(-1);
end;
2024-02-02 05:57:46 +00:00
try
x := HCL.Interp.Create(100);
x.Ignite(0);
x.AddBuiltinPrims();
//x.AttachCCIO();
//x.AttachUDIO();
(*
x.CompileText(pwidechar('(printf "hello 동키콩\n")'));
x.CompileText('(printf "hello 동키콩월드\n") ');
x.CompileText('(동가리오 := 20)');
x.CompileText('(printf "%d %d\n" 동가리오 (+ 동가리오 동가리오))');
2024-02-11 07:39:16 +00:00
x.Compile(pwidechar('(printf "%d %d\n" 동가리오 (동가리오 * 동가리오))'#10'printf "hello, world\n";;;'#10));
*)
2024-02-02 05:57:46 +00:00
x.CompileFile(pansichar(ansistring(System.ParamStr(1))));
x.Execute(); // check if exception...
2024-02-02 05:57:46 +00:00
except
on e: Exception do
writeln ('exception: ', e.Message);
2024-02-02 05:57:46 +00:00
else
writeln ('unknonw exception');
end;
if x <> nil then x.Destroy();
end.