Mini Basic: some cosmetic changes
This commit is contained in:
parent
47daad13fa
commit
fb3fa286d5
@ -1163,36 +1163,38 @@ static void doinput(void)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case STRID:
|
case STRID:
|
||||||
if (*lv.sval)
|
{
|
||||||
{
|
if (*lv.sval)
|
||||||
free(*lv.sval);
|
{
|
||||||
*lv.sval = 0;
|
free(*lv.sval);
|
||||||
}
|
*lv.sval = 0;
|
||||||
|
}
|
||||||
|
|
||||||
if (fgets(buff, sizeof(buff), g_fpin) == 0)
|
if (fgets(buff, sizeof(buff), g_fpin) == 0)
|
||||||
{
|
{
|
||||||
seterror(ERR_EOF);
|
seterror(ERR_EOF);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
end = strchr(buff, '\n');
|
end = strchr(buff, '\n');
|
||||||
if (!end)
|
if (!end)
|
||||||
{
|
{
|
||||||
seterror(ERR_INPUTTOOLONG);
|
seterror(ERR_INPUTTOOLONG);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
*end = 0;
|
*end = 0;
|
||||||
*lv.sval = mystrdup(buff);
|
*lv.sval = mystrdup(buff);
|
||||||
if (!*lv.sval)
|
if (!*lv.sval)
|
||||||
{
|
{
|
||||||
seterror(ERR_OUTOFMEMORY);
|
seterror(ERR_OUTOFMEMORY);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1239,120 +1241,135 @@ static void lvalue(FAR struct mb_lvalue_s *lv)
|
|||||||
switch (g_token)
|
switch (g_token)
|
||||||
{
|
{
|
||||||
case FLTID:
|
case FLTID:
|
||||||
getid(g_string, name, &len);
|
{
|
||||||
match(FLTID);
|
getid(g_string, name, &len);
|
||||||
var = findvariable(name);
|
match(FLTID);
|
||||||
if (!var)
|
var = findvariable(name);
|
||||||
{
|
if (!var)
|
||||||
var = addfloat(name);
|
{
|
||||||
}
|
var = addfloat(name);
|
||||||
|
}
|
||||||
|
|
||||||
if (!var)
|
if (!var)
|
||||||
{
|
{
|
||||||
seterror(ERR_OUTOFMEMORY);
|
seterror(ERR_OUTOFMEMORY);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
lv->type = FLTID;
|
lv->type = FLTID;
|
||||||
lv->dval = &var->dval;
|
lv->dval = &var->dval;
|
||||||
lv->sval = 0;
|
lv->sval = 0;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case STRID:
|
case STRID:
|
||||||
getid(g_string, name, &len);
|
{
|
||||||
match(STRID);
|
getid(g_string, name, &len);
|
||||||
var = findvariable(name);
|
match(STRID);
|
||||||
if (!var)
|
var = findvariable(name);
|
||||||
{
|
if (!var)
|
||||||
var = addstring(name);
|
{
|
||||||
}
|
var = addstring(name);
|
||||||
|
}
|
||||||
|
|
||||||
if (!var)
|
if (!var)
|
||||||
{
|
{
|
||||||
seterror(ERR_OUTOFMEMORY);
|
seterror(ERR_OUTOFMEMORY);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
lv->type = STRID;
|
lv->type = STRID;
|
||||||
lv->sval = &var->sval;
|
lv->sval = &var->sval;
|
||||||
lv->dval = 0;
|
lv->dval = 0;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DIMFLTID:
|
case DIMFLTID:
|
||||||
case DIMSTRID:
|
case DIMSTRID:
|
||||||
type = (g_token == DIMFLTID) ? FLTID : STRID;
|
{
|
||||||
getid(g_string, name, &len);
|
type = (g_token == DIMFLTID) ? FLTID : STRID;
|
||||||
match(g_token);
|
getid(g_string, name, &len);
|
||||||
dimvar = finddimvar(name);
|
match(g_token);
|
||||||
if (dimvar)
|
dimvar = finddimvar(name);
|
||||||
{
|
if (dimvar)
|
||||||
switch (dimvar->ndims)
|
{
|
||||||
{
|
switch (dimvar->ndims)
|
||||||
case 1:
|
{
|
||||||
index[0] = integer(expr());
|
case 1:
|
||||||
if (g_errorflag == 0)
|
|
||||||
{
|
{
|
||||||
valptr = getdimvar(dimvar, index[0]);
|
index[0] = integer(expr());
|
||||||
|
if (g_errorflag == 0)
|
||||||
|
{
|
||||||
|
valptr = getdimvar(dimvar, index[0]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
index[0] = integer(expr());
|
|
||||||
match(COMMA);
|
|
||||||
index[1] = integer(expr());
|
|
||||||
if (g_errorflag == 0)
|
|
||||||
{
|
{
|
||||||
valptr = getdimvar(dimvar, index[0], index[1]);
|
index[0] = integer(expr());
|
||||||
|
match(COMMA);
|
||||||
|
index[1] = integer(expr());
|
||||||
|
if (g_errorflag == 0)
|
||||||
|
{
|
||||||
|
valptr = getdimvar(dimvar, index[0], index[1]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 3:
|
case 3:
|
||||||
index[0] = integer(expr());
|
|
||||||
match(COMMA);
|
|
||||||
index[1] = integer(expr());
|
|
||||||
match(COMMA);
|
|
||||||
index[2] = integer(expr());
|
|
||||||
if (g_errorflag == 0)
|
|
||||||
{
|
{
|
||||||
valptr = getdimvar(dimvar, index[0], index[1], index[2]);
|
index[0] = integer(expr());
|
||||||
|
match(COMMA);
|
||||||
|
index[1] = integer(expr());
|
||||||
|
match(COMMA);
|
||||||
|
index[2] = integer(expr());
|
||||||
|
if (g_errorflag == 0)
|
||||||
|
{
|
||||||
|
valptr = getdimvar(dimvar, index[0], index[1], index[2]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 4:
|
case 4:
|
||||||
index[0] = integer(expr());
|
|
||||||
match(COMMA);
|
|
||||||
index[1] = integer(expr());
|
|
||||||
match(COMMA);
|
|
||||||
index[2] = integer(expr());
|
|
||||||
match(COMMA);
|
|
||||||
index[3] = integer(expr());
|
|
||||||
if (g_errorflag == 0)
|
|
||||||
{
|
{
|
||||||
valptr =
|
index[0] = integer(expr());
|
||||||
getdimvar(dimvar, index[0], index[1], index[2], index[3]);
|
match(COMMA);
|
||||||
|
index[1] = integer(expr());
|
||||||
|
match(COMMA);
|
||||||
|
index[2] = integer(expr());
|
||||||
|
match(COMMA);
|
||||||
|
index[3] = integer(expr());
|
||||||
|
if (g_errorflag == 0)
|
||||||
|
{
|
||||||
|
valptr =
|
||||||
|
getdimvar(dimvar, index[0], index[1], index[2], index[3]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 5:
|
case 5:
|
||||||
index[0] = integer(expr());
|
|
||||||
match(COMMA);
|
|
||||||
index[1] = integer(expr());
|
|
||||||
match(COMMA);
|
|
||||||
index[2] = integer(expr());
|
|
||||||
match(COMMA);
|
|
||||||
index[3] = integer(expr());
|
|
||||||
match(COMMA);
|
|
||||||
index[4] = integer(expr());
|
|
||||||
if (g_errorflag == 0)
|
|
||||||
{
|
{
|
||||||
valptr =
|
index[0] = integer(expr());
|
||||||
getdimvar(dimvar, index[0], index[1], index[2], index[3]);
|
match(COMMA);
|
||||||
|
index[1] = integer(expr());
|
||||||
|
match(COMMA);
|
||||||
|
index[2] = integer(expr());
|
||||||
|
match(COMMA);
|
||||||
|
index[3] = integer(expr());
|
||||||
|
match(COMMA);
|
||||||
|
index[4] = integer(expr());
|
||||||
|
if (g_errorflag == 0)
|
||||||
|
{
|
||||||
|
valptr =
|
||||||
|
getdimvar(dimvar, index[0], index[1], index[2], index[3]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
match(CPAREN);
|
match(CPAREN);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
seterror(ERR_NOSUCHVARIABLE);
|
seterror(ERR_NOSUCHVARIABLE);
|
||||||
@ -1375,6 +1392,7 @@ static void lvalue(FAR struct mb_lvalue_s *lv)
|
|||||||
assert(0);
|
assert(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@ -1455,9 +1473,15 @@ static int boolfactor(void)
|
|||||||
if (!strleft || !strright)
|
if (!strleft || !strright)
|
||||||
{
|
{
|
||||||
if (strleft)
|
if (strleft)
|
||||||
free(strleft);
|
{
|
||||||
|
free(strleft);
|
||||||
|
}
|
||||||
|
|
||||||
if (strright)
|
if (strright)
|
||||||
free(strright);
|
{
|
||||||
|
free(strright);
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
cmp = strcmp(strleft, strright);
|
cmp = strcmp(strleft, strright);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user