Mini Basic: some cosmetic changes

This commit is contained in:
Gregory Nutt 2016-08-11 10:34:32 -06:00
parent 47daad13fa
commit fb3fa286d5

View File

@ -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);