NodeLR GetTerm() { NodeLR factor = GetFactor(); //if(tokenList[index].tokenType != TokenType.MULT || tokenList[index].tokenType != TokenType.REAL_DIV) // Advance(); if (tokenList[index].tokenType.Equals(TokenType.MULT)) { NodeLR mult = new NodeLR(factor, TokenType.MULT, GetTerm()); mult.OperateLeftRight(); return(mult); } else if (tokenList[index].tokenType.Equals(TokenType.REAL_DIV)) { NodeLR div = new NodeLR(factor, TokenType.REAL_DIV, GetTerm()); div.OperateLeftRight(); return(div); } else if (tokenList[index].tokenType.Equals(TokenType.LPAR)) { NodeLR div = new NodeLR(factor, TokenType.MULT, GetExpretion()); div.OperateLeftRight(); return(div); } return(factor); }
/// <summary> /// Obtener la expresión que se encuentra dentro de una línea de texto, dicha expresión nos permitirá asignarle un valor a una variable global /// </summary> /// <returns></returns> NodeLR GetExpretion() { NodeLR term = null; while (tokenList[index].tokenType != TokenType.SEMI && tokenList[index].tokenType != TokenType.RPAR) { term = GetTerm(); //if(tokenList[index].tokenType != TokenType.PLUS || tokenList[index].tokenType != TokenType.MINUS) // Advance(); if (tokenList[index].tokenType.Equals(TokenType.PLUS)) { NodeLR add = new NodeLR(term, TokenType.PLUS, GetExpretion()); add.OperateLeftRight(); return(add); } else if (tokenList[index].tokenType.Equals(TokenType.MINUS)) { NodeLR resta = new NodeLR(term, TokenType.MINUS, GetExpretion()); resta.OperateLeftRight(); return(resta); } //Advance(); } return(term); }