From d343ceea759a437e9fd0b506f03046318ce9e1fe Mon Sep 17 00:00:00 2001 From: David Walter Seikel Date: Thu, 12 Jan 2012 05:05:03 +1000 Subject: More clean up. --- LuaSL/src/LuaSL_LSL_tree.c | 16 ++++++---------- LuaSL/src/LuaSL_LSL_tree.h | 13 ++++--------- LuaSL/src/LuaSL_lemon_yaccer.y | 10 +++++----- LuaSL/src/LuaSL_lexer.l | 5 +---- 4 files changed, 16 insertions(+), 28 deletions(-) (limited to 'LuaSL') diff --git a/LuaSL/src/LuaSL_LSL_tree.c b/LuaSL/src/LuaSL_LSL_tree.c index beae756..b441f0b 100644 --- a/LuaSL/src/LuaSL_LSL_tree.c +++ b/LuaSL/src/LuaSL_LSL_tree.c @@ -14,6 +14,7 @@ static void outputStatementToken(LSL_Leaf *content); LSL_Token LSL_Tokens[] = { + // Various forms of "space". {LSL_COMMENT, "/*", LSL_NONE, NULL, NULL, NULL}, {LSL_COMMENT_LINE, "//", LSL_NONE, NULL, NULL, NULL}, {LSL_SPACE, " ", LSL_NONE, NULL, NULL, NULL}, @@ -21,7 +22,6 @@ LSL_Token LSL_Tokens[] = // Operators, in order of precedence, low to high // Left to right, unless oterwise stated. // According to http://wiki.secondlife.com/wiki/Category:LSL_Operators - {LSL_BOOL_AND, "&&", LSL_LEFT2RIGHT, NULL, NULL, evaluateOperationToken}, // QUIRK - Seems to be some disagreement about BOOL_AND/BOOL_OR precedence. Either they are equal, or OR is higher. // QUIRK - No boolean short circuiting. @@ -74,7 +74,6 @@ LSL_Token LSL_Tokens[] = {LSL_EXPRESSION, "expression", LSL_NONE, NULL, NULL, NULL}, // Types. - {LSL_FLOAT, "float", LSL_NONE, NULL, NULL, NULL}, {LSL_INTEGER, "integer", LSL_NONE, outputIntegerToken, NULL, evaluateIntegerToken}, // {LSL_KEY, "key", LSL_NONE, NULL, NULL, NULL}, @@ -84,7 +83,6 @@ LSL_Token LSL_Tokens[] = // {LSL_VECTOR, "vector", LSL_NONE, NULL, NULL, NULL}, // Types names. - {LSL_TYPE_FLOAT, "float", LSL_NONE, NULL, NULL, NULL}, {LSL_TYPE_INTEGER, "integer", LSL_NONE, NULL, NULL, NULL}, {LSL_TYPE_KEY, "key", LSL_NONE, NULL, NULL, NULL}, @@ -94,7 +92,6 @@ LSL_Token LSL_Tokens[] = {LSL_TYPE_VECTOR, "vector", LSL_NONE, NULL, NULL, NULL}, // Then the rest of the syntax tokens. - {LSL_IDENTIFIER, "identifier", LSL_NONE, NULL, NULL, NULL}, {LSL_LABEL, "@", LSL_NONE, NULL, NULL, NULL}, @@ -120,7 +117,6 @@ LSL_Token LSL_Tokens[] = {LSL_UNKNOWN, "unknown", LSL_NONE, NULL, NULL, NULL}, // A sentinal. - {999999, NULL, LSL_NONE, NULL, NULL, NULL} }; @@ -415,6 +411,7 @@ int main(int argc, char **argv) char buffer[4096]; LuaSL_yyparseParam param; int file; + int count; boolean badArgs = FALSE; // Sort the token table. @@ -461,13 +458,13 @@ int main(int argc, char **argv) printf("Usage: %s [-f filename]\n", programName); printf(" -f: Script file to run.\n"); printf("Or pass filenames in stdin.\n"); -// return 1; + return 1; } if ('\0' == buffer[0]) { -strcpy(buffer, "test.lsl"); -/* +//strcpy(buffer, "test.lsl"); + count = read(STDIN_FILENO, buffer, sizeof(buffer)); if (0 > count) { @@ -484,7 +481,7 @@ strcpy(buffer, "test.lsl"); buffer[count] = '\0'; printf("Filename %s in stdin.\n", buffer); } -*/ + } else printf("Filename %s in argument.\n", buffer); @@ -522,7 +519,6 @@ strcpy(buffer, "test.lsl"); // on EOF yylex will return 0 while((yv = yylex(param.lval, param.scanner)) != 0) { -printf("******************************PARSING - %d %s\n", yv, param.lval->token->token); Parse(pParser, yv, param.lval, ¶m); if (LSL_SCRIPT == yv) break; diff --git a/LuaSL/src/LuaSL_LSL_tree.h b/LuaSL/src/LuaSL_LSL_tree.h index 9493552..35d0470 100644 --- a/LuaSL/src/LuaSL_LSL_tree.h +++ b/LuaSL/src/LuaSL_LSL_tree.h @@ -1,6 +1,6 @@ -#ifndef __EXPRESSION_H__ -#define __EXPRESSION_H__ +#ifndef __LSL_TREE_H__ +#define __LSL_TREE_H__ #define LUASL_DEBUG @@ -10,17 +10,12 @@ #include #include -//#include -//#include #include "assert.h" -//#include "ex5def.h" -//#include "example5.h" #include #include #include #include #include -//#include "lexglobal.h" //#define BUFS 1024 #include "LuaSL_lemon_yaccer.h" @@ -173,7 +168,7 @@ struct _LSL_Script }; -// define the type for flex and bison +// define the type for flex and lemon3 #define YYSTYPE LSL_Leaf @@ -212,5 +207,5 @@ void Parse(void *yyp, int yymajor, LSL_Leaf *yyminor, LuaSL_yyparseParam *param) void ParseFree(void *p, void (*freeProc)(void*)); -#endif // __EXPRESSION_H__ +#endif // __LSL_TREE_H__ diff --git a/LuaSL/src/LuaSL_lemon_yaccer.y b/LuaSL/src/LuaSL_lemon_yaccer.y index 2427456..49d2fe1 100644 --- a/LuaSL/src/LuaSL_lemon_yaccer.y +++ b/LuaSL/src/LuaSL_lemon_yaccer.y @@ -11,7 +11,7 @@ %token_destructor { burnLeaf($$); } -program ::= script LSL_SCRIPT(A). { A->left = param->ast; param->ast = A; } // Lemon does not like the start symbol to be on the RHS, so give it a dummy one. +program ::= script LSL_SCRIPT(A). { A->left = param->ast; param->ast = A; } // Lemon does not like the start symbol to be on the RHS, so give it a dummy one. %left LSL_BOOL_AND. @@ -62,7 +62,7 @@ expr(A) ::= LSL_PARENTHESIS_OPEN(B) expr(C) LSL_PARENTHESIS_CLOSE(D). { A = addP %nonassoc LSL_FLOAT. %nonassoc LSL_INTEGER. -expr(A) ::= LSL_INTEGER(B). { A = B; } +expr(A) ::= LSL_INTEGER(B). { A = B; } %nonassoc LSL_TYPE_FLOAT LSL_TYPE_INTEGER LSL_TYPE_KEY LSL_TYPE_LIST LSL_TYPE_ROTATION LSL_TYPE_STRING LSL_TYPE_VECTOR. @@ -73,11 +73,11 @@ expr(A) ::= LSL_INTEGER(B). { A = B; } %nonassoc LSL_BLOCK_OPEN LSL_BLOCK_CLOSE. %nonassoc LSL_STATEMENT. -statement(A) ::= expr(B) LSL_STATEMENT(D). { A = addStatement(D, LSL_EXPRESSION, B); } +statement(A) ::= expr(B) LSL_STATEMENT(D). { A = addStatement(D, LSL_EXPRESSION, B); } %nonassoc LSL_SPACE LSL_COMMENT LSL_COMMENT_LINE LSL_IDENTIFIER LSL_SCRIPT LSL_UNKNOWN. -script ::= script statement(A). { A->left = param->ast; param->ast = A; } -script ::= statement(A). { A->left = param->ast; param->ast = A; } +script ::= script statement(A). { A->left = param->ast; param->ast = A; } +script ::= statement(A). { A->left = param->ast; param->ast = A; } %parse_accept {printf("Parsing complete.\n");} diff --git a/LuaSL/src/LuaSL_lexer.l b/LuaSL/src/LuaSL_lexer.l index ddcb520..50f2624 100644 --- a/LuaSL/src/LuaSL_lexer.l +++ b/LuaSL/src/LuaSL_lexer.l @@ -107,6 +107,7 @@ IDENTIFIER [[:alpha:]](_|[[:alpha:]]|[[:digit:]])* %% +// TODO - this is not reentrant, should make it so. static char *ignorableText = NULL; static int column = 0; static int line = 0; @@ -149,10 +150,6 @@ int common(YYSTYPE *lval, char *text, boolean checkIgnorable, int type) ignorableText = strdup(text); } -#ifdef LUASL_DEBUG - printf ("******************************common(%s, \"%s\", , %d) %04d, %04d\n", lval->token->token, text, type, line, column); -#endif - return type; } -- cgit v1.1