1
1
Fork 0
mirror of https://github.com/boxgaming/qbjs.git synced 2024-09-20 04:24:45 +00:00

Fix parser to handle subs with coordinate-style parameters with no space between method name and first parameter (#54)

This commit is contained in:
boxgaming 2023-09-12 16:29:57 -05:00
parent a267679ea8
commit 626efd40d3
2 changed files with 19 additions and 0 deletions

View file

@ -525,6 +525,14 @@ if (QB.halted()) { return; }; firstLine = Math.round(firstLine); lastLine = Math
if ( assignment > 0) {
js = (await func_RemoveSuffix( (await func_ConvertExpression( (await func_Join( parts , asnVarIndex, assignment - 1, " ")) , i)))) + " = " + (await func_ConvertExpression( (await func_Join( parts , assignment + 1, - 1, " ")) , i)) + ";";
} else {
var parendx = 0; /* INTEGER */
parendx = (QB.func_InStr( QB.arrayValue(parts, [ 1]).value , "("));
if ( parendx > 0) {
var sname = ''; /* STRING */ var arg1 = ''; /* STRING */
sname = (QB.func_Mid( QB.arrayValue(parts, [ 1]).value , 1, parendx - 1));
arg1 = (QB.func_Mid( QB.arrayValue(parts, [ 1]).value , parendx));
c = (await func_SLSplit( sname + " " + arg1 + (await func_Join( parts , 2, - 1, " ")) , parts , True));
}
if ((await func_FindMethod( QB.arrayValue(parts, [ 1]).value , m, "SUB")) ) {
js = (await func_ConvertSub( m, (await func_Join( parts , 2, - 1, " ")) , i));
} else {

View file

@ -620,6 +620,17 @@ Sub ConvertLines (firstLine As Integer, lastLine As Integer, functionName As Str
js = RemoveSuffix(ConvertExpression(Join(parts(), asnVarIndex, assignment - 1, " "), i)) + " = " + ConvertExpression(Join(parts(), assignment + 1, -1, " "), i) + ";"
Else
' Check to see if there was no space left between the sub name and initial paren
Dim parendx As Integer
parendx = InStr(parts(1), "(")
If parendx > 0 Then
' If so, resplit the line with a space between
Dim As String sname, arg1
sname = Mid$(parts(1), 1, parendx - 1)
arg1 = Mid$(parts(1), parendx)
c = SLSplit(sname + " " + arg1 + Join(parts(), 2, -1, " "), parts(), True)
End If
If FindMethod(parts(1), m, "SUB") Then
js = ConvertSub(m, Join(parts(), 2, -1, " "), i)
Else