1
1
Fork 0
mirror of https://github.com/QB64Official/qb64.git synced 2024-07-03 08:51:22 +00:00

Fixes highlighting of scientific notation numbers. Again.

This commit is contained in:
Fellippe Heitor 2021-02-06 18:27:00 -03:00
parent 796974c04d
commit 249d0549eb
2 changed files with 58 additions and 54 deletions

View file

@ -8363,7 +8363,7 @@ SUB ideshowtext
IF checkKeyword$ = "-" OR checkKeyword$ = "." OR checkKeyword$ = "&" THEN
checkKeyword$ = ""
ELSE
IF UCASE$(LEFT$(checkKeyword$, 2)) = "&H" OR UCASE$(LEFT$(checkKeyword$, 2)) = "&O" OR UCASE$(LEFT$(checkKeyword$, 2)) = "&B" OR isnumber(checkKeyword$) THEN
IF isnumber(checkKeyword$) THEN
is_Number = -1
isKeyword = LEN(checkKeyword$)
END IF
@ -14743,4 +14743,61 @@ FUNCTION findHelpTopic$(topic$, lnks, firstOnly AS _BYTE)
findHelpTopic$ = lnks$
END FUNCTION
FUNCTION isnumber (__a$)
a$ = UCASE$(__a$)
IF LEN(a$) = 0 THEN EXIT FUNCTION
IF INSTR("@&H@&O@&B@", "@" + LEFT$(a$, 2) + "@") THEN isnumber = 1: EXIT FUNCTION
i = INSTR(a$, "~"): IF i THEN GOTO foundsymbol
i = INSTR(a$, "`"): IF i THEN GOTO foundsymbol
i = INSTR(a$, "%"): IF i THEN GOTO foundsymbol
i = INSTR(a$, "&"): IF i THEN GOTO foundsymbol
i = INSTR(a$, "!"): IF i THEN GOTO foundsymbol
i = INSTR(a$, "#"): IF i THEN GOTO foundsymbol
i = INSTR(a$, "$"): IF i THEN GOTO foundsymbol
GOTO proceedWithoutSymbol
foundsymbol:
IF i = 1 THEN EXIT FUNCTION
symbol$ = RIGHT$(a$, LEN(a$) - i + 1)
IF symboltype(symbol$) = 0 THEN EXIT FUNCTION
a$ = LEFT$(a$, i - 1)
proceedWithoutSymbol:
ee = 0
dd = 0
FOR i = 1 TO LEN(a$)
a = ASC(a$, i)
IF a = 45 THEN
IF (i = 1 AND LEN(a$) > 1) OR (i > 1 AND ((dd > 0 AND dd = i - 1) OR (ee > 0 AND ee = i - 1))) THEN _CONTINUE
EXIT FUNCTION
END IF
IF a = 46 THEN
IF dp = 1 THEN EXIT FUNCTION
dp = 1
_CONTINUE
END IF
IF a = 68 THEN 'dd
IF dd > 0 OR ee > 0 THEN EXIT FUNCTION
IF i = 1 THEN EXIT FUNCTION
dd = i
_CONTINUE
END IF
IF a = 69 THEN 'eE
IF dd > 0 OR ee > 0 THEN EXIT FUNCTION
IF i = 1 THEN EXIT FUNCTION
ee = i
_CONTINUE
END IF
IF a = 43 THEN '+
IF (dd > 0 AND dd = i - 1) OR (ee > 0 AND ee = i - 1) THEN _CONTINUE
EXIT FUNCTION
END IF
IF a >= 48 AND a <= 57 THEN _CONTINUE
EXIT FUNCTION
NEXT
isnumber = 1
END FUNCTION
'$INCLUDE:'wiki\wiki_methods.bas'

View file

@ -19216,59 +19216,6 @@ SUB insertelements (a$, i, elements$)
END SUB
FUNCTION isnumber (__a$)
a$ = __a$
IF LEN(a$) = 0 THEN EXIT FUNCTION
i = INSTR(a$, "~"): IF i THEN GOTO foundsymbol
i = INSTR(a$, "`"): IF i THEN GOTO foundsymbol
i = INSTR(a$, "%"): IF i THEN GOTO foundsymbol
i = INSTR(a$, "&"): IF i THEN GOTO foundsymbol
i = INSTR(a$, "!"): IF i THEN GOTO foundsymbol
i = INSTR(a$, "#"): IF i THEN GOTO foundsymbol
i = INSTR(a$, "$"): IF i THEN GOTO foundsymbol
GOTO proceedWithoutSymbol
foundsymbol:
IF i = 1 THEN EXIT FUNCTION
symbol$ = RIGHT$(a$, LEN(a$) - i + 1)
IF symboltype(symbol$) = 0 THEN EXIT FUNCTION
a$ = LEFT$(a$, i - 1)
proceedWithoutSymbol:
FOR i = 1 TO LEN(a$)
a = ASC(MID$(a$, i, 1))
IF a = 45 THEN
IF (i = 1 AND LEN(a$) > 1) OR (i > 1 AND ((d > 0 AND d = i - 1) OR (E > 0 AND E = i - 1))) THEN _CONTINUE
EXIT FUNCTION
END IF
IF a = 46 THEN
IF dp = 1 THEN EXIT FUNCTION
dp = 1
_CONTINUE
END IF
IF a = 100 OR a = 68 THEN 'D
IF d > 0 OR E > 0 THEN EXIT FUNCTION
IF i = 1 THEN EXIT FUNCTION
d = i
_CONTINUE
END IF
IF a = 101 OR a = 69 THEN 'E
IF d > 0 OR E > 0 THEN EXIT FUNCTION
IF i = 1 THEN EXIT FUNCTION
E = i
_CONTINUE
END IF
IF a = 43 THEN '+
IF (d > 0 AND d = i - 1) OR (E > 0 AND E = i - 1) THEN _CONTINUE
EXIT FUNCTION
END IF
IF a >= 48 AND a <= 57 THEN _CONTINUE
EXIT FUNCTION
NEXT
isnumber = 1
END FUNCTION
FUNCTION isoperator (a2$)
a$ = UCASE$(a2$)
l = 0