From e30f7a169132da230ba9064cfb1c403c3423a74a Mon Sep 17 00:00:00 2001 From: FellippeHeitor Date: Sun, 19 Sep 2021 21:22:08 -0300 Subject: [PATCH] Fix CONST failing with anything containing a NOT --- source/qb64.bas | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/source/qb64.bas b/source/qb64.bas index ae956902e..4d193901b 100644 --- a/source/qb64.bas +++ b/source/qb64.bas @@ -2189,7 +2189,7 @@ DO IF LEN(readable_e$) = 0 THEN readable_e$ = e3$ ELSE - readable_e$ = readable_e$ + e3$ + readable_e$ = readable_e$ + " " + e3$ END IF NEXT @@ -24943,26 +24943,6 @@ SUB PreParse (e$) LOOP UNTIL l = 0 IF c <> c1 THEN e$ = "ERROR -- Bad Parenthesis:" + STR$(c) + "( vs" + STR$(c1) + ")": EXIT SUB - 'Modify so that NOT will process properly - l = 0 - DO - l = INSTR(l + 1, t$, "NOT") - IF l THEN - 'We need to work magic on the statement so it looks pretty. - ' 1 + NOT 2 + 1 is actually processed as 1 + (NOT 2 + 1) - 'Look for something not proper - l1 = INSTR(l + 1, t$, "AND") - IF l1 = 0 OR (INSTR(l + 1, t$, "OR") > 0 AND INSTR(l + 1, t$, "OR") < l1) THEN l1 = INSTR(l + 1, t$, "OR") - IF l1 = 0 OR (INSTR(l + 1, t$, "XOR") > 0 AND INSTR(l + 1, t$, "XOR") < l1) THEN l1 = INSTR(l + 1, t$, "XOR") - IF l1 = 0 OR (INSTR(l + 1, t$, "EQV") > 0 AND INSTR(l + 1, t$, "EQV") < l1) THEN l1 = INSTR(l + 1, t$, "EQV") - IF l1 = 0 OR (INSTR(l + 1, t$, "IMP") > 0 AND INSTR(l + 1, t$, "IMP") < l1) THEN l1 = INSTR(l + 1, t$, "IMP") - IF l1 = 0 THEN l1 = LEN(t$) + 1 - t$ = LEFT$(t$, l - 1) + "(" + MID$(t$, l, l1 - l) + ")" + MID$(t$, l + l1 - l) - l = l + 3 - 'PRINT t$ - END IF - LOOP UNTIL l = 0 - 'replace existing CONST values sep$ = "()+-*/\><=^" FOR i2 = 0 TO constlast @@ -24998,6 +24978,26 @@ SUB PreParse (e$) NEXT NEXT + 'Modify so that NOT will process properly + l = 0 + DO + l = INSTR(l + 1, t$, "NOT ") + IF l THEN + 'We need to work magic on the statement so it looks pretty. + ' 1 + NOT 2 + 1 is actually processed as 1 + (NOT 2 + 1) + 'Look for something not proper + l1 = INSTR(l + 1, t$, "AND") + IF l1 = 0 OR (INSTR(l + 1, t$, "OR") > 0 AND INSTR(l + 1, t$, "OR") < l1) THEN l1 = INSTR(l + 1, t$, "OR") + IF l1 = 0 OR (INSTR(l + 1, t$, "XOR") > 0 AND INSTR(l + 1, t$, "XOR") < l1) THEN l1 = INSTR(l + 1, t$, "XOR") + IF l1 = 0 OR (INSTR(l + 1, t$, "EQV") > 0 AND INSTR(l + 1, t$, "EQV") < l1) THEN l1 = INSTR(l + 1, t$, "EQV") + IF l1 = 0 OR (INSTR(l + 1, t$, "IMP") > 0 AND INSTR(l + 1, t$, "IMP") < l1) THEN l1 = INSTR(l + 1, t$, "IMP") + IF l1 = 0 THEN l1 = LEN(t$) + 1 + t$ = LEFT$(t$, l - 1) + "(" + MID$(t$, l, l1 - l) + ")" + MID$(t$, l + l1 - l) + l = l + 3 + 'PRINT t$ + END IF + LOOP UNTIL l = 0 + uboundPP_TypeMod = TotalPrefixedPP_TypeMod IF qb64prefix_set = 1 THEN uboundPP_TypeMod = TotalPP_TypeMod FOR j = 1 TO uboundPP_TypeMod