コード例 #1
0
ファイル: Sintatico.cs プロジェクト: CaueSouza/Compilador
        private void analisaDeclaracaoProcedimento()
        {
            updateToken();

            if (!hasEndedTokens && isSimbol(IDENTIFICADOR))
            {
                if (!Semantico.pesquisaDeclProcTabela(actualToken.lexem))
                {
                    Semantico.insereTabela(actualToken.lexem, NOME_PROCEDIMENTO, rotulo);
                    CodeGenerator.gera(rotulo.ToString(), NULL, EMPTY_STRING, EMPTY_STRING);
                    rotulo++;

                    Semantico.increaseLevel();
                    updateToken();

                    if (!hasEndedTokens && isSimbol(PONTO_VIRGULA))
                    {
                        analisaBloco();
                    }
                    else
                    {
                        throwError(new CompiladorException(ERRO_SINTATICO), ERRO_PV);
                    }
                }
                else
                {
                    throwError(new CompiladorException(ERRO_SEMANTICO), DECL_PROC_ERROR);
                }
            }
            else
            {
                throwError(new CompiladorException(ERRO_SINTATICO), ERRO_FALTA);
            }

            Semantico.voltaNivel();
        }