From 238b00098ae1c141e88bfff1cbb6a2ac4f55ea4d Mon Sep 17 00:00:00 2001 From: Marrub Date: Sat, 6 Jun 2015 10:13:54 -0400 Subject: [PATCH] nevermind works --- src/lt.c | 89 ++++++++++++++++++++++++++++++++++++++++++++++++++++---- src/lt.h | 2 ++ 2 files changed, 85 insertions(+), 6 deletions(-) diff --git a/src/lt.c b/src/lt.c index 2768276..f545df1 100644 --- a/src/lt.c +++ b/src/lt.c @@ -40,6 +40,7 @@ static LT_InitInfo info; static iconv_t icDesc; static bool assertError = false; static const char *assertString; +static char *stringChars = "\"", *charChars = "'"; static const char *errors[] = { "LT_Error: Syntax error", @@ -105,6 +106,62 @@ void LT_Init(LT_InitInfo initInfo) { info.stripInvalid = false; } + + if(info.stringChars != NULL) + { + int i; + + stringChars = malloc(6); + + for(i = 0; i < 6; i++) + { + char c = info.stringChars[i]; + + if(c != '\0') + { + stringChars[i] = c; + } + else + { + break; + } + } + + stringChars[i] = '\0'; + + gbRover->next = malloc(sizeof(LT_GarbageList)); + gbRover = gbRover->next; + gbRover->ptr = stringChars; + gbRover->next = NULL; + } + + if(info.charChars != NULL) + { + int i; + + charChars = malloc(6); + + for(i = 0; i < 6; i++) + { + char c = info.charChars[i]; + + if(c != '\0') + { + charChars[i] = c; + } + else + { + break; + } + } + + charChars[i] = '\0'; + + gbRover->next = malloc(sizeof(LT_GarbageList)); + gbRover = gbRover->next; + gbRover->ptr = charChars; + gbRover->next = NULL; + } } void LT_Quit() @@ -528,18 +585,38 @@ LT_Token LT_GetToken() } return tk; - case '"': case '\'': - tk.string = LT_ReadString(c); + } + + for(size_t i = 0; i < 6;) + { + char cc = stringChars[i++]; - if(c == '"') + if(cc == '\0') { + break; + } + else if(c == cc) + { + tk.string = LT_ReadString(c); tk.token = LT_TkNames[TOK_String]; + return tk; } - else + } + + for(size_t i = 0; i < 6;) + { + char cc = charChars[i++]; + + if(cc == '\0') { - tk.token = LT_TkNames[TOK_Charac]; + break; + } + else if(c == cc) + { + tk.string = LT_ReadString(c); + tk.token = LT_TkNames[TOK_Charac]; + return tk; } - return tk; } if(isdigit(c)) diff --git a/src/lt.h b/src/lt.h index 6095f54..7271ccc 100644 --- a/src/lt.h +++ b/src/lt.h @@ -72,6 +72,8 @@ typedef struct bool doConvert; const char *fromCode; const char *toCode; + const char *stringChars; + const char *charChars; } LT_InitInfo; typedef struct