diff options
Diffstat (limited to 'lexer.cpp')
-rw-r--r-- | lexer.cpp | 16 |
1 files changed, 4 insertions, 12 deletions
@@ -18,7 +18,6 @@ void Lexer::setText(string text){ // Inicializamos el lexer. current_char = 0; current_token = nextToken(); - var_name = '\0'; } Token Lexer::getCurrentToken(){ @@ -49,6 +48,7 @@ string Lexer::createNumber(){ } Token Lexer::match(){ + char var_name; // Si ya consumimos todo el texto, // regresamos nil. if(current_char >= text.length()) @@ -73,18 +73,10 @@ Token Lexer::match(){ if(isalpha(text[current_char])) { - /* Si es la primera vez que se lee un token variable o - si la variable leída es igual a la anteriormente leída. */ - if(var_name == '\0' || var_name == text[current_char]) - { - var_name = text[current_char]; - ++current_char; + var_name = text[current_char]; + ++current_char; - return Token(variable, string(1, var_name)); - } - - // Error, se introdujo una expresión con dos o más variables. - throw LexerException("Encontrada más de una variable."); + return Token(variable, string(1, var_name)); } /* El token actual no es ni una variable, número o función. |