From: mike lowis Date: Sat, 10 Apr 2021 00:19:46 +0000 (-0400) Subject: Removed PACK ROR and UNPK X-Git-Url: https://git.mdlowis.com/?a=commitdiff_plain;h=2213ca80b7d2d41dd985c1f5eb0a8f8366ea7cb7;p=proto%2Fobnc.git Removed PACK ROR and UNPK --- diff --git a/.gitignore b/.gitignore index d58198e..969780d 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ TableTest UtilTest lex.yyTest tags +*.swp diff --git a/src/Oberon.y b/src/Oberon.y index 76f82a6..c25df75 100644 --- a/src/Oberon.y +++ b/src/Oberon.y @@ -3602,9 +3602,6 @@ static Trees_Node PredeclaredProcedureAST(const char procName[], Trees_Node expL {"Length", TREES_LEN_PROC}, {"New", TREES_NEW_PROC}, {"ORD", TREES_ORD_PROC}, - {"PACK", TREES_PACK_PROC}, - {"ROR", TREES_ROR_PROC}, - {"UNPK", TREES_UNPK_PROC}, {"ADR", TREES_ADR_PROC}, {"SIZE", TREES_SIZE_PROC}, diff --git a/src/Table.c b/src/Table.c index 24145ec..9280fed 100644 --- a/src/Table.c +++ b/src/Table.c @@ -68,7 +68,7 @@ struct ScopeDesc { static int initialized = 0; -static const char *predeclaredNames[23]; +static const char *predeclaredNames[20]; static Trees_Node predeclaredNodes[LEN(predeclaredNames)]; static Scope globalScope, currentScope; @@ -78,30 +78,35 @@ static Maps_Map writtenSymbols; void Table_Init(void) { +/* Type Conversions + + FLOOR() -> AsInt() + FLT() -> AsReal() + ORD() -> AsInt() + CHR() -> AsChar() + +*/ static const struct { const char *name; int kind, type; } predecIdents[] = { - {"ABS", TREES_PROCEDURE_KIND, TREES_ABS_PROC}, - {"ASR", TREES_PROCEDURE_KIND, TREES_ASR_PROC}, + {"ABS", TREES_PROCEDURE_KIND, TREES_ABS_PROC}, /* Remove */ + {"ASR", TREES_PROCEDURE_KIND, TREES_ASR_PROC}, /* Operator */ {"Assert", TREES_PROCEDURE_KIND, TREES_ASSERT_PROC}, {"Bool", TREES_TYPE_KIND, TREES_BOOLEAN_TYPE}, {"Byte", TREES_TYPE_KIND, TREES_BYTE_TYPE}, {"CHR", TREES_PROCEDURE_KIND, TREES_CHR_PROC}, {"Char", TREES_TYPE_KIND, TREES_CHAR_TYPE}, - {"DEC", TREES_PROCEDURE_KIND, TREES_DEC_PROC}, + {"DEC", TREES_PROCEDURE_KIND, TREES_DEC_PROC}, /* Operator */ {"EXCL", TREES_PROCEDURE_KIND, TREES_EXCL_PROC}, {"FLOOR", TREES_PROCEDURE_KIND, TREES_FLOOR_PROC}, {"FLT", TREES_PROCEDURE_KIND, TREES_FLT_PROC}, - {"INC", TREES_PROCEDURE_KIND, TREES_INC_PROC}, + {"INC", TREES_PROCEDURE_KIND, TREES_INC_PROC}, /* Operator */ {"INCL", TREES_PROCEDURE_KIND, TREES_INCL_PROC}, {"Int", TREES_TYPE_KIND, TREES_INTEGER_TYPE}, - {"LSL", TREES_PROCEDURE_KIND, TREES_LSL_PROC}, + {"LSL", TREES_PROCEDURE_KIND, TREES_LSL_PROC}, /* Operator */ {"Length", TREES_PROCEDURE_KIND, TREES_LEN_PROC}, {"New", TREES_PROCEDURE_KIND, TREES_NEW_PROC}, {"ORD", TREES_PROCEDURE_KIND, TREES_ORD_PROC}, - {"PACK", TREES_PROCEDURE_KIND, TREES_PACK_PROC}, - {"ROR", TREES_PROCEDURE_KIND, TREES_ROR_PROC}, {"Real", TREES_TYPE_KIND, TREES_REAL_TYPE}, {"Set", TREES_TYPE_KIND, TREES_SET_TYPE}, - {"UNPK", TREES_PROCEDURE_KIND, TREES_UNPK_PROC} }; int i; diff --git a/src/y.tab.c b/src/y.tab.c index f641eff..86b5194 100644 --- a/src/y.tab.c +++ b/src/y.tab.c @@ -5580,9 +5580,6 @@ static Trees_Node PredeclaredProcedureAST(const char procName[], Trees_Node expL {"Length", TREES_LEN_PROC}, {"New", TREES_NEW_PROC}, {"ORD", TREES_ORD_PROC}, - {"PACK", TREES_PACK_PROC}, - {"ROR", TREES_ROR_PROC}, - {"UNPK", TREES_UNPK_PROC}, {"ADR", TREES_ADR_PROC}, {"SIZE", TREES_SIZE_PROC}, diff --git a/tests/obnc/passing/T4Expressions.obn b/tests/obnc/passing/T4Expressions.obn index 74ff492..88c4567 100644 --- a/tests/obnc/passing/T4Expressions.obn +++ b/tests/obnc/passing/T4Expressions.obn @@ -381,7 +381,6 @@ Out.Integer(ORD({1, 2, a, 5, b, 8} = {1, 2, a..b, 8}), 0); Out.Ln; absConst = ABS(0); lslConst = LSL(0, 0); asrConst = ASR(0, 0); - rorConst = ROR(0, 1); floorConst = FLOOR(eps); fltConst = FLT(0); ordConst = ORD(true); @@ -390,7 +389,7 @@ Out.Integer(ORD({1, 2, a, 5, b, 8} = {1, 2, a..b, 8}), 0); Out.Ln; var a: array 10 of Char; b: Bool; ch: Char; - i, j, k: Int; + i, j: Int; r: Real; x: Byte; s: Set; @@ -419,15 +418,6 @@ Out.Integer(ORD({1, 2, a, 5, b, 8} = {1, 2, a..b, 8}), 0); Out.Ln; Assert(ASR(1, 0) = 1); Assert(ASR(1, 1) = 0); - Assert(ROR(0, 1) = 0); - Assert(ROR(2, 1) = 1); - i := 0; - j := 0; - k := ROR(IncReturnZero(i) + 2, IncReturnZero(j) + 1); - Assert(k = 1); - Assert(i = 1); - Assert(j = 1); - Assert(FLOOR(-1.5) = -2); Assert(FLOOR(0.0) = 0); Assert(FLOOR(1.5) = 1); @@ -475,7 +465,6 @@ Out.Integer(ORD({1, 2, a, 5, b, 8} = {1, 2, a..b, 8}), 0); Out.Ln; i := absConst; i := lslConst; i := asrConst; - i := rorConst; i := floorConst; r := fltConst; i := ordConst; diff --git a/tests/obnc/passing/T5Statements.obn b/tests/obnc/passing/T5Statements.obn index 3b89f44..12b3baf 100644 --- a/tests/obnc/passing/T5Statements.obn +++ b/tests/obnc/passing/T5Statements.obn @@ -294,20 +294,9 @@ module T5Statements; procedure TestPredeclaredProperProcedures; - const eps = 0.01; - var n, i, j: Int; + var n: Int; A: Set; - x: Real; - a: array 1 of Real; - b: array 1 of Int; v: pointer to record f: Int end; - - procedure IncReturnZero(var x: Int): Int; - begin - INC(x) - return 0 - end IncReturnZero; - begin n := 0; INC(n); @@ -337,34 +326,6 @@ module T5Statements; Assert(v # nil); v.f := 1; Assert(v.f = 1); - - x := 1.0; - PACK(x, 2); - Assert(x >= 4.0 - eps); - Assert(x <= 4.0 + eps); - a[0] := 1.0; - i := 0; - j := 0; - PACK(a[IncReturnZero(i)], IncReturnZero(j) + 2); - Assert(a[0] >= 4.0 - eps); - Assert(a[0] <= 4.0 + eps); - Assert(i = 1); - Assert(j = 1); - - x := 4.0; - UNPK(x, n); - Assert(x >= 1.0); - Assert(x < 2.0); - Assert(n = 2); - a[0] := 4.0; - i := 0; - j := 0; - UNPK(a[IncReturnZero(i)], b[IncReturnZero(j)]); - Assert(a[0] >= 1.0); - Assert(a[0] < 2.0); - Assert(b[0] = 2); - Assert(i = 1); - Assert(j = 1) end TestPredeclaredProperProcedures;