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 SUBTYPE ASTRING IS VARCHAR(128);
|
||||
CREATE OR REPLACE PACKAGE algo AS
|
||||
SUBTYPE ASTRING IS VARCHAR(128);
|
||||
-- ###
|
||||
EMPTY_VAL CONSTANT CHAR(1) := '0';
|
||||
TRUE_ CONSTANT CHAR(4) := 'true';
|
||||
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);
|
||||
CREATE OR REPLACE FUNCTION deref_ IS ASTRING (s ASTRING);
|
||||
CREATE OR REPLACE FUNCTION aint IS INT (s ASTRING);
|
||||
FUNCTION arref (s ASTRING) RETURN ASTRING;
|
||||
FUNCTION deref_ (s ASTRING) RETURN 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);
|
||||
CREATE OR REPLACE PROCEDURE push (head INT);
|
||||
PROCEDURE pop (head INT);
|
||||
PROCEDURE push (head INT);
|
||||
|
||||
CREATE OR REPLACE FUNCTION jump IS BOOLEAN (head INT, jmp INT, dest ASTRING, push CHAR);
|
||||
CREATE OR REPLACE PROCEDURE call_ (head INT, jmp INT, dest ASTRING, is_push BOOLEAN);
|
||||
END algo;
|
||||
FUNCTION jump (head INT, jmp INT, dest ASTRING, push CHAR) RETURN BOOLEAN;
|
||||
PROCEDURE call_ (head INT, jmp INT, dest ASTRING, is_push BOOLEAN);
|
||||
END;
|
||||
/
|
||||
|
||||
CREATE OR REPLACE PACKAGE BODY algo AS
|
||||
CREATE OR REPLACE PROCEDURE init
|
||||
PROCEDURE init IS
|
||||
BEGIN
|
||||
REPLACE INTO TABLE vars VALUES
|
||||
('eval', ''),
|
||||
@ -39,21 +40,21 @@ CREATE OR REPLACE PACKAGE BODY algo AS
|
||||
('argv-8', ''),
|
||||
('argv-9', '')
|
||||
;
|
||||
END
|
||||
END;
|
||||
|
||||
|
||||
|
||||
CREATE OR REPLACE PROCEDURE assign_ (
|
||||
PROCEDURE assign_ (
|
||||
name_ VARCHAR(128),
|
||||
val VARCHAR(128)
|
||||
)
|
||||
) IS
|
||||
BEGIN
|
||||
INSERT INTO vars (name_, val);
|
||||
END
|
||||
END;
|
||||
|
||||
|
||||
|
||||
CREATE OR REPLACE FUNCTION arref AS ASTRING (s ASTRING)
|
||||
FUNCTION arref AS ASTRING (s ASTRING)
|
||||
DECLARE
|
||||
p INT;
|
||||
subs ASTRING;
|
||||
@ -70,7 +71,7 @@ CREATE OR REPLACE PACKAGE BODY algo AS
|
||||
|
||||
RETURN s;
|
||||
END;
|
||||
CREATE OR REPLACE FUNCTION deref_ AS ASTRING (s ASTRING)
|
||||
FUNCTION deref_ AS ASTRING (s ASTRING)
|
||||
varval ASTRING;
|
||||
BEGIN
|
||||
s := arref(s);
|
||||
@ -80,7 +81,7 @@ CREATE OR REPLACE PACKAGE BODY algo AS
|
||||
WHEN OTHERS THEN
|
||||
RETURN s;
|
||||
END;
|
||||
CREATE OR REPLACE FUNCTION aint AS INT (s ASTRING)
|
||||
FUNCTION aint AS INT (s ASTRING)
|
||||
sign_ BOOLEAN := TRUE;
|
||||
i INT := 0;
|
||||
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
|
||||
res ASTRING := '';
|
||||
BEGIN
|
||||
@ -129,7 +130,7 @@ CREATE OR REPLACE PACKAGE BODY algo AS
|
||||
|
||||
|
||||
|
||||
CREATE OR REPLACE PROCEDURE pop (head INT)
|
||||
PROCEDURE pop (head INT)
|
||||
DECLARE
|
||||
EMPTY_STACK EXCEPTION;
|
||||
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);
|
||||
head := head + 1;
|
||||
END;
|
||||
CREATE OR REPLACE PROCEDURE push (head INT)
|
||||
PROCEDURE push (head INT)
|
||||
BEGIN
|
||||
UPDATE callstack SET (bp, head) WHERE rowid = (SELECT MAX(rowid) FROM callstack);
|
||||
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
|
||||
ret BOOLEAN = FALSE;
|
||||
BEGIN
|
||||
@ -171,7 +172,7 @@ CREATE OR REPLACE PACKAGE BODY algo AS
|
||||
END CASE;
|
||||
RETURN ret;
|
||||
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
|
||||
IF dest = 'return' THEN
|
||||
pop(head);
|
||||
|
@ -1,8 +1,11 @@
|
||||
CREATE TABLE IF NOT EXISTS vars(
|
||||
DROP TABLE vars;
|
||||
DROP TABLE callstack;
|
||||
|
||||
CREATE TABLE vars(
|
||||
name VARCHAR2(128),
|
||||
value VARCHAR2(128)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS callstack(
|
||||
CREATE TABLE callstack(
|
||||
bp INT
|
||||
);
|
||||
|
Loading…
x
Reference in New Issue
Block a user