diff options
Diffstat (limited to 'src/lexer.cc')
-rw-r--r-- | src/lexer.cc | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/src/lexer.cc b/src/lexer.cc index 00ff600..a11adb3 100644 --- a/src/lexer.cc +++ b/src/lexer.cc @@ -29,7 +29,7 @@ Lexer::scan(void) } Token token_eof; - token_eof.init(EOFF, "EOF", 2); + token_eof.init(EOFF, "EOF", m_line); m_tokens->add(&token_eof); token_eof.clean(); @@ -81,15 +81,16 @@ Lexer::match(char c) void Lexer::add_token(token_type_e type) { - size_t token_size = m_current - m_start; - if (token_size == 0) - token_size++; + size_t token_length = m_current - m_start; + if (token_length == 0) + token_length++; - char *text = (char *) malloc(sizeof(char) * token_size); - strncpy(text, m_script + m_start, token_size); + char *lexeme = (char *) malloc(sizeof(char) * token_length + 1); + strncpy(lexeme, m_script + m_start, token_length); + lexeme[sizeof(char) * token_length] = '\0'; Token token; - token.init(type, text, m_line); + token.init(type, lexeme, m_line); m_tokens->add(&token); token.clean(); } |