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; } }
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 + "\""); } } }