コード例 #1
0
        private void LexicalMenuItem_Click(object sender, EventArgs e)
        {
            MyGrid.DataSource = null;
            lexicalAnalysis   = new Lexical();
            ReadToken.ResetReadToken();

            int status = lexicalAnalysis.Analysis(filePath);

            var bindingList = new BindingList <ReadToken>(lexicalAnalysis.ReadTokens);
            var source      = new BindingSource(bindingList, null);

            MyGrid.Visible    = true;
            MyGrid.DataSource = source;

            switch (status)
            {
            case -1:
                MyGrid.Visible = false;
                MessageBox.Show("Erro durante a leitura do arquivo", "Erro Fatal");
                break;

            case 0:
                MessageBox.Show("A análise léxica foi concluída com sucesso.", "Sucesso!");
                break;

            case 1:
                MessageBox.Show("Houve erro na análise léxica." +
                                "\nLexema: " + lexicalAnalysis.Lexema + " não corresponde a um token.\n" +
                                "O erro ocorreu na linha: " + lexicalAnalysis.Line + " na posição: " + lexicalAnalysis.Pos, "Erro léxico - Token inválido");
                break;

            case 2:
                MessageBox.Show("Houve erro na análise léxica." +
                                "\nIndentenção com espaços não são multiplos de 4.\n" +
                                "O erro ocorreu na linha: " + lexicalAnalysis.Line, "Erro léxico - Indentação");
                break;

            case 3:
                MessageBox.Show("Houve erro na análise léxica." +
                                "\nString não encontrou as aspas finais.\n" +
                                "O erro ocorreu na linha: " + lexicalAnalysis.Line, "Erro léxico - String");
                break;
            }
        }
コード例 #2
0
 private void SintaticalMenuItem_Click(object sender, EventArgs e)
 {
     if (lexicalAnalysis.ReadTokens.Count == 0)
     {
         MessageBox.Show("A lista de tokens está vazia, execute a análise léxica primeiramnte.");
     }
     else
     {
         Syntactic sintaticlAnalysis = new Syntactic(lexicalAnalysis.ReadTokens);
         if (sintaticlAnalysis.Analysis())
         {
             MessageBox.Show("A análise sintática foi concluida com sucesso.");
         }
         else
         {
             ReadToken erro = sintaticlAnalysis.ErroToken();
             MessageBox.Show("Ocorreu um erro na análise sintática na linha " + erro.Linha + " na coluna " + erro.Coluna
                             + " ao analisar o token " + erro.Token + " cujo lexema é \"" + erro.Lexema + "\"");
         }
     }
 }