From 56ef8356ba6ab85958063290141ad91a645586cb Mon Sep 17 00:00:00 2001 From: boxgaming <75969133+boxgaming@users.noreply.github.com> Date: Sat, 13 May 2023 09:37:13 -0500 Subject: [PATCH] Fixed Name syntax parsing --- qb2js.js | 136 ++++++++++++++++++++++++++++-------------------- tools/qb2js.bas | 28 +++++++++- 2 files changed, 108 insertions(+), 56 deletions(-) diff --git a/qb2js.js b/qb2js.js index 47f326e..cfef177 100644 --- a/qb2js.js +++ b/qb2js.js @@ -663,6 +663,8 @@ var ConvertSub = null; m.jsname = "QB.sub_Line"; m.sync = False; } + } else if ( m.name == "Name" ) { + js = (await func_CallMethod( m)) + "(" + (await func_ConvertSubName( args, lineNumber)) + ");"; } else if ( m.name == "PSet" || m.name == "Circle" || m.name == "PReset" || m.name == "Paint" ) { js = (await func_CallMethod( m)) + "(" + (await func_ConvertPSet( args, lineNumber)) + ");"; } else if ( m.name == "Print" ) { @@ -921,6 +923,30 @@ var ConvertCls = null; ConvertCls = method + ", " + bgcolor; return ConvertCls; } +async function func_ConvertSubName(args/*STRING*/,lineNumber/*INTEGER*/) { +if (QB.halted()) { return; } +var ConvertSubName = null; + var argc = 0; /* INTEGER */ + var parts = QB.initArray([{l:0,u:0}], ''); /* STRING */ + var asIndex = 0; /* INTEGER */ + argc = (await func_SLSplit2( args, parts)); + var i = 0; /* INTEGER */ + var ___v7904800 = 0; for ( i= 1; i <= argc; i= i + 1) { if (QB.halted()) { return; } ___v7904800++; if (___v7904800 % 100 == 0) { await QB.autoLimit(); } + if ((QB.func_UCase( QB.arrayValue(parts, [ i]).value)) == "AS" ) { + asIndex = i; + } + } + if ( asIndex == 0 || asIndex == argc) { + await sub_AddWarning( lineNumber, "Syntax Error"); + ConvertSubName = "undefined, undefined"; + } else { + var oldname = ''; /* STRING */ var newname = ''; /* STRING */ + oldname = (await func_Join( parts , 1, asIndex - 1, " ")); + newname = (await func_Join( parts , asIndex + 1, - 1, " ")); + ConvertSubName = (await func_ConvertExpression( oldname, lineNumber)) + ", " + (await func_ConvertExpression( newname, lineNumber)); + } +return ConvertSubName; +} async function func_ConvertRandomize(m/*METHOD*/,args/*STRING*/,lineNumber/*INTEGER*/) { if (QB.halted()) { return; } var ConvertRandomize = null; @@ -952,7 +978,7 @@ var ConvertRead = null; var p = ''; /* STRING */ pcount = (await func_ListSplit( args, parts)); var i = 0; /* INTEGER */ - var ___v7904800 = 0; for ( i= 1; i <= pcount; i= i + 1) { if (QB.halted()) { return; } ___v7904800++; if (___v7904800 % 100 == 0) { await QB.autoLimit(); } + var ___v3735362 = 0; for ( i= 1; i <= pcount; i= i + 1) { if (QB.halted()) { return; } ___v3735362++; if (___v3735362 % 100 == 0) { await QB.autoLimit(); } p = (QB.func__Trim( QB.arrayValue(parts, [ i]).value)); vcount = (QB.func_UBound( vars)) + 1; QB.resizeArray(vars, [{l:0,u:vcount}], '', true); /* STRING */ @@ -961,7 +987,7 @@ var ConvertRead = null; vname = await func_GenJSVar(); js = "var " + vname + " = new Array(" + (QB.func_Str( (QB.func_UBound( vars)))) + "); "; js = js + (await func_CallMethod( m)) + "(" + vname + "); "; - var ___v3735362 = 0; for ( i= 1; i <= (QB.func_UBound( vars)); i= i + 1) { if (QB.halted()) { return; } ___v3735362++; if (___v3735362 % 100 == 0) { await QB.autoLimit(); } + var ___v9619532 = 0; for ( i= 1; i <= (QB.func_UBound( vars)); i= i + 1) { if (QB.halted()) { return; } ___v9619532++; if (___v9619532 % 100 == 0) { await QB.autoLimit(); } js = js + (await func_ConvertExpression( QB.arrayValue(vars, [ i]).value , lineNumber)) + " = " + vname + "[" + (QB.func_Str( i - 1)) + "]; "; } ConvertRead = js; @@ -1078,7 +1104,7 @@ var ConvertPrint = null; } js = js + "["; var i = 0; /* INTEGER */ - var ___v9619532 = 0; for ( i= startIdx; i <= pcount; i= i + 1) { if (QB.halted()) { return; } ___v9619532++; if (___v9619532 % 100 == 0) { await QB.autoLimit(); } + var ___v8714458 = 0; for ( i= startIdx; i <= pcount; i= i + 1) { if (QB.halted()) { return; } ___v8714458++; if (___v8714458 % 100 == 0) { await QB.autoLimit(); } if ( i > startIdx) { js = js + ","; } @@ -1117,7 +1143,7 @@ var ConvertWrite = null; } js = js + "["; var i = 0; /* INTEGER */ - var ___v8714458 = 0; for ( i= startIdx; i <= pcount; i= i + 1) { if (QB.halted()) { return; } ___v8714458++; if (___v8714458 % 100 == 0) { await QB.autoLimit(); } + var ___v562369 = 0; for ( i= startIdx; i <= pcount; i= i + 1) { if (QB.halted()) { return; } ___v562369++; if (___v562369 % 100 == 0) { await QB.autoLimit(); } if ( i > startIdx) { js = js + ","; } @@ -1205,7 +1231,7 @@ var ConvertInput = null; var p = ''; /* STRING */ pcount = (await func_PrintSplit( args, parts)); var i = 0; /* INTEGER */ - var ___v562369 = 0; for ( i= 1; i <= pcount; i= i + 1) { if (QB.halted()) { return; } ___v562369++; if (___v562369 % 100 == 0) { await QB.autoLimit(); } + var ___v9495566 = 0; for ( i= 1; i <= pcount; i= i + 1) { if (QB.halted()) { return; } ___v9495566++; if (___v9495566 % 100 == 0) { await QB.autoLimit(); } p = (QB.func__Trim( QB.arrayValue(parts, [ i]).value)); if ( p == ";" ) { if ( i == 1) { @@ -1224,7 +1250,7 @@ var ConvertInput = null; vname = await func_GenJSVar(); js = "var " + vname + " = new Array(" + (QB.func_Str( (QB.func_UBound( vars)))) + "); "; js = js + (await func_CallMethod( m)) + "(" + vname + ", " + preventNewline + ", " + addQuestionPrompt + ", " + prompt + "); "; - var ___v9495566 = 0; for ( i= 1; i <= (QB.func_UBound( vars)); i= i + 1) { if (QB.halted()) { return; } ___v9495566++; if (___v9495566 % 100 == 0) { await QB.autoLimit(); } + var ___v3640187 = 0; for ( i= 1; i <= (QB.func_UBound( vars)); i= i + 1) { if (QB.halted()) { return; } ___v3640187++; if (___v3640187 % 100 == 0) { await QB.autoLimit(); } var vartype = ''; /* STRING */ vartype = (await func_GetVarType( QB.arrayValue(vars, [ i]).value)); if ( vartype == "_BIT" || vartype == "_BYTE" || vartype == "INTEGER" || vartype == "LONG" || vartype == "_INTEGER64" || vartype == "_OFFSET" || vartype == "_UNSIGNED _BIT" || vartype == "_UNSIGNED _BYTE" || vartype == "_UNSIGNED INTEGER" || vartype == "_UNSIGNED LONG" || vartype == "_UNSIGNED _INTEGER64" || vartype == "_UNSIGNED _OFFSET" ) { @@ -1259,7 +1285,7 @@ var ConvertFileInput = null; js = "var " + vname + " = new Array(" + (QB.func_Str( (QB.func_UBound( parts)) - 1)) + "); "; js = js + (await func_CallMethod( m)) + "(" + fh + ", " + vname + "); "; var i = 0; /* INTEGER */ - var ___v3640187 = 0; for ( i= 2; i <= (QB.func_UBound( parts)); i= i + 1) { if (QB.halted()) { return; } ___v3640187++; if (___v3640187 % 100 == 0) { await QB.autoLimit(); } + var ___v5248684 = 0; for ( i= 2; i <= (QB.func_UBound( parts)); i= i + 1) { if (QB.halted()) { return; } ___v5248684++; if (___v5248684 % 100 == 0) { await QB.autoLimit(); } var vartype = ''; /* STRING */ vartype = (await func_GetVarType( QB.arrayValue(parts, [ i]).value)); if ( vartype == "_BIT" || vartype == "_BYTE" || vartype == "INTEGER" || vartype == "LONG" || vartype == "_INTEGER64" || vartype == "_OFFSET" || vartype == "_UNSIGNED _BIT" || vartype == "_UNSIGNED _BYTE" || vartype == "_UNSIGNED INTEGER" || vartype == "_UNSIGNED LONG" || vartype == "_UNSIGNED _INTEGER64" || vartype == "_UNSIGNED _OFFSET" ) { @@ -1311,8 +1337,8 @@ var GetVarType = null; typeId = (await func_FindTypeId( v.type)); var i = 0; /* INTEGER */ var j = 0; /* INTEGER */ - var ___v5248684 = 0; for ( i= 2; i <= pcount; i= i + 1) { if (QB.halted()) { return; } ___v5248684++; if (___v5248684 % 100 == 0) { await QB.autoLimit(); } - var ___v7671116 = 0; for ( j= 1; j <= (QB.func_UBound( typeVars)); j= j + 1) { if (QB.halted()) { return; } ___v7671116++; if (___v7671116 % 100 == 0) { await QB.autoLimit(); } + var ___v7671116 = 0; for ( i= 2; i <= pcount; i= i + 1) { if (QB.halted()) { return; } ___v7671116++; if (___v7671116 % 100 == 0) { await QB.autoLimit(); } + var ___v535045 = 0; for ( j= 1; j <= (QB.func_UBound( typeVars)); j= j + 1) { if (QB.halted()) { return; } ___v535045++; if (___v535045 % 100 == 0) { await QB.autoLimit(); } if (QB.arrayValue(typeVars, [ j]).value .typeId == typeId && QB.arrayValue(typeVars, [ j]).value .name == QB.arrayValue(parts, [ i]).value ) { vartype = QB.arrayValue(typeVars, [ j]).value .type; typeId = (await func_FindTypeId( vartype)); @@ -1359,7 +1385,7 @@ var FindParamChar = null; var quote = 0; /* INTEGER */ var paren = 0; /* INTEGER */ var i = 0; /* INTEGER */ - var ___v535045 = 0; for ( i= 1; i <= (QB.func_Len( s)); i= i + 1) { if (QB.halted()) { return; } ___v535045++; if (___v535045 % 100 == 0) { await QB.autoLimit(); } + var ___v5924582 = 0; for ( i= 1; i <= (QB.func_Len( s)); i= i + 1) { if (QB.halted()) { return; } ___v5924582++; if (___v5924582 % 100 == 0) { await QB.autoLimit(); } c = (QB.func_Mid( s, i, 1)); if ( c == (QB.func_Chr( 34)) ) { quote = ! quote; @@ -1400,7 +1426,7 @@ var DeclareVar = null; var preserve = ''; /* STRING */ preserve = "false"; var i = 0; /* INTEGER */ - var ___v5924582 = 0; for ( i= 1; i <= (QB.func_UBound( parts)); i= i + 1) { if (QB.halted()) { return; } ___v5924582++; if (___v5924582 % 100 == 0) { await QB.autoLimit(); } + var ___v4687001 = 0; for ( i= 1; i <= (QB.func_UBound( parts)); i= i + 1) { if (QB.halted()) { return; } ___v4687001++; if (___v4687001 % 100 == 0) { await QB.autoLimit(); } if ((QB.func_UCase( QB.arrayValue(parts, [ i]).value)) == "AS" ) { asIdx = i; } @@ -1421,7 +1447,7 @@ var DeclareVar = null; } bvar.typeId = (await func_FindTypeId( bvar.type)); vnamecount = (await func_ListSplit( (await func_Join( parts , nextIdx, - 1, " ")) , varnames)); - var ___v4687001 = 0; for ( i= 1; i <= vnamecount; i= i + 1) { if (QB.halted()) { return; } ___v4687001++; if (___v4687001 % 100 == 0) { await QB.autoLimit(); } + var ___v2981654 = 0; for ( i= 1; i <= vnamecount; i= i + 1) { if (QB.halted()) { return; } ___v2981654++; if (___v2981654 % 100 == 0) { await QB.autoLimit(); } vname = (QB.func__Trim( QB.arrayValue(varnames, [ i]).value)); pstart = (QB.func_InStr( vname, "(")); if ( pstart > 0) { @@ -1456,7 +1482,7 @@ var DeclareVar = null; var vpartcount = 0; /* INTEGER */ var vparts = QB.initArray([{l:0,u:0}], ''); /* STRING */ nextIdx = 0; - var ___v2981654 = 0; for ( i= 1; i <= (QB.func_UBound( parts)); i= i + 1) { if (QB.halted()) { return; } ___v2981654++; if (___v2981654 % 100 == 0) { await QB.autoLimit(); } + var ___v6226967 = 0; for ( i= 1; i <= (QB.func_UBound( parts)); i= i + 1) { if (QB.halted()) { return; } ___v6226967++; if (___v6226967 % 100 == 0) { await QB.autoLimit(); } var p = ''; /* STRING */ p = (QB.func_UCase( QB.arrayValue(parts, [ i]).value)); if ( p == "DIM" || p == "REDIM" || p == "SHARED" || p == "_PRESERVE" ) { @@ -1464,7 +1490,7 @@ var DeclareVar = null; } } vnamecount = (await func_ListSplit( (await func_Join( parts , nextIdx, - 1, " ")) , varnames)); - var ___v6226967 = 0; for ( i= 1; i <= vnamecount; i= i + 1) { if (QB.halted()) { return; } ___v6226967++; if (___v6226967 % 100 == 0) { await QB.autoLimit(); } + var ___v6478212 = 0; for ( i= 1; i <= vnamecount; i= i + 1) { if (QB.halted()) { return; } ___v6478212++; if (___v6478212 % 100 == 0) { await QB.autoLimit(); } vpartcount = (await func_SLSplit2( QB.arrayValue(varnames, [ i]).value , vparts)); if ( vpartcount == 1) { bvar.type = (await func_DataTypeFromName( QB.arrayValue(vparts, [ 1]).value)); @@ -1517,7 +1543,7 @@ var FormatArraySize = null; var pcount = 0; /* INTEGER */ pcount = (await func_ListSplit( sizeString, parts)); var i = 0; /* INTEGER */ - var ___v6478212 = 0; for ( i= 1; i <= pcount; i= i + 1) { if (QB.halted()) { return; } ___v6478212++; if (___v6478212 % 100 == 0) { await QB.autoLimit(); } + var ___v2637929 = 0; for ( i= 1; i <= pcount; i= i + 1) { if (QB.halted()) { return; } ___v2637929++; if (___v2637929 % 100 == 0) { await QB.autoLimit(); } var subparts = QB.initArray([{l:0,u:0}], ''); /* STRING */ var scount = 0; /* INTEGER */ scount = (await func_SLSplit2( QB.arrayValue(parts, [ i]).value , subparts)); @@ -1528,7 +1554,7 @@ var FormatArraySize = null; sizeParams = sizeParams + "{l:0,u:" + QB.arrayValue(subparts, [ 1]).value + "}"; } else { var toIndex = 0; /* INTEGER */ - var ___v2637929 = 0; for ( toIndex= 0; toIndex <= scount; toIndex= toIndex + 1) { if (QB.halted()) { return; } ___v2637929++; if (___v2637929 % 100 == 0) { await QB.autoLimit(); } + var ___v2793420 = 0; for ( toIndex= 0; toIndex <= scount; toIndex= toIndex + 1) { if (QB.halted()) { return; } ___v2793420++; if (___v2793420 % 100 == 0) { await QB.autoLimit(); } if ("TO" == (QB.func_UCase( QB.arrayValue(subparts, [ toIndex]).value)) ) { break; } @@ -1557,7 +1583,7 @@ var InitTypeValue = null; var typeId = 0; /* INTEGER */ typeId = (await func_FindTypeId( vtype)); var i = 0; /* INTEGER */ - var ___v2793420 = 0; for ( i= 1; i <= (QB.func_UBound( typeVars)); i= i + 1) { if (QB.halted()) { return; } ___v2793420++; if (___v2793420 % 100 == 0) { await QB.autoLimit(); } + var ___v8298016 = 0; for ( i= 1; i <= (QB.func_UBound( typeVars)); i= i + 1) { if (QB.halted()) { return; } ___v8298016++; if (___v8298016 % 100 == 0) { await QB.autoLimit(); } if ( typeId == QB.arrayValue(typeVars, [ i]).value .typeId) { value = value + QB.arrayValue(typeVars, [ i]).value .name + ":" + (await func_InitTypeValue( QB.arrayValue(typeVars, [ i]).value .type)) + ","; } @@ -1573,7 +1599,7 @@ var FindTypeId = null; var id = 0; /* INTEGER */ id = - 1; var i = 0; /* INTEGER */ - var ___v8298016 = 0; for ( i= 1; i <= (QB.func_UBound( types)); i= i + 1) { if (QB.halted()) { return; } ___v8298016++; if (___v8298016 % 100 == 0) { await QB.autoLimit(); } + var ___v8246022 = 0; for ( i= 1; i <= (QB.func_UBound( types)); i= i + 1) { if (QB.halted()) { return; } ___v8246022++; if (___v8246022 % 100 == 0) { await QB.autoLimit(); } if (QB.arrayValue(types, [ i]).value .name == typeName) { id = i; break; @@ -1595,7 +1621,7 @@ var ConvertExpression = null; var stringLiteral = 0; /* INTEGER */ var i = 0; /* INTEGER */ i = 1; - var ___v8246022 = 0; while ( i <= (QB.func_Len( ex))) { if (QB.halted()) { return; }___v8246022++; if (___v8246022 % 100 == 0) { await QB.autoLimit(); } + var ___v5891630 = 0; while ( i <= (QB.func_Len( ex))) { if (QB.halted()) { return; }___v5891630++; if (___v5891630 % 100 == 0) { await QB.autoLimit(); } c = (QB.func_Mid( ex, i, 1)); if ( c == (QB.func_Chr( 34)) ) { js = js + c; @@ -1659,7 +1685,7 @@ var ConvertExpression = null; var stringLiteral2 = 0; /* INTEGER */ stringLiteral2 = False; i = i + 1; - var ___v5891630 = 0; while (! done && i <= (QB.func_Len( ex))) { if (QB.halted()) { return; }___v5891630++; if (___v5891630 % 100 == 0) { await QB.autoLimit(); } + var ___v9860932 = 0; while (! done && i <= (QB.func_Len( ex))) { if (QB.halted()) { return; }___v9860932++; if (___v9860932 % 100 == 0) { await QB.autoLimit(); } c2 = (QB.func_Mid( ex, i, 1)); if ( c2 == (QB.func_Chr( 34)) ) { stringLiteral2 = ! stringLiteral2; @@ -1717,7 +1743,7 @@ var ConvertMethodParams = null; var argc = 0; /* INTEGER */ argc = (await func_ListSplit( args, params)); var i = 0; /* INTEGER */ - var ___v9860932 = 0; for ( i= 1; i <= argc; i= i + 1) { if (QB.halted()) { return; } ___v9860932++; if (___v9860932 % 100 == 0) { await QB.autoLimit(); } + var ___v9109643 = 0; for ( i= 1; i <= argc; i= i + 1) { if (QB.halted()) { return; } ___v9109643++; if (___v9109643 % 100 == 0) { await QB.autoLimit(); } if ( i > 1) { js = js + ","; } @@ -1749,7 +1775,7 @@ var FindVariable = null; var i = 0; /* INTEGER */ var fvarname = ''; /* STRING */ fvarname = (QB.func__Trim( (QB.func_UCase( (await func_RemoveSuffix( varname)))))); - var ___v9109643 = 0; for ( i= 1; i <= (QB.func_UBound( localVars)); i= i + 1) { if (QB.halted()) { return; } ___v9109643++; if (___v9109643 % 100 == 0) { await QB.autoLimit(); } + var ___v2268660 = 0; for ( i= 1; i <= (QB.func_UBound( localVars)); i= i + 1) { if (QB.halted()) { return; } ___v2268660++; if (___v2268660 % 100 == 0) { await QB.autoLimit(); } if (QB.arrayValue(localVars, [ i]).value .isArray == isArray && (QB.func_UCase( QB.arrayValue(localVars, [ i]).value .name)) == fvarname) { found = True; bvar.type = QB.arrayValue(localVars, [ i]).value .type; @@ -1763,7 +1789,7 @@ var FindVariable = null; } } if (! found) { - var ___v2268660 = 0; for ( i= 1; i <= (QB.func_UBound( globalVars)); i= i + 1) { if (QB.halted()) { return; } ___v2268660++; if (___v2268660 % 100 == 0) { await QB.autoLimit(); } + var ___v6951155 = 0; for ( i= 1; i <= (QB.func_UBound( globalVars)); i= i + 1) { if (QB.halted()) { return; } ___v6951155++; if (___v6951155 % 100 == 0) { await QB.autoLimit(); } if (QB.arrayValue(globalVars, [ i]).value .isArray == isArray && (QB.func_UCase( QB.arrayValue(globalVars, [ i]).value .name)) == fvarname) { found = True; bvar.type = QB.arrayValue(globalVars, [ i]).value .type; @@ -1786,7 +1812,7 @@ var FindMethod = null; var found = 0; /* INTEGER */ found = False; var i = 0; /* INTEGER */ - var ___v6951155 = 0; for ( i= 1; i <= (QB.func_UBound( methods)); i= i + 1) { if (QB.halted()) { return; } ___v6951155++; if (___v6951155 % 100 == 0) { await QB.autoLimit(); } + var ___v9800032 = 0; for ( i= 1; i <= (QB.func_UBound( methods)); i= i + 1) { if (QB.halted()) { return; } ___v9800032++; if (___v9800032 % 100 == 0) { await QB.autoLimit(); } if (QB.arrayValue(methods, [ i]).value .uname == (QB.func__Trim( (QB.func_UCase( (await func_RemoveSuffix( mname)))))) && QB.arrayValue(methods, [ i]).value .type == t) { found = True; m.line = QB.arrayValue(methods, [ i]).value .line; @@ -1802,7 +1828,7 @@ var FindMethod = null; } } if (! found) { - var ___v9800032 = 0; for ( i= 1; i <= (QB.func_UBound( exportMethods)); i= i + 1) { if (QB.halted()) { return; } ___v9800032++; if (___v9800032 % 100 == 0) { await QB.autoLimit(); } + var ___v2439314 = 0; for ( i= 1; i <= (QB.func_UBound( exportMethods)); i= i + 1) { if (QB.halted()) { return; } ___v2439314++; if (___v2439314 % 100 == 0) { await QB.autoLimit(); } if (QB.arrayValue(exportMethods, [ i]).value .uname == (QB.func__Trim( (QB.func_UCase( (await func_RemoveSuffix( mname)))))) && QB.arrayValue(exportMethods, [ i]).value .type == t) { found = True; m.line = QB.arrayValue(exportMethods, [ i]).value .line; @@ -1825,7 +1851,7 @@ async function sub_ConvertMethods() { if (QB.halted()) { return; } await sub_AddJSLine( 0, ""); var i = 0; /* INTEGER */ - var ___v2439314 = 0; for ( i= 1; i <= (QB.func_UBound( methods)); i= i + 1) { if (QB.halted()) { return; } ___v2439314++; if (___v2439314 % 100 == 0) { await QB.autoLimit(); } + var ___v5338731 = 0; for ( i= 1; i <= (QB.func_UBound( methods)); i= i + 1) { if (QB.halted()) { return; } ___v5338731++; if (___v5338731 % 100 == 0) { await QB.autoLimit(); } if ((QB.arrayValue(methods, [ i]).value .line != 0) ) { var lastLine = 0; /* INTEGER */ lastLine = QB.arrayValue(methods, [ i + 1]).value .line - 1; @@ -1840,7 +1866,7 @@ if (QB.halted()) { return; } var c = 0; /* INTEGER */ c = (await func_Split( QB.arrayValue(methods, [ i]).value .args, "," , args)); var a = 0; /* INTEGER */ - var ___v5338731 = 0; for ( a= 1; a <= c; a= a + 1) { if (QB.halted()) { return; } ___v5338731++; if (___v5338731 % 100 == 0) { await QB.autoLimit(); } + var ___v1063697 = 0; for ( a= 1; a <= c; a= a + 1) { if (QB.halted()) { return; } ___v1063697++; if (___v1063697 % 100 == 0) { await QB.autoLimit(); } var v = 0; /* INTEGER */ var parts = QB.initArray([{l:0,u:0}], ''); /* STRING */ v = (await func_Split( QB.arrayValue(args, [ a]).value , ":" , parts)); @@ -1873,7 +1899,7 @@ if (QB.halted()) { return; } await sub_AddJSLine( lastLine, "}"); } } - var ___v1063697 = 0; for ( i= 1; i <= (QB.func_UBound( exportLines)); i= i + 1) { if (QB.halted()) { return; } ___v1063697++; if (___v1063697 % 100 == 0) { await QB.autoLimit(); } + var ___v9994146 = 0; for ( i= 1; i <= (QB.func_UBound( exportLines)); i= i + 1) { if (QB.halted()) { return; } ___v9994146++; if (___v9994146 % 100 == 0) { await QB.autoLimit(); } await sub_AddJSLine( i, QB.arrayValue(exportLines, [ i]).value); } QB.resizeArray(exportLines, [{l:0,u:0}], '', false); /* STRING */ @@ -1884,13 +1910,13 @@ if (QB.halted()) { return; } var lineIndex = 0; /* INTEGER */ var rawJS = 0; /* SINGLE */ QB.sub_Open(filename, QB.INPUT, 1); - var ___v9994146 = 0; while (!((QB.func_EOF( 1)))) { if (QB.halted()) { return; }___v9994146++; if (___v9994146 % 100 == 0) { await QB.autoLimit(); } - var ___v6761759 = new Array(1); await QB.sub_LineInputFromFile(1, ___v6761759); fline = ___v6761759[0]; + var ___v6761759 = 0; while (!((QB.func_EOF( 1)))) { if (QB.halted()) { return; }___v6761759++; if (___v6761759 % 100 == 0) { await QB.autoLimit(); } + var ___v157039 = new Array(1); await QB.sub_LineInputFromFile(1, ___v157039); fline = ___v157039[0]; lineIndex = lineIndex + 1; if ((QB.func__Trim( fline)) != "" ) { - var ___v157039 = 0; while ((await func_EndsWith( fline, " _"))) { if (QB.halted()) { return; }___v157039++; if (___v157039 % 100 == 0) { await QB.autoLimit(); } + var ___v5751838 = 0; while ((await func_EndsWith( fline, " _"))) { if (QB.halted()) { return; }___v5751838++; if (___v5751838 % 100 == 0) { await QB.autoLimit(); } var nextLine = ''; /* STRING */ - var ___v5751838 = new Array(1); await QB.sub_LineInputFromFile(1, ___v5751838); nextLine = ___v5751838[0]; + var ___v1000522 = new Array(1); await QB.sub_LineInputFromFile(1, ___v1000522); nextLine = ___v1000522[0]; fline = (QB.func_Left( fline, (QB.func_Len( fline)) - 1)) + nextLine; } rawJS = (await func_ReadLine( lineIndex, fline, rawJS)); @@ -1905,7 +1931,7 @@ if (QB.halted()) { return; } var lcount = 0; /* INTEGER */ var i = 0; /* INTEGER */ lcount = (await func_Split( sourceText, await func_LF(), sourceLines)); - var ___v1000522 = 0; for ( i= 1; i <= lcount; i= i + 1) { if (QB.halted()) { return; } ___v1000522++; if (___v1000522 % 100 == 0) { await QB.autoLimit(); } + var ___v1030226 = 0; for ( i= 1; i <= lcount; i= i + 1) { if (QB.halted()) { return; } ___v1030226++; if (___v1030226 % 100 == 0) { await QB.autoLimit(); } var fline = ''; /* STRING */ fline = QB.arrayValue(sourceLines, [ i]).value; if ((QB.func__Trim( fline)) != "" ) { @@ -1929,7 +1955,7 @@ if (QB.halted()) { return; } continue; } } - var ___v1030226 = 0; while ((await func_EndsWith( fline, "_"))) { if (QB.halted()) { return; }___v1030226++; if (___v1030226 % 100 == 0) { await QB.autoLimit(); } + var ___v7988844 = 0; while ((await func_EndsWith( fline, "_"))) { if (QB.halted()) { return; }___v7988844++; if (___v7988844 % 100 == 0) { await QB.autoLimit(); } i = i + 1; var nextLine = ''; /* STRING */ nextLine = QB.arrayValue(sourceLines, [ i]).value; @@ -1945,7 +1971,7 @@ var ReadLine = null; var quoteDepth = 0; /* INTEGER */ quoteDepth = 0; var i = 0; /* INTEGER */ - var ___v7988844 = 0; for ( i= 1; i <= (QB.func_Len( fline)); i= i + 1) { if (QB.halted()) { return; } ___v7988844++; if (___v7988844 % 100 == 0) { await QB.autoLimit(); } + var ___v2844803 = 0; for ( i= 1; i <= (QB.func_Len( fline)); i= i + 1) { if (QB.halted()) { return; } ___v2844803++; if (___v2844803 % 100 == 0) { await QB.autoLimit(); } var c = ''; /* STRING */ var c4 = ''; /* STRING */ c = (QB.func_Mid( fline, i, 1)); c4 = (QB.func_UCase( (QB.func_Mid( fline, i, 4)))); @@ -2005,7 +2031,7 @@ var ReadLine = null; var dcount = 0; /* INTEGER */ var de = QB.initArray([{l:0,u:0}], ''); /* STRING */ dcount = (await func_ListSplit( dstr, de)); - var ___v2844803 = 0; for ( i= 1; i <= dcount; i= i + 1) { if (QB.halted()) { return; } ___v2844803++; if (___v2844803 % 100 == 0) { await QB.autoLimit(); } + var ___v456492 = 0; for ( i= 1; i <= dcount; i= i + 1) { if (QB.halted()) { return; } ___v456492++; if (___v456492 % 100 == 0) { await QB.autoLimit(); } index = (QB.func_UBound( dataArray)) + 1; QB.resizeArray(dataArray, [{l:0,u:index}], '', true); /* STRING */ QB.arrayValue(dataArray, [ index]).value = QB.arrayValue(de, [ i]).value; @@ -2013,7 +2039,7 @@ var ReadLine = null; return ReadLine; } var ifIdx = 0; /* INTEGER */ var thenIdx = 0; /* INTEGER */ var elseIdx = 0; /* INTEGER */ - var ___v456492 = 0; for ( i= 1; i <= wcount; i= i + 1) { if (QB.halted()) { return; } ___v456492++; if (___v456492 % 100 == 0) { await QB.autoLimit(); } + var ___v2957728 = 0; for ( i= 1; i <= wcount; i= i + 1) { if (QB.halted()) { return; } ___v2957728++; if (___v2957728 % 100 == 0) { await QB.autoLimit(); } word = (QB.func_UCase( QB.arrayValue(words, [ i]).value)); if ( word == "IF" ) { ifIdx = i; @@ -2043,7 +2069,7 @@ if (QB.halted()) { return; } var quoteDepth = 0; /* INTEGER */ quoteDepth = 0; var i = 0; /* INTEGER */ - var ___v2957728 = 0; for ( i= 1; i <= (QB.func_Len( fline)); i= i + 1) { if (QB.halted()) { return; } ___v2957728++; if (___v2957728 % 100 == 0) { await QB.autoLimit(); } + var ___v3820107 = 0; for ( i= 1; i <= (QB.func_Len( fline)); i= i + 1) { if (QB.halted()) { return; } ___v3820107++; if (___v3820107 % 100 == 0) { await QB.autoLimit(); } var c = ''; /* STRING */ c = (QB.func_Mid( fline, i, 1)); if ( c == (QB.func_Chr( 34)) ) { @@ -2067,7 +2093,7 @@ if (QB.halted()) { return; } var pcount = 0; /* INTEGER */ var rawJS = 0; /* INTEGER */ var parts = QB.initArray([{l:0,u:0}], ''); /* STRING */ - var ___v3820107 = 0; for ( i= 1; i <= (QB.func_UBound( lines)); i= i + 1) { if (QB.halted()) { return; } ___v3820107++; if (___v3820107 % 100 == 0) { await QB.autoLimit(); } + var ___v3009705 = 0; for ( i= 1; i <= (QB.func_UBound( lines)); i= i + 1) { if (QB.halted()) { return; } ___v3009705++; if (___v3009705 % 100 == 0) { await QB.autoLimit(); } pcount = (await func_Split( QB.arrayValue(lines, [ i]).value .text, " " , parts)); var word = ''; /* STRING */ word = (QB.func_UCase( QB.arrayValue(parts, [ 1]).value)); @@ -2111,7 +2137,7 @@ if (QB.halted()) { return; } var a = 0; /* INTEGER */ var args = ''; /* STRING */ args = ""; - var ___v3009705 = 0; for ( a= 1; a <= m.argc; a= a + 1) { if (QB.halted()) { return; } ___v3009705++; if (___v3009705 % 100 == 0) { await QB.autoLimit(); } + var ___v9485711 = 0; for ( a= 1; a <= m.argc; a= a + 1) { if (QB.halted()) { return; } ___v9485711++; if (___v9485711 % 100 == 0) { await QB.autoLimit(); } var aparts = QB.initArray([{l:0,u:0}], ''); /* STRING */ var apcount = 0; /* INTEGER */ var argname = ''; /* STRING */ @@ -2147,7 +2173,7 @@ var Split = null; if ( delimiter == " " ) { cstr = (QB.func_RTrim( (QB.func_LTrim( cstr)))); p = (QB.func_InStr( cstr, " ")); - var ___v9485711 = 0; while ( p > 0) { if (QB.halted()) { return; }___v9485711++; if (___v9485711 % 100 == 0) { await QB.autoLimit(); } + var ___v9798294 = 0; while ( p > 0) { if (QB.halted()) { return; }___v9798294++; if (___v9798294 % 100 == 0) { await QB.autoLimit(); } cstr = (QB.func_Mid( cstr, 1, p - 1)) + (QB.func_Mid( cstr, p + 1)); p = (QB.func_InStr( cstr, " ")); } @@ -2155,7 +2181,7 @@ var Split = null; curpos = 1; arrpos = 0; dpos = (QB.func_InStr( curpos, cstr, delimiter)); - var ___v9798294 = 0; while (!( dpos == 0)) { if (QB.halted()) { return; }___v9798294++; if (___v9798294 % 100 == 0) { await QB.autoLimit(); } + var ___v4013744 = 0; while (!( dpos == 0)) { if (QB.halted()) { return; }___v4013744++; if (___v4013744 % 100 == 0) { await QB.autoLimit(); } arrpos = arrpos + 1; QB.resizeArray(results, [{l:0,u:arrpos}], '', true); /* STRING */ QB.arrayValue(results, [ arrpos]).value = (QB.func_Mid( cstr, curpos, dpos - curpos)); @@ -2180,7 +2206,7 @@ var SLSplit = null; var result = ''; /* STRING */ var count = 0; /* INTEGER */ var i = 0; /* INTEGER */ - var ___v4013744 = 0; for ( i= 1; i <= (QB.func_Len( cstr)); i= i + 1) { if (QB.halted()) { return; } ___v4013744++; if (___v4013744 % 100 == 0) { await QB.autoLimit(); } + var ___v2782800 = 0; for ( i= 1; i <= (QB.func_Len( cstr)); i= i + 1) { if (QB.halted()) { return; } ___v2782800++; if (___v2782800 % 100 == 0) { await QB.autoLimit(); } var c = ''; /* STRING */ var c2 = ''; /* STRING */ c = (QB.func_Mid( cstr, i, 1)); c2 = (QB.func_Mid( cstr, i, 2)); @@ -2282,7 +2308,7 @@ var SLSplit2 = null; var paren = 0; /* INTEGER */ var count = 0; /* INTEGER */ var i = 0; /* INTEGER */ - var ___v2782800 = 0; for ( i= 1; i <= (QB.func_Len( cstr)); i= i + 1) { if (QB.halted()) { return; } ___v2782800++; if (___v2782800 % 100 == 0) { await QB.autoLimit(); } + var ___v1604415 = 0; for ( i= 1; i <= (QB.func_Len( cstr)); i= i + 1) { if (QB.halted()) { return; } ___v1604415++; if (___v1604415 % 100 == 0) { await QB.autoLimit(); } var c = ''; /* STRING */ c = (QB.func_Mid( cstr, i, 1)); if ( c == (QB.func_Chr( 34)) ) { @@ -2331,7 +2357,7 @@ var ListSplit = null; var count = 0; /* INTEGER */ var paren = 0; /* INTEGER */ var i = 0; /* INTEGER */ - var ___v1604415 = 0; for ( i= 1; i <= (QB.func_Len( cstr)); i= i + 1) { if (QB.halted()) { return; } ___v1604415++; if (___v1604415 % 100 == 0) { await QB.autoLimit(); } + var ___v1628216 = 0; for ( i= 1; i <= (QB.func_Len( cstr)); i= i + 1) { if (QB.halted()) { return; } ___v1628216++; if (___v1628216 % 100 == 0) { await QB.autoLimit(); } var c = ''; /* STRING */ c = (QB.func_Mid( cstr, i, 1)); if ( c == (QB.func_Chr( 34)) ) { @@ -2376,7 +2402,7 @@ var PrintSplit = null; var count = 0; /* INTEGER */ var paren = 0; /* INTEGER */ var i = 0; /* INTEGER */ - var ___v1628216 = 0; for ( i= 1; i <= (QB.func_Len( cstr)); i= i + 1) { if (QB.halted()) { return; } ___v1628216++; if (___v1628216 % 100 == 0) { await QB.autoLimit(); } + var ___v6465872 = 0; for ( i= 1; i <= (QB.func_Len( cstr)); i= i + 1) { if (QB.halted()) { return; } ___v6465872++; if (___v6465872 % 100 == 0) { await QB.autoLimit(); } var c = ''; /* STRING */ c = (QB.func_Mid( cstr, i, 1)); if ( c == (QB.func_Chr( 34)) ) { @@ -2420,7 +2446,7 @@ if (QB.halted()) { return; } await QB.sub_Print(["Methods"]); await QB.sub_Print(["------------------------------------------------------------"]); var i = 0; /* INTEGER */ - var ___v6465872 = 0; for ( i= 1; i <= (QB.func_UBound( methods)); i= i + 1) { if (QB.halted()) { return; } ___v6465872++; if (___v6465872 % 100 == 0) { await QB.autoLimit(); } + var ___v4100732 = 0; for ( i= 1; i <= (QB.func_UBound( methods)); i= i + 1) { if (QB.halted()) { return; } ___v4100732++; if (___v4100732 % 100 == 0) { await QB.autoLimit(); } var m = {line:0,type:'',returnType:'',name:'',uname:'',argc:0,args:'',jsname:'',sync:0}; /* METHOD */ m = QB.arrayValue(methods, [ i]).value; await QB.sub_Print([(QB.func_Str( m.line)) + ": " + m.type + " - " + m.name + " [" + m.jsname + "] - " + m.returnType + " - " + m.args]); @@ -2432,12 +2458,12 @@ if (QB.halted()) { return; } await QB.sub_Print(["Types"]); await QB.sub_Print(["------------------------------------------------------------"]); var i = 0; /* INTEGER */ - var ___v4100732 = 0; for ( i= 1; i <= (QB.func_UBound( types)); i= i + 1) { if (QB.halted()) { return; } ___v4100732++; if (___v4100732 % 100 == 0) { await QB.autoLimit(); } + var ___v4127668 = 0; for ( i= 1; i <= (QB.func_UBound( types)); i= i + 1) { if (QB.halted()) { return; } ___v4127668++; if (___v4127668 % 100 == 0) { await QB.autoLimit(); } var t = {line:0,name:'',argc:0,args:''}; /* QBTYPE */ t = QB.arrayValue(types, [ i]).value; await QB.sub_Print([(QB.func_Str( t.line)) + ": " + t.name]); var v = 0; /* INTEGER */ - var ___v4127668 = 0; for ( v= 1; v <= (QB.func_UBound( typeVars)); v= v + 1) { if (QB.halted()) { return; } ___v4127668++; if (___v4127668 % 100 == 0) { await QB.autoLimit(); } + var ___v7127304 = 0; for ( v= 1; v <= (QB.func_UBound( typeVars)); v= v + 1) { if (QB.halted()) { return; } ___v7127304++; if (___v7127304 % 100 == 0) { await QB.autoLimit(); } if (QB.arrayValue(typeVars, [ i]).value .typeId == i) { await QB.sub_Print([" -> " + QB.arrayValue(typeVars, [ v]).value .name + ": " + QB.arrayValue(typeVars, [ v]).value .type]); } @@ -2646,7 +2672,7 @@ if (QB.halted()) { return; } var pairs = QB.initArray([{l:0,u:0}], ''); /* STRING */ count = (await func_Split( args, "," , pairs)); var i = 0; /* INTEGER */ - var ___v7127304 = 0; for ( i= 1; i <= (QB.func_UBound( pairs)); i= i + 1) { if (QB.halted()) { return; } ___v7127304++; if (___v7127304 % 100 == 0) { await QB.autoLimit(); } + var ___v3262062 = 0; for ( i= 1; i <= (QB.func_UBound( pairs)); i= i + 1) { if (QB.halted()) { return; } ___v3262062++; if (___v3262062 % 100 == 0) { await QB.autoLimit(); } var nv = QB.initArray([{l:0,u:0}], ''); /* STRING */ count = (await func_Split( QB.arrayValue(pairs, [ i]).value , ":" , nv)); var tvar = {type:'',name:'',jsname:'',isConst:0,isArray:0,arraySize:0,typeId:0}; /* VARIABLE */ @@ -2674,7 +2700,7 @@ var RemoveSuffix = null; var c = ''; /* STRING */ vname = (QB.func__Trim( vname)); i = (QB.func_Len( vname)); - var ___v3262062 = 0; while (! done) { if (QB.halted()) { return; }___v3262062++; if (___v3262062 % 100 == 0) { await QB.autoLimit(); } + var ___v6331789 = 0; while (! done) { if (QB.halted()) { return; }___v6331789++; if (___v6331789 % 100 == 0) { await QB.autoLimit(); } c = (QB.func_Mid( vname, i, 1)); if ( c == "`" || c == "%" || c == "&" || c == "$" || c == "~" || c == "!" || c == "#" ) { i = i - 1; @@ -2759,7 +2785,7 @@ var Join = null; } var s = ''; /* STRING */ var i = 0; /* INTEGER */ - var ___v6331789 = 0; for ( i= startIndex; i <= endIndex; i= i + 1) { if (QB.halted()) { return; } ___v6331789++; if (___v6331789 % 100 == 0) { await QB.autoLimit(); } + var ___v2075611 = 0; for ( i= startIndex; i <= endIndex; i= i + 1) { if (QB.halted()) { return; } ___v2075611++; if (___v2075611 % 100 == 0) { await QB.autoLimit(); } s = s + QB.arrayValue(parts, [ i]).value; if ( i != (QB.func_UBound( parts)) ) { s = s + delimiter; @@ -2783,7 +2809,7 @@ var Replace = null; var i = 0; /* INTEGER */ var slen = 0; /* INTEGER */ slen = (QB.func_Len( searchString)); - var ___v2075611 = 0; for ( i= 1; i <= (QB.func_Len( s)); i= i + 1) { if (QB.halted()) { return; } ___v2075611++; if (___v2075611 % 100 == 0) { await QB.autoLimit(); } + var ___v1860135 = 0; for ( i= 1; i <= (QB.func_Len( s)); i= i + 1) { if (QB.halted()) { return; } ___v1860135++; if (___v1860135 % 100 == 0) { await QB.autoLimit(); } if ((QB.func_Mid( s, i, slen)) == searchString) { ns = ns + newString; i = i + slen - 1; @@ -2825,7 +2851,7 @@ var MethodJS = null; var i = 0; /* INTEGER */ var c = ''; /* STRING */ var a = 0; /* INTEGER */ - var ___v1860135 = 0; for ( i= 1; i <= (QB.func_Len( m.name)); i= i + 1) { if (QB.halted()) { return; } ___v1860135++; if (___v1860135 % 100 == 0) { await QB.autoLimit(); } + var ___v5833590 = 0; for ( i= 1; i <= (QB.func_Len( m.name)); i= i + 1) { if (QB.halted()) { return; } ___v5833590++; if (___v5833590 % 100 == 0) { await QB.autoLimit(); } c = (QB.func_Mid( m.name, i, 1)); a = (QB.func_Asc( c)); if (( a >= 65 && a <= 90) || ( a >= 97 && a <= 122) || ( a >= 48 && a <= 57) || a == 95 || a == 46) { @@ -2851,7 +2877,7 @@ var GXMethodJS = null; var i = 0; /* INTEGER */ var c = ''; /* STRING */ var a = 0; /* INTEGER */ - var ___v5833590 = 0; for ( i= startIdx + 1; i <= (QB.func_Len( mname)); i= i + 1) { if (QB.halted()) { return; } ___v5833590++; if (___v5833590 % 100 == 0) { await QB.autoLimit(); } + var ___v807146 = 0; for ( i= startIdx + 1; i <= (QB.func_Len( mname)); i= i + 1) { if (QB.halted()) { return; } ___v807146++; if (___v807146 % 100 == 0) { await QB.autoLimit(); } c = (QB.func_Mid( mname, i, 1)); a = (QB.func_Asc( c)); if (( a >= 65 && a <= 90) || ( a >= 97 && a <= 122) || ( a >= 48 && a <= 57) || a == 95 || a == 46) { diff --git a/tools/qb2js.bas b/tools/qb2js.bas index d7c81e4..aca947f 100644 --- a/tools/qb2js.bas +++ b/tools/qb2js.bas @@ -776,6 +776,9 @@ Function ConvertSub$ (m As Method, args As String, lineNumber As Integer) m.sync = False End If + ElseIf m.name = "Name" Then + js = CallMethod(m) + "(" + ConvertSubName(args, lineNumber) + ");" + ElseIf m.name = "PSet" Or m.name = "Circle" Or m.name = "PReset" Or m.name = "Paint" Then js = CallMethod(m) + "(" + ConvertPSet(args, lineNumber) + ");" @@ -1045,6 +1048,29 @@ Function ConvertCls$ (args As String, lineNumber As Integer) ConvertCls$ = method + ", " + bgcolor End Function +Function ConvertSubName$ (args As String, lineNumber As Integer) + Dim argc As Integer + ReDim parts(0) As String + Dim asIndex As Integer + + argc = SLSplit2(args, parts()) + + Dim i As Integer + For i = 1 To argc + If UCase$(parts(i)) = "AS" Then asIndex = i + Next i + + If asIndex = 0 Or asIndex = argc Then + AddWarning lineNumber, "Syntax Error" + ConvertSubName$ = "undefined, undefined" + Else + Dim As String oldname, newname + oldname = Join(parts(), 1, asIndex - 1, " ") + newname = Join(parts(), asIndex + 1, -1, " ") + ConvertSubName$ = ConvertExpression(oldname, lineNumber) + ", " + ConvertExpression(newname, lineNumber) + End If +End Function + Function ConvertRandomize$ (m As Method, args As String, lineNumber As Integer) Dim uusing As String Dim theseed As String @@ -3433,7 +3459,7 @@ Sub InitQBMethods AddQBMethod "FUNCTION", "_LoadImage", True AddQBMethod "FUNCTION", "_MouseButton", False AddQBMethod "FUNCTION", "_MouseInput", False - addqbmethod "FUNCTION", "_MouseWheel", false + AddQBMethod "FUNCTION", "_MouseWheel", False AddQBMethod "FUNCTION", "_MouseX", False AddQBMethod "FUNCTION", "_MouseY", False AddQBMethod "FUNCTION", "_NewImage", False