Cleanup lexer old cruft

This commit is contained in:
Dale Weiler 2013-11-29 07:15:49 -05:00
parent 1d347eaf66
commit cb97b7f672

121
lexer.c
View file

@ -82,91 +82,8 @@ static bool lexwarn(lex_file *lex, int warntype, const char *fmt, ...)
return r;
}
#if 0
token* token_new()
{
token *tok = (token*)mem_a(sizeof(token));
if (!tok)
return NULL;
memset(tok, 0, sizeof(*tok));
return tok;
}
void token_delete(token *self)
{
if (self->next && self->next->prev == self)
self->next->prev = self->prev;
if (self->prev && self->prev->next == self)
self->prev->next = self->next;
MEM_VECTOR_CLEAR(self, value);
mem_d(self);
}
token* token_copy(const token *cp)
{
token* self = token_new();
if (!self)
return NULL;
/* copy the value */
self->value_alloc = cp->value_count + 1;
self->value_count = cp->value_count;
self->value = (char*)mem_a(self->value_alloc);
if (!self->value) {
mem_d(self);
return NULL;
}
memcpy(self->value, cp->value, cp->value_count);
self->value[self->value_alloc-1] = 0;
/* rest */
self->ctx = cp->ctx;
self->ttype = cp->ttype;
memcpy(&self->constval, &cp->constval, sizeof(self->constval));
return self;
}
void token_delete_all(token *t)
{
token *n;
do {
n = t->next;
token_delete(t);
t = n;
} while(t);
}
token* token_copy_all(const token *cp)
{
token *cur;
token *out;
out = cur = token_copy(cp);
if (!out)
return NULL;
while (cp->next) {
cp = cp->next;
cur->next = token_copy(cp);
if (!cur->next) {
token_delete_all(out);
return NULL;
}
cur->next->prev = cur;
cur = cur->next;
}
return out;
}
#else
static void lex_token_new(lex_file *lex)
{
#if 0
if (lex->tok)
token_delete(lex->tok);
lex->tok = token_new();
#else
if (lex->tok.value)
vec_shrinkto(lex->tok.value, 0);
@ -174,9 +91,7 @@ static void lex_token_new(lex_file *lex)
lex->tok.ctx.line = lex->sline;
lex->tok.ctx.file = lex->name;
lex->tok.ctx.column = lex->column;
#endif
}
#endif
static void lex_ungetch(lex_file *lex, int ch);
static int lex_getch(lex_file *lex);
@ -273,12 +188,9 @@ void lex_close(lex_file *lex)
if (lex->file)
fs_file_close(lex->file);
#if 0
if (lex->tok)
token_delete(lex->tok);
#else
vec_free(lex->tok.value);
#endif
/* mem_d(lex->name); collected in lex_filenames */
mem_d(lex);
}
@ -624,10 +536,6 @@ static int lex_skipwhite(lex_file *lex, bool hadwhite)
if (lex->flags.preprocessing) {
haswhite = true;
/*
lex_tokench(lex, '/');
lex_tokench(lex, '/');
*/
lex_tokench(lex, ' ');
lex_tokench(lex, ' ');
}
@ -649,10 +557,6 @@ static int lex_skipwhite(lex_file *lex, bool hadwhite)
/* multiline comment */
if (lex->flags.preprocessing) {
haswhite = true;
/*
lex_tokench(lex, '/');
lex_tokench(lex, '*');
*/
lex_tokench(lex, ' ');
lex_tokench(lex, ' ');
}
@ -664,10 +568,6 @@ static int lex_skipwhite(lex_file *lex, bool hadwhite)
ch = lex_getch(lex);
if (ch == '/') {
if (lex->flags.preprocessing) {
/*
lex_tokench(lex, '*');
lex_tokench(lex, '/');
*/
lex_tokench(lex, ' ');
lex_tokench(lex, ' ');
}
@ -1026,10 +926,6 @@ int lex_do(lex_file *lex)
bool hadwhite = false;
lex_token_new(lex);
#if 0
if (!lex->tok)
return TOKEN_FATAL;
#endif
while (true) {
ch = lex_skipwhite(lex, hadwhite);
@ -1274,10 +1170,6 @@ int lex_do(lex_file *lex)
*/
switch (ch)
{
/*
case '+':
case '-':
*/
case '*':
case '/':
case '<':
@ -1385,15 +1277,6 @@ int lex_do(lex_file *lex)
return (lex->tok.ttype = TOKEN_OPERATOR);
}
/*
if (ch == '^' || ch == '~' || ch == '!')
{
lex_tokench(lex, ch);
lex_endtoken(lex);
return (lex->tok.ttype = TOKEN_OPERATOR);
}
*/
if (ch == '*' || ch == '/') /* *=, /= */
{
lex_tokench(lex, ch);