1
1
Fork 0
mirror of https://github.com/QB64-Phoenix-Edition/QB64pe.git synced 2024-09-20 04:24:48 +00:00

Fix math evaluator

The math evaluator was not running the input through lineformat before
evaluation, resulting in Evaluate_Expression$() giving the wrong result
since the input wasn't tokenized.
This commit is contained in:
Matthew Kilgore 2024-02-13 15:57:17 -05:00
parent b56efe7ec6
commit c0ac4c58d0

View file

@ -5511,15 +5511,20 @@ FUNCTION ide2 (ignore)
IF LEN(retval$) THEN IF LEN(retval$) THEN
Dim num As ParseNum Dim num As ParseNum
mathEvalExpr$ = retval$ mathEvalExpr$ = retval$
retval$ = lineformat(retval$)
Error_Happened = 0
ev0$ = Evaluate_Expression$(retval$, num) ev0$ = Evaluate_Expression$(retval$, num)
ev$ = ev0$ ev$ = ev0$
mathEvalError%% = INSTR(ev$, "ERROR") > 0 mathEvalError%% = INSTR(ev$, "ERROR") > 0
IF mathEvalError%% = 0 AND mathEvalHEX%% THEN ev$ = "&H" + HEX$(VAL(ev$)) IF mathEvalError%% = 0 AND mathEvalHEX%% THEN ev$ = "&H" + HEX$(num.ui)
DO DO
b1$ = "#Insert;" b1$ = "#Insert;"
IF mathEvalHEX%% THEN b2$ = "#Decimal;" ELSE b2$ = "#HEX$;" IF mathEvalHEX%% THEN b2$ = "#Decimal;" ELSE b2$ = "#HEX$;"
IF mathEvalError%% = 0 AND mathEvalComment%% THEN IF mathEvalError%% = 0 AND mathEvalComment%% THEN
mathMsg$ = ev$ + " '" + retval$ mathMsg$ = ev$ + " '" + mathEvalExpr$
b3$ = "#Uncomment;" b3$ = "#Uncomment;"
ELSE ELSE
mathMsg$ = ev$ mathMsg$ = ev$
@ -5534,7 +5539,7 @@ FUNCTION ide2 (ignore)
EXIT DO EXIT DO
CASE 2 CASE 2
mathEvalHEX%% = NOT mathEvalHEX%% mathEvalHEX%% = NOT mathEvalHEX%%
IF mathEvalHEX%% THEN ev$ = "&H" + HEX$(VAL(ev$)) ELSE ev$ = ev0$ IF mathEvalHEX%% THEN ev$ = "&H" + HEX$(num.ui) ELSE ev$ = ev0$
CASE 3 CASE 3
mathEvalComment%% = NOT mathEvalComment%% mathEvalComment%% = NOT mathEvalComment%%
END SELECT END SELECT