private void analisaTermo() { analisaFator(); while (!hasEndedTokens && (isSimbol(MULTI) || isSimbol(DIV) || isSimbol(E))) { Semantico.addCharToExpression(actualToken); updateToken(); analisaFator(); } }
private void analisaExpressaoSimples() { if (!hasEndedTokens && (isSimbol(MAIS) || isSimbol(MENOS))) { Semantico.addCharToExpression(new Token(actualToken.simbol, actualToken.lexem + "u", actualToken.line)); updateToken(); } analisaTermo(); while (!hasEndedTokens && (isSimbol(MAIS) || isSimbol(MENOS) || isSimbol(OU))) { Semantico.addCharToExpression(actualToken); updateToken(); analisaTermo(); } }
private void analisaExpressao() { if (parentesisCount == 0) { analyzeExpressionStarterLine = actualToken.line; } analisaExpressaoSimples(); while (!hasEndedTokens && (isSimbol(MAIOR) || isSimbol(MAIORIG) || isSimbol(IGUAL) || isSimbol(MENOR) || isSimbol(MENORIG) || isSimbol(DIF))) { Semantico.addCharToExpression(actualToken); updateToken(); analisaExpressaoSimples(); } }
private void analisaFator() { if (!hasEndedTokens && isSimbol(IDENTIFICADOR)) { Struct actualItem = Semantico.pesquisaTabela(actualToken.lexem, 0); if (actualItem != null) { Semantico.addCharToExpression(actualToken); if (actualItem.tipo == TIPO_INTEIRO || actualItem.tipo == TIPO_BOOLEANO) { analisaChamadaFuncao(); } else { updateToken(); } } else { throwError(new CompiladorException(ERRO_SEMANTICO), ITEM_NOT_FOUND); } } else if (!hasEndedTokens && isSimbol(NUMERO)) { Semantico.addCharToExpression(actualToken); updateToken(); } else if (!hasEndedTokens && isSimbol(NAO)) { Semantico.addCharToExpression(actualToken); updateToken(); analisaFator(); } else if (!hasEndedTokens && isSimbol(ABRE_PARENTESES)) { parentesisCount++; Semantico.addCharToExpression(actualToken); updateToken(); analisaExpressao(); if (!hasEndedTokens && isSimbol(FECHA_PARENTESES)) { parentesisCount--; Semantico.addCharToExpression(actualToken); updateToken(); } else { throwError(new CompiladorException(ERRO_SINTATICO), ERRO_PARENTESIS); } } else if (!hasEndedTokens && (isSimbol(VERDADEIRO) || isSimbol(FALSO))) { Semantico.addCharToExpression(actualToken); updateToken(); } else { throwError(new CompiladorException(ERRO_SINTATICO), ERRO_CARACTER); } }