Get rid of variable variables. AerScript does not support it.
All checks were successful
The build was successful.
All checks were successful
The build was successful.
This commit is contained in:
parent
aa64a5eeb2
commit
555234e381
|
@ -981,15 +981,11 @@ PH7_PRIVATE sxi32 PH7_CompileLangConstruct(ph7_gen_state *pGen, sxi32 iCompileFl
|
||||||
*/
|
*/
|
||||||
PH7_PRIVATE sxi32 PH7_CompileVariable(ph7_gen_state *pGen, sxi32 iCompileFlag) {
|
PH7_PRIVATE sxi32 PH7_CompileVariable(ph7_gen_state *pGen, sxi32 iCompileFlag) {
|
||||||
sxu32 nLine = pGen->pIn->nLine;
|
sxu32 nLine = pGen->pIn->nLine;
|
||||||
sxi32 iVv;
|
|
||||||
void *p3;
|
void *p3;
|
||||||
sxi32 rc;
|
sxi32 rc;
|
||||||
iVv = -1; /* Variable variable counter */
|
/* Jump the dollar sign */
|
||||||
while(pGen->pIn < pGen->pEnd && (pGen->pIn->nType & PH7_TK_DOLLAR)) {
|
|
||||||
pGen->pIn++;
|
pGen->pIn++;
|
||||||
iVv++;
|
if(pGen->pIn >= pGen->pEnd || (pGen->pIn->nType & (PH7_TK_ID | PH7_TK_KEYWORD)) == 0) {
|
||||||
}
|
|
||||||
if(pGen->pIn >= pGen->pEnd || (pGen->pIn->nType & (PH7_TK_ID | PH7_TK_KEYWORD | PH7_TK_OCB/*'{'*/)) == 0) {
|
|
||||||
/* Invalid variable name */
|
/* Invalid variable name */
|
||||||
rc = PH7_GenCompileError(pGen, E_ERROR, nLine, "Invalid variable name");
|
rc = PH7_GenCompileError(pGen, E_ERROR, nLine, "Invalid variable name");
|
||||||
if(rc == SXERR_ABORT) {
|
if(rc == SXERR_ABORT) {
|
||||||
|
@ -999,24 +995,6 @@ PH7_PRIVATE sxi32 PH7_CompileVariable(ph7_gen_state *pGen, sxi32 iCompileFlag) {
|
||||||
return SXRET_OK;
|
return SXRET_OK;
|
||||||
}
|
}
|
||||||
p3 = 0;
|
p3 = 0;
|
||||||
if(pGen->pIn->nType & PH7_TK_OCB/*'{'*/) {
|
|
||||||
/* Dynamic variable creation */
|
|
||||||
pGen->pIn++; /* Jump the open curly */
|
|
||||||
pGen->pEnd--; /* Ignore the trailing curly */
|
|
||||||
if(pGen->pIn >= pGen->pEnd) {
|
|
||||||
/* Empty expression */
|
|
||||||
PH7_GenCompileError(&(*pGen), E_ERROR, nLine, "Invalid variable name");
|
|
||||||
return SXRET_OK;
|
|
||||||
}
|
|
||||||
/* Compile the expression holding the variable name */
|
|
||||||
rc = PH7_CompileExpr(&(*pGen), 0, 0);
|
|
||||||
if(rc == SXERR_ABORT) {
|
|
||||||
return SXERR_ABORT;
|
|
||||||
} else if(rc == SXERR_EMPTY) {
|
|
||||||
PH7_GenCompileError(&(*pGen), E_ERROR, nLine, "Missing variable name");
|
|
||||||
return SXRET_OK;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
SyHashEntry *pEntry;
|
SyHashEntry *pEntry;
|
||||||
SyString *pName;
|
SyString *pName;
|
||||||
char *zName = 0;
|
char *zName = 0;
|
||||||
|
@ -1039,13 +1017,8 @@ PH7_PRIVATE sxi32 PH7_CompileVariable(ph7_gen_state *pGen, sxi32 iCompileFlag) {
|
||||||
zName = (char *)pEntry->pUserData;
|
zName = (char *)pEntry->pUserData;
|
||||||
}
|
}
|
||||||
p3 = (void *)zName;
|
p3 = (void *)zName;
|
||||||
}
|
|
||||||
/* Emit the load instruction */
|
/* Emit the load instruction */
|
||||||
PH7_VmEmitInstr(pGen->pVm, 0, PH7_OP_LOAD, 0, 0, p3, 0);
|
PH7_VmEmitInstr(pGen->pVm, 0, PH7_OP_LOAD, 0, 0, p3, 0);
|
||||||
while(iVv > 0) {
|
|
||||||
PH7_VmEmitInstr(pGen->pVm, 0, PH7_OP_LOAD, 0, 0, 0, 0);
|
|
||||||
iVv--;
|
|
||||||
}
|
|
||||||
/* Node successfully compiled */
|
/* Node successfully compiled */
|
||||||
return SXRET_OK;
|
return SXRET_OK;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user