Fix to get Mini-Basic to build
This commit is contained in:
parent
a1c0580034
commit
47daad13fa
@ -133,6 +133,17 @@ micropython
|
|||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
THE SOFTWARE.
|
THE SOFTWARE.
|
||||||
|
|
||||||
|
minibasic
|
||||||
|
---------
|
||||||
|
|
||||||
|
The Mini Basic implementation at apps/interpreters derives from version 1.0
|
||||||
|
by Malcolm McLean, Leeds University, and was released under the Creative
|
||||||
|
Commons Attibution license. I am not legal expert, but this license
|
||||||
|
appears to be compatible with the NuttX BSD license see:
|
||||||
|
https://creativecommons.org/licenses/ . I, however, cannot take
|
||||||
|
responsibility for any actions that you might take based on my
|
||||||
|
understanding. Please use your own legal judgement.
|
||||||
|
|
||||||
pcode
|
pcode
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
11
interpreters/minibasic/.gitignore
vendored
Normal file
11
interpreters/minibasic/.gitignore
vendored
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
/Make.dep
|
||||||
|
/.depend
|
||||||
|
/.built
|
||||||
|
/*.asm
|
||||||
|
/*.obj
|
||||||
|
/*.rel
|
||||||
|
/*.lst
|
||||||
|
/*.sym
|
||||||
|
/*.adb
|
||||||
|
/*.lib
|
||||||
|
/*.src
|
@ -33,10 +33,6 @@ config INTERPRETERS_MINIBASIC
|
|||||||
|
|
||||||
if INTERPRETERS_MINIBASIC
|
if INTERPRETERS_MINIBASIC
|
||||||
|
|
||||||
config INTERPRETER_MINIBASIC_VERSION
|
|
||||||
string "Version number"
|
|
||||||
default "1.0"
|
|
||||||
|
|
||||||
config INTERPRETER_MINIBASIC_PRIORITY
|
config INTERPRETER_MINIBASIC_PRIORITY
|
||||||
int "Basic interpreter priority"
|
int "Basic interpreter priority"
|
||||||
default 100
|
default 100
|
||||||
|
@ -71,7 +71,7 @@
|
|||||||
#define COMMA 17
|
#define COMMA 17
|
||||||
#define MOD 200
|
#define MOD 200
|
||||||
|
|
||||||
#define ERROR 20
|
#define SYNTAX_ERROR 20
|
||||||
#define EOL 21
|
#define EOL 21
|
||||||
#define EQUALS 22
|
#define EQUALS 22
|
||||||
#define STRID 23
|
#define STRID 23
|
||||||
@ -188,7 +188,7 @@ struct mb_dimvar_s
|
|||||||
|
|
||||||
struct mb_lvalue_s
|
struct mb_lvalue_s
|
||||||
{
|
{
|
||||||
int type; /* Type of variable (STRID or FLTID or ERROR) */
|
int type; /* Type of variable (STRID or FLTID or SYNTAX_ERROR) */
|
||||||
FAR char **sval; /* Pointer to string data */
|
FAR char **sval; /* Pointer to string data */
|
||||||
FAR double *dval; /* Pointer to real data */
|
FAR double *dval; /* Pointer to real data */
|
||||||
};
|
};
|
||||||
@ -293,7 +293,7 @@ static void getid(FAR const char *str, FAR char *out, FAR int *len);
|
|||||||
static void mystrgrablit(FAR char *dest, FAR const char *src);
|
static void mystrgrablit(FAR char *dest, FAR const char *src);
|
||||||
static FAR char *mystrend(FAR const char *str, char quote);
|
static FAR char *mystrend(FAR const char *str, char quote);
|
||||||
static int mystrcount(FAR const char *str, char ch);
|
static int mystrcount(FAR const char *str, char ch);
|
||||||
static FAR har *mystrdup(FAR const char *str);
|
static FAR char *mystrdup(FAR const char *str);
|
||||||
static FAR char *mystrconcat(FAR const char *str, FAR const char *cat);
|
static FAR char *mystrconcat(FAR const char *str, FAR const char *cat);
|
||||||
static double factorial(double x);
|
static double factorial(double x);
|
||||||
|
|
||||||
@ -1043,10 +1043,11 @@ static int dofor(void)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (stepval < 0 && initval < toval || stepval > 0 && initval > toval)
|
if ((stepval < 0 && initval < toval) ||
|
||||||
|
(stepval > 0 && initval > toval))
|
||||||
{
|
{
|
||||||
savestring = g_string;
|
savestring = g_string;
|
||||||
while (g_string = strchr(g_string, '\n'))
|
while ((g_string = strchr(g_string, '\n')) != NULL)
|
||||||
{
|
{
|
||||||
g_errorflag = 0;
|
g_errorflag = 0;
|
||||||
g_token = gettoken(g_string);
|
g_token = gettoken(g_string);
|
||||||
@ -1231,7 +1232,7 @@ static void lvalue(FAR struct mb_lvalue_s *lv)
|
|||||||
FAR void *valptr = 0;
|
FAR void *valptr = 0;
|
||||||
int type;
|
int type;
|
||||||
|
|
||||||
lv->type = ERROR;
|
lv->type = SYNTAX_ERROR;
|
||||||
lv->dval = 0;
|
lv->dval = 0;
|
||||||
lv->sval = 0;
|
lv->sval = 0;
|
||||||
|
|
||||||
@ -1539,7 +1540,7 @@ static int boolfactor(void)
|
|||||||
*
|
*
|
||||||
* Description:
|
* Description:
|
||||||
* Get a relational operator
|
* Get a relational operator
|
||||||
* Returns operator parsed or ERROR
|
* Returns operator parsed or SYNTAX_ERROR
|
||||||
*
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
@ -1578,7 +1579,7 @@ static int relop(void)
|
|||||||
|
|
||||||
default:
|
default:
|
||||||
seterror(ERR_SYNTAX);
|
seterror(ERR_SYNTAX);
|
||||||
return ERROR;
|
return SYNTAX_ERROR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2050,7 +2051,7 @@ static double dimvariable(void)
|
|||||||
char id[32];
|
char id[32];
|
||||||
int len;
|
int len;
|
||||||
int index[5];
|
int index[5];
|
||||||
FAR double *answer;
|
FAR double *answer = NULL;
|
||||||
|
|
||||||
getid(g_string, id, &len);
|
getid(g_string, id, &len);
|
||||||
match(DIMFLTID);
|
match(DIMFLTID);
|
||||||
@ -2115,7 +2116,7 @@ static double dimvariable(void)
|
|||||||
match(CPAREN);
|
match(CPAREN);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (answer)
|
if (answer != NULL)
|
||||||
{
|
{
|
||||||
return *answer;
|
return *answer;
|
||||||
}
|
}
|
||||||
@ -2372,7 +2373,7 @@ static FAR void *getdimvar(FAR struct mb_dimvar_s *dv, ...)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (dv->type = STRID)
|
else if (dv->type == STRID)
|
||||||
{
|
{
|
||||||
switch (dv->ndims)
|
switch (dv->ndims)
|
||||||
{
|
{
|
||||||
@ -2915,7 +2916,7 @@ static FAR char *stringdimvar(void)
|
|||||||
char id[32];
|
char id[32];
|
||||||
int len;
|
int len;
|
||||||
FAR struct mb_dimvar_s *dimvar;
|
FAR struct mb_dimvar_s *dimvar;
|
||||||
FAR char **answer;
|
FAR char **answer = NULL;
|
||||||
int index[5];
|
int index[5];
|
||||||
|
|
||||||
getid(g_string, id, &len);
|
getid(g_string, id, &len);
|
||||||
@ -2957,6 +2958,7 @@ static FAR char *stringdimvar(void)
|
|||||||
index[3] = integer(expr());
|
index[3] = integer(expr());
|
||||||
answer = getdimvar(dimvar, index[0], index[1], index[2], index[3]);
|
answer = getdimvar(dimvar, index[0], index[1], index[2], index[3]);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 5:
|
case 5:
|
||||||
index[0] = integer(expr());
|
index[0] = integer(expr());
|
||||||
match(COMMA);
|
match(COMMA);
|
||||||
@ -2981,7 +2983,7 @@ static FAR char *stringdimvar(void)
|
|||||||
|
|
||||||
if (!g_errorflag)
|
if (!g_errorflag)
|
||||||
{
|
{
|
||||||
if (*answer)
|
if (answer != NULL && *answer != NULL)
|
||||||
{
|
{
|
||||||
return *answer;
|
return *answer;
|
||||||
}
|
}
|
||||||
@ -3138,7 +3140,7 @@ static void match(int tok)
|
|||||||
|
|
||||||
g_string += tokenlen(g_string, g_token);
|
g_string += tokenlen(g_string, g_token);
|
||||||
g_token = gettoken(g_string);
|
g_token = gettoken(g_string);
|
||||||
if (g_token == ERROR)
|
if (g_token == SYNTAX_ERROR)
|
||||||
{
|
{
|
||||||
seterror(ERR_SYNTAX);
|
seterror(ERR_SYNTAX);
|
||||||
}
|
}
|
||||||
@ -3493,7 +3495,7 @@ static int gettoken(FAR const char *str)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return ERROR;
|
return SYNTAX_ERROR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3599,7 +3601,7 @@ static int tokenlen(FAR const char *str, int tokenid)
|
|||||||
case SEMICOLON:
|
case SEMICOLON:
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
case ERROR:
|
case SYNTAX_ERROR:
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
case PRINT:
|
case PRINT:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user