4 CREATE OR REPLACE PACKAGE mal
IS
6 FUNCTION MAIN(args
varchar DEFAULT '()') RETURN integer;
11 CREATE OR REPLACE PACKAGE BODY mal
IS
13 FUNCTION MAIN(args
varchar DEFAULT '()') RETURN integer IS
17 FUNCTION READ(line
varchar) RETURN varchar IS
23 FUNCTION EVAL(ast
varchar, env
varchar) RETURN varchar IS
29 FUNCTION PRINT(exp varchar) RETURN varchar IS
35 FUNCTION REP(line
varchar) RETURN varchar IS
37 RETURN PRINT(EVAL(READ(line
), ''));
43 line
:= io.
readline('user> ', 0);
44 IF line
= EMPTY_CLOB() THEN CONTINUE; END IF;
45 IF line
IS NOT NULL THEN
46 io.
writeline(REP(line
));
49 EXCEPTION WHEN OTHERS THEN
50 IF SQLCODE = -20001 THEN -- io read stream closed
51 io.
close(1); -- close output stream
54 io.
writeline('Error: ' || SQLERRM
);
55 io.
writeline(dbms_utility.format_error_backtrace
);