summaryrefslogtreecommitdiff
path: root/lexer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lexer.cpp')
-rw-r--r--lexer.cpp16
1 files changed, 4 insertions, 12 deletions
diff --git a/lexer.cpp b/lexer.cpp
index 666b999..a9734d1 100644
--- a/lexer.cpp
+++ b/lexer.cpp
@@ -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.