mirror of
https://github.com/QB64-Phoenix-Edition/QB64pe.git
synced 2024-07-06 00:00:22 +00:00
Adds "quick reference" look up for the IDE.
Shows a quick syntax reference once it detects what command one is trying to use
This commit is contained in:
parent
bf32a6a0fc
commit
6181fe54e4
|
@ -686,6 +686,8 @@ TYPE idstruct
|
||||||
'For variables which are arguments passed to a sub/function
|
'For variables which are arguments passed to a sub/function
|
||||||
sfid AS LONG 'id number of variable's parent sub/function
|
sfid AS LONG 'id number of variable's parent sub/function
|
||||||
sfarg AS INTEGER 'argument/parameter # within call (1=first)
|
sfarg AS INTEGER 'argument/parameter # within call (1=first)
|
||||||
|
|
||||||
|
hr_syntax AS STRING
|
||||||
END TYPE
|
END TYPE
|
||||||
|
|
||||||
DIM SHARED id AS idstruct
|
DIM SHARED id AS idstruct
|
||||||
|
@ -2427,23 +2429,23 @@ DO
|
||||||
FOR i2 = i2 TO n2
|
FOR i2 = i2 TO n2
|
||||||
e$ = getelement$(a2$, i2)
|
e$ = getelement$(a2$, i2)
|
||||||
IF e$ = "(" THEN
|
IF e$ = "(" THEN
|
||||||
IF m <> 0 THEN a$ = "Syntax error": GOTO errmes
|
IF m <> 0 THEN a$ = "Syntax error - too many opening brackets": GOTO errmes
|
||||||
m = 1
|
m = 1
|
||||||
array = 1
|
array = 1
|
||||||
GOTO gotaa
|
GOTO gotaa
|
||||||
END IF
|
END IF
|
||||||
IF e$ = ")" THEN
|
IF e$ = ")" THEN
|
||||||
IF m <> 1 THEN a$ = "Syntax error": GOTO errmes
|
IF m <> 1 THEN a$ = "Syntax error - closing bracket without opening bracket": GOTO errmes
|
||||||
m = 2
|
m = 2
|
||||||
GOTO gotaa
|
GOTO gotaa
|
||||||
END IF
|
END IF
|
||||||
IF e$ = "AS" THEN
|
IF e$ = "AS" THEN
|
||||||
IF m <> 0 AND m <> 2 THEN a$ = "Syntax error": GOTO errmes
|
IF m <> 0 AND m <> 2 THEN a$ = "Syntax error - check your brackets": GOTO errmes
|
||||||
m = 3
|
m = 3
|
||||||
GOTO gotaa
|
GOTO gotaa
|
||||||
END IF
|
END IF
|
||||||
IF m = 1 THEN GOTO gotaa 'ignore contents of bracket
|
IF m = 1 THEN GOTO gotaa 'ignore contents of bracket
|
||||||
IF m <> 3 THEN a$ = "Syntax error": GOTO errmes
|
IF m <> 3 THEN a$ = "Syntax error - check your brackets": GOTO errmes
|
||||||
IF t2$ = "" THEN t2$ = e$ ELSE t2$ = t2$ + " " + e$
|
IF t2$ = "" THEN t2$ = e$ ELSE t2$ = t2$ + " " + e$
|
||||||
gotaa:
|
gotaa:
|
||||||
NEXT i2
|
NEXT i2
|
||||||
|
@ -2452,7 +2454,7 @@ DO
|
||||||
|
|
||||||
argnelereq = 0
|
argnelereq = 0
|
||||||
|
|
||||||
IF symbol2$ <> "" AND t2$ <> "" THEN a$ = "Syntax error": GOTO errmes
|
IF symbol2$ <> "" AND t2$ <> "" THEN a$ = "Syntax error - check parameter types": GOTO errmes
|
||||||
IF t2$ = "" THEN t2$ = symbol2$
|
IF t2$ = "" THEN t2$ = symbol2$
|
||||||
IF t2$ = "" THEN
|
IF t2$ = "" THEN
|
||||||
IF LEFT$(n2$, 1) = "_" THEN v = 27 ELSE v = ASC(UCASE$(n2$)) - 64
|
IF LEFT$(n2$, 1) = "_" THEN v = 27 ELSE v = ASC(UCASE$(n2$)) - 64
|
||||||
|
@ -4825,7 +4827,7 @@ DO
|
||||||
|
|
||||||
byvalue = 0
|
byvalue = 0
|
||||||
IF UCASE$(e$) = "BYVAL" THEN
|
IF UCASE$(e$) = "BYVAL" THEN
|
||||||
IF declaringlibrary = 0 THEN a$ = "BYVAL can currently only be used with DECLARE LIBRARY": GOTO errmes
|
IF declaringlibrary = 0 THEN a$ = "BYVAL can only be used with DECLARE LIBRARY": GOTO errmes
|
||||||
byvalue = 1: a2$ = RIGHT$(a2$, LEN(a2$) - 6)
|
byvalue = 1: a2$ = RIGHT$(a2$, LEN(a2$) - 6)
|
||||||
IF RIGHT$(l$, 1) = "(" THEN l$ = l$ + sp2 + SCase$("ByVal") ELSE l$ = l$ + sp + SCase$("Byval")
|
IF RIGHT$(l$, 1) = "(" THEN l$ = l$ + sp2 + SCase$("ByVal") ELSE l$ = l$ + sp + SCase$("Byval")
|
||||||
n2 = numelements(a2$): e$ = getelement$(a2$, 1)
|
n2 = numelements(a2$): e$ = getelement$(a2$, 1)
|
||||||
|
@ -4846,31 +4848,31 @@ DO
|
||||||
FOR i2 = 2 TO n2
|
FOR i2 = 2 TO n2
|
||||||
e$ = getelement$(a2$, i2)
|
e$ = getelement$(a2$, i2)
|
||||||
IF e$ = "(" THEN
|
IF e$ = "(" THEN
|
||||||
IF m <> 0 THEN a$ = "Syntax error": GOTO errmes
|
IF m <> 0 THEN a$ = "Syntax error - too many opening brackets": GOTO errmes
|
||||||
m = 1
|
m = 1
|
||||||
array = 1
|
array = 1
|
||||||
l$ = l$ + sp2 + "("
|
l$ = l$ + sp2 + "("
|
||||||
GOTO gotaa2
|
GOTO gotaa2
|
||||||
END IF
|
END IF
|
||||||
IF e$ = ")" THEN
|
IF e$ = ")" THEN
|
||||||
IF m <> 1 THEN a$ = "Syntax error": GOTO errmes
|
IF m <> 1 THEN a$ = "Syntax error - closing bracket without opening bracket": GOTO errmes
|
||||||
m = 2
|
m = 2
|
||||||
l$ = l$ + sp2 + ")"
|
l$ = l$ + sp2 + ")"
|
||||||
GOTO gotaa2
|
GOTO gotaa2
|
||||||
END IF
|
END IF
|
||||||
IF UCASE$(e$) = "AS" THEN
|
IF UCASE$(e$) = "AS" THEN
|
||||||
IF m <> 0 AND m <> 2 THEN a$ = "Syntax error": GOTO errmes
|
IF m <> 0 AND m <> 2 THEN a$ = "Syntax error - check your brackets": GOTO errmes
|
||||||
m = 3
|
m = 3
|
||||||
l$ = l$ + sp + SCase$("As")
|
l$ = l$ + sp + SCase$("As")
|
||||||
GOTO gotaa2
|
GOTO gotaa2
|
||||||
END IF
|
END IF
|
||||||
IF m = 1 THEN l$ = l$ + sp + e$: GOTO gotaa2 'ignore contents of option bracket telling how many dimensions (add to layout as is)
|
IF m = 1 THEN l$ = l$ + sp + e$: GOTO gotaa2 'ignore contents of option bracket telling how many dimensions (add to layout as is)
|
||||||
IF m <> 3 THEN a$ = "Syntax error": GOTO errmes
|
IF m <> 3 THEN a$ = "Syntax error - check your brackets": GOTO errmes
|
||||||
IF t2$ = "" THEN t2$ = e$ ELSE t2$ = t2$ + " " + e$
|
IF t2$ = "" THEN t2$ = e$ ELSE t2$ = t2$ + " " + e$
|
||||||
gotaa2:
|
gotaa2:
|
||||||
NEXT i2
|
NEXT i2
|
||||||
IF m = 1 THEN a$ = "Syntax error": GOTO errmes
|
IF m = 1 THEN a$ = "Syntax error - check your brackets": GOTO errmes
|
||||||
IF symbol2$ <> "" AND t2$ <> "" THEN a$ = "Syntax error": GOTO errmes
|
IF symbol2$ <> "" AND t2$ <> "" THEN a$ = "Syntax error - check parameter types": GOTO errmes
|
||||||
|
|
||||||
|
|
||||||
IF LEN(t2$) THEN 'add type-name after AS
|
IF LEN(t2$) THEN 'add type-name after AS
|
||||||
|
@ -7590,8 +7592,8 @@ DO
|
||||||
midgotpart:
|
midgotpart:
|
||||||
i = i + 1
|
i = i + 1
|
||||||
LOOP
|
LOOP
|
||||||
IF stringvariable$ = "" THEN a$ = "Syntax error": GOTO errmes
|
IF stringvariable$ = "" THEN a$ = "Syntax error - first parameter must be a string variable/array-element": GOTO errmes
|
||||||
IF start$ = "" THEN a$ = "Syntax error": GOTO errmes
|
IF start$ = "" THEN a$ = "Syntax error - second parameter not optional": GOTO errmes
|
||||||
'check if it is a valid source string
|
'check if it is a valid source string
|
||||||
stringvariable$ = fixoperationorder$(stringvariable$)
|
stringvariable$ = fixoperationorder$(stringvariable$)
|
||||||
IF Error_Happened THEN GOTO errmes
|
IF Error_Happened THEN GOTO errmes
|
||||||
|
@ -8850,7 +8852,7 @@ DO
|
||||||
IF n = 1 THEN
|
IF n = 1 THEN
|
||||||
PRINT #12, "data_offset=0;"
|
PRINT #12, "data_offset=0;"
|
||||||
ELSE
|
ELSE
|
||||||
IF n > 2 THEN a$ = "Syntax error": GOTO errmes
|
IF n > 2 THEN a$ = "Syntax error - too many parameters (expected RESTORE label/line number)": GOTO errmes
|
||||||
lbl$ = getelement$(ca$, 2)
|
lbl$ = getelement$(ca$, 2)
|
||||||
IF validlabel(lbl$) = 0 THEN a$ = "Invalid label": GOTO errmes
|
IF validlabel(lbl$) = 0 THEN a$ = "Invalid label": GOTO errmes
|
||||||
|
|
||||||
|
@ -8911,7 +8913,7 @@ DO
|
||||||
ne = ne + 1
|
ne = ne + 1
|
||||||
IF ne = 1 THEN blk$ = e$: e$ = ""
|
IF ne = 1 THEN blk$ = e$: e$ = ""
|
||||||
IF ne = 2 THEN offs$ = e$: e$ = ""
|
IF ne = 2 THEN offs$ = e$: e$ = ""
|
||||||
IF ne = 3 THEN a$ = "Syntax error": GOTO errmes
|
IF ne = 3 THEN a$ = "Syntax error - too many parameters (Expected " + qb64prefix$ + "MEMGET mem-reference, offset, variable)": GOTO errmes
|
||||||
ELSE
|
ELSE
|
||||||
IF LEN(e$) = 0 THEN e$ = e2$ ELSE e$ = e$ + sp + e2$
|
IF LEN(e$) = 0 THEN e$ = e2$ ELSE e$ = e$ + sp + e2$
|
||||||
END IF
|
END IF
|
||||||
|
@ -9523,7 +9525,7 @@ DO
|
||||||
|
|
||||||
IF firstelement$ = "CLOSE" OR firstelement$ = "RESET" THEN
|
IF firstelement$ = "CLOSE" OR firstelement$ = "RESET" THEN
|
||||||
IF firstelement$ = "RESET" THEN
|
IF firstelement$ = "RESET" THEN
|
||||||
IF n > 1 THEN a$ = "Syntax error": GOTO errmes
|
IF n > 1 THEN a$ = "Syntax error - RESET takes no parameters": GOTO errmes
|
||||||
l$ = SCase$("Reset")
|
l$ = SCase$("Reset")
|
||||||
ELSE
|
ELSE
|
||||||
l$ = SCase$("Close")
|
l$ = SCase$("Close")
|
||||||
|
@ -9776,7 +9778,7 @@ DO
|
||||||
IF a2$ = "," THEN
|
IF a2$ = "," THEN
|
||||||
GOTO finishedpromptstring
|
GOTO finishedpromptstring
|
||||||
END IF
|
END IF
|
||||||
a$ = "INPUT STATEMENT: SYNTAX ERROR!": GOTO errmes
|
a$ = "Syntax error - Expected INPUT [;] " + CHR$(34) + "[Question or statement text]" + CHR$(34) + "{,|;} variable[, ...] or INPUT ; variable[, ...]": GOTO errmes
|
||||||
END IF
|
END IF
|
||||||
'there was no promptstring, so print a ?
|
'there was no promptstring, so print a ?
|
||||||
IF lineinput = 0 THEN PRINT #12, "qbs_print(qbs_new_txt(" + CHR$(34) + "? " + CHR$(34) + "),0);"
|
IF lineinput = 0 THEN PRINT #12, "qbs_print(qbs_new_txt(" + CHR$(34) + "? " + CHR$(34) + "),0);"
|
||||||
|
@ -9785,7 +9787,7 @@ DO
|
||||||
FOR i = i TO n
|
FOR i = i TO n
|
||||||
IF commaneeded = 1 THEN
|
IF commaneeded = 1 THEN
|
||||||
a2$ = getelement$(ca$, i)
|
a2$ = getelement$(ca$, i)
|
||||||
IF a2$ <> "," THEN a$ = "INPUT STATEMENT: SYNTAX ERROR! (COMMA EXPECTED)": GOTO errmes
|
IF a2$ <> "," THEN a$ = "Syntax error - comma expected": GOTO errmes
|
||||||
ELSE
|
ELSE
|
||||||
|
|
||||||
B = 0
|
B = 0
|
||||||
|
@ -9852,7 +9854,7 @@ DO
|
||||||
gotinputvar:
|
gotinputvar:
|
||||||
commaneeded = commaneeded + 1: IF commaneeded = 2 THEN commaneeded = 0
|
commaneeded = commaneeded + 1: IF commaneeded = 2 THEN commaneeded = 0
|
||||||
NEXT
|
NEXT
|
||||||
IF numvar = 0 THEN a$ = "INPUT STATEMENT: SYNTAX ERROR! (NO VARIABLES LISTED FOR INPUT)": GOTO errmes
|
IF numvar = 0 THEN a$ = "Syntax error - Expected INPUT [;] " + CHR$(34) + "[Question or statement text]" + CHR$(34) + "{,|;} variable[, ...] or INPUT ; variable[, ...]": GOTO errmes
|
||||||
IF lineinput = 1 AND numvar > 1 THEN a$ = "Too many variables": GOTO errmes
|
IF lineinput = 1 AND numvar > 1 THEN a$ = "Too many variables": GOTO errmes
|
||||||
PRINT #12, "qbs_input(" + str2(numvar) + "," + str2$(newline) + ");"
|
PRINT #12, "qbs_input(" + str2(numvar) + "," + str2$(newline) + ");"
|
||||||
PRINT #12, "if (stop_program) end();"
|
PRINT #12, "if (stop_program) end();"
|
||||||
|
@ -10870,7 +10872,7 @@ DO
|
||||||
|
|
||||||
IF n >= 1 THEN
|
IF n >= 1 THEN
|
||||||
IF firstelement$ = "LET" THEN
|
IF firstelement$ = "LET" THEN
|
||||||
IF n = 1 THEN a$ = "Syntax error": GOTO errmes
|
IF n = 1 THEN a$ = "Syntax error - Expected LET variable = expression (tip: LET is entirely optional)": GOTO errmes
|
||||||
ca$ = RIGHT$(ca$, LEN(ca$) - 4)
|
ca$ = RIGHT$(ca$, LEN(ca$) - 4)
|
||||||
n = n - 1
|
n = n - 1
|
||||||
l$ = SCase$("Let")
|
l$ = SCase$("Let")
|
||||||
|
@ -21462,6 +21464,7 @@ FUNCTION seperateargs (a$, ca$, pass&)
|
||||||
IF Branches = 0 THEN 'All options have been exhausted
|
IF Branches = 0 THEN 'All options have been exhausted
|
||||||
seperateargs_error = 1
|
seperateargs_error = 1
|
||||||
seperateargs_error_message = "Syntax error"
|
seperateargs_error_message = "Syntax error"
|
||||||
|
IF LEN(id2.hr_syntax) > 0 THEN seperateargs_error_message = seperateargs_error_message + " - Reference: " + id2.hr_syntax
|
||||||
EXIT FUNCTION
|
EXIT FUNCTION
|
||||||
END IF
|
END IF
|
||||||
'2)Toggle taken branch to untaken and revert
|
'2)Toggle taken branch to untaken and revert
|
||||||
|
|
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue