private void analisaEscreva() { updateToken(); if (!hasEndedTokens && isSimbol(ABRE_PARENTESES)) { updateToken(); if (!hasEndedTokens && isSimbol(IDENTIFICADOR)) { if (Semantico.pesquisaDeclVarFuncTabela(actualToken.lexem)) { Struct identifierStruct = Semantico.pesquisaTabela(actualToken.lexem, 0); if (identifierStruct.nome.Equals(NOME_FUNCAO)) { CodeGenerator.gera(EMPTY_STRING, CALL, identifierStruct.rotulo.ToString(), EMPTY_STRING); CodeGenerator.gera(EMPTY_STRING, LDV, FUNCTION_RETURN_LABEL, EMPTY_STRING); } else { CodeGenerator.gera(EMPTY_STRING, LDV, identifierStruct.rotulo.ToString(), EMPTY_STRING); } CodeGenerator.gera(EMPTY_STRING, PRN, EMPTY_STRING, EMPTY_STRING); updateToken(); if (!hasEndedTokens && isSimbol(FECHA_PARENTESES)) { updateToken(); } else { throwError(new CompiladorException(ERRO_SINTATICO), ERRO_PARENTESIS); } } else { throwError(new CompiladorException(ERRO_SEMANTICO), DECL_VAR_FUNC_ERROR); } } else { throwError(new CompiladorException(ERRO_SINTATICO), ERRO_NOME); } } else { throwError(new CompiladorException(ERRO_SINTATICO), ERRO_PARENTESIS); } }