PLati: partial syntax fix
This commit is contained in:
parent
e2eb4b6dfa
commit
fd57b438be
@ -1,29 +1,30 @@
|
|||||||
CREATE OR REPLACE PACKAGE algo
|
CREATE OR REPLACE PACKAGE algo AS
|
||||||
CREATE OR REPLACE SUBTYPE ASTRING IS VARCHAR(128);
|
SUBTYPE ASTRING IS VARCHAR(128);
|
||||||
-- ###
|
-- ###
|
||||||
EMPTY_VAL CONSTANT CHAR(1) := '0';
|
EMPTY_VAL CONSTANT CHAR(1) := '0';
|
||||||
TRUE_ CONSTANT CHAR(4) := 'true';
|
TRUE_ CONSTANT CHAR(4) := 'true';
|
||||||
FALSE_ CONSTANT CHAR(5) := 'false';
|
FALSE_ CONSTANT CHAR(5) := 'false';
|
||||||
-- ###
|
-- ###
|
||||||
CREATE OR REPLACE PROCEDURE init;
|
PROCEDURE init;
|
||||||
|
|
||||||
CREATE OR REPLACE PROCEDURE assign_ (name_ ASTRING, val ASTRING);
|
PROCEDURE assign_ (name_ ASTRING, val ASTRING);
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION arref IS ASTRING (s ASTRING);
|
FUNCTION arref (s ASTRING) RETURN ASTRING;
|
||||||
CREATE OR REPLACE FUNCTION deref_ IS ASTRING (s ASTRING);
|
FUNCTION deref_ (s ASTRING) RETURN ASTRING;
|
||||||
CREATE OR REPLACE FUNCTION aint IS INT (s ASTRING);
|
FUNCTION aint (s ASTRING) RETURN INT;
|
||||||
|
|
||||||
CREATE OR REPLACE PROCEDURE do_eval (opr1 ASTRING, oper CHAR, opr2 ASTRING);
|
PROCEDURE do_eval (opr1 ASTRING, oper CHAR, opr2 ASTRING);
|
||||||
|
|
||||||
CREATE OR REPLACE PROCEDURE pop (head INT);
|
PROCEDURE pop (head INT);
|
||||||
CREATE OR REPLACE PROCEDURE push (head INT);
|
PROCEDURE push (head INT);
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION jump IS BOOLEAN (head INT, jmp INT, dest ASTRING, push CHAR);
|
FUNCTION jump (head INT, jmp INT, dest ASTRING, push CHAR) RETURN BOOLEAN;
|
||||||
CREATE OR REPLACE PROCEDURE call_ (head INT, jmp INT, dest ASTRING, is_push BOOLEAN);
|
PROCEDURE call_ (head INT, jmp INT, dest ASTRING, is_push BOOLEAN);
|
||||||
END algo;
|
END;
|
||||||
|
/
|
||||||
|
|
||||||
CREATE OR REPLACE PACKAGE BODY algo AS
|
CREATE OR REPLACE PACKAGE BODY algo AS
|
||||||
CREATE OR REPLACE PROCEDURE init
|
PROCEDURE init IS
|
||||||
BEGIN
|
BEGIN
|
||||||
REPLACE INTO TABLE vars VALUES
|
REPLACE INTO TABLE vars VALUES
|
||||||
('eval', ''),
|
('eval', ''),
|
||||||
@ -39,21 +40,21 @@ CREATE OR REPLACE PACKAGE BODY algo AS
|
|||||||
('argv-8', ''),
|
('argv-8', ''),
|
||||||
('argv-9', '')
|
('argv-9', '')
|
||||||
;
|
;
|
||||||
END
|
END;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CREATE OR REPLACE PROCEDURE assign_ (
|
PROCEDURE assign_ (
|
||||||
name_ VARCHAR(128),
|
name_ VARCHAR(128),
|
||||||
val VARCHAR(128)
|
val VARCHAR(128)
|
||||||
)
|
) IS
|
||||||
BEGIN
|
BEGIN
|
||||||
INSERT INTO vars (name_, val);
|
INSERT INTO vars (name_, val);
|
||||||
END
|
END;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION arref AS ASTRING (s ASTRING)
|
FUNCTION arref AS ASTRING (s ASTRING)
|
||||||
DECLARE
|
DECLARE
|
||||||
p INT;
|
p INT;
|
||||||
subs ASTRING;
|
subs ASTRING;
|
||||||
@ -70,7 +71,7 @@ CREATE OR REPLACE PACKAGE BODY algo AS
|
|||||||
|
|
||||||
RETURN s;
|
RETURN s;
|
||||||
END;
|
END;
|
||||||
CREATE OR REPLACE FUNCTION deref_ AS ASTRING (s ASTRING)
|
FUNCTION deref_ AS ASTRING (s ASTRING)
|
||||||
varval ASTRING;
|
varval ASTRING;
|
||||||
BEGIN
|
BEGIN
|
||||||
s := arref(s);
|
s := arref(s);
|
||||||
@ -80,7 +81,7 @@ CREATE OR REPLACE PACKAGE BODY algo AS
|
|||||||
WHEN OTHERS THEN
|
WHEN OTHERS THEN
|
||||||
RETURN s;
|
RETURN s;
|
||||||
END;
|
END;
|
||||||
CREATE OR REPLACE FUNCTION aint AS INT (s ASTRING)
|
FUNCTION aint AS INT (s ASTRING)
|
||||||
sign_ BOOLEAN := TRUE;
|
sign_ BOOLEAN := TRUE;
|
||||||
i INT := 0;
|
i INT := 0;
|
||||||
buf ASTRING := '';
|
buf ASTRING := '';
|
||||||
@ -110,7 +111,7 @@ CREATE OR REPLACE PACKAGE BODY algo AS
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
CREATE OR REPLACE PROCEDURE do_eval (opr1 ASTRING, oper CHAR, opr2 ASTRING)
|
PROCEDURE do_eval (opr1 ASTRING, oper CHAR, opr2 ASTRING)
|
||||||
DECLARE
|
DECLARE
|
||||||
res ASTRING := '';
|
res ASTRING := '';
|
||||||
BEGIN
|
BEGIN
|
||||||
@ -129,7 +130,7 @@ CREATE OR REPLACE PACKAGE BODY algo AS
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
CREATE OR REPLACE PROCEDURE pop (head INT)
|
PROCEDURE pop (head INT)
|
||||||
DECLARE
|
DECLARE
|
||||||
EMPTY_STACK EXCEPTION;
|
EMPTY_STACK EXCEPTION;
|
||||||
BEGIN
|
BEGIN
|
||||||
@ -140,7 +141,7 @@ CREATE OR REPLACE PACKAGE BODY algo AS
|
|||||||
SELECT bp INTO HEAD FROM callstack WHERE rowid = (SELECT MAX(rowid) FROM callstack);
|
SELECT bp INTO HEAD FROM callstack WHERE rowid = (SELECT MAX(rowid) FROM callstack);
|
||||||
head := head + 1;
|
head := head + 1;
|
||||||
END;
|
END;
|
||||||
CREATE OR REPLACE PROCEDURE push (head INT)
|
PROCEDURE push (head INT)
|
||||||
BEGIN
|
BEGIN
|
||||||
UPDATE callstack SET (bp, head) WHERE rowid = (SELECT MAX(rowid) FROM callstack);
|
UPDATE callstack SET (bp, head) WHERE rowid = (SELECT MAX(rowid) FROM callstack);
|
||||||
INSERT INTO callstack VALUES (0);
|
INSERT INTO callstack VALUES (0);
|
||||||
@ -148,7 +149,7 @@ CREATE OR REPLACE PACKAGE BODY algo AS
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION jump AS BOOLEAN (head INT, jmp INT, dest ASTRING, push CHAR)
|
FUNCTION jump AS BOOLEAN (head INT, jmp INT, dest ASTRING, push CHAR)
|
||||||
DECLARE
|
DECLARE
|
||||||
ret BOOLEAN = FALSE;
|
ret BOOLEAN = FALSE;
|
||||||
BEGIN
|
BEGIN
|
||||||
@ -171,7 +172,7 @@ CREATE OR REPLACE PACKAGE BODY algo AS
|
|||||||
END CASE;
|
END CASE;
|
||||||
RETURN ret;
|
RETURN ret;
|
||||||
END;
|
END;
|
||||||
CREATE OR REPLACE PROCEDURE call_ (head INT, jmp INT, dest ASTRING, is_push BOOLEAN)
|
PROCEDURE call_ (head INT, jmp INT, dest ASTRING, is_push BOOLEAN)
|
||||||
BEGIN
|
BEGIN
|
||||||
IF dest = 'return' THEN
|
IF dest = 'return' THEN
|
||||||
pop(head);
|
pop(head);
|
||||||
|
@ -1,8 +1,11 @@
|
|||||||
CREATE TABLE IF NOT EXISTS vars(
|
DROP TABLE vars;
|
||||||
|
DROP TABLE callstack;
|
||||||
|
|
||||||
|
CREATE TABLE vars(
|
||||||
name VARCHAR2(128),
|
name VARCHAR2(128),
|
||||||
value VARCHAR2(128)
|
value VARCHAR2(128)
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS callstack(
|
CREATE TABLE callstack(
|
||||||
bp INT
|
bp INT
|
||||||
);
|
);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user