Baixe o app para aproveitar ainda mais
Prévia do material em texto
Compiladores Time: Fernando Cabral Umberto Barros Atividade Parser Gramática utilizada no projeto 22/04/2021 ‹#› Gramática Livre de Contexto - Inicial A mesma elaborada pelo Profº Silvio Bandeira Gramática utilizada no projeto 22/04/2021 ‹#› Gramática Livre de Contexto - Final 22/04/2021 ‹#› Implementação Módulo do <bloco> Módulo da <expr_relacional> Código teste 1: tipo de falha 1 detectada: Parênteses não fechado 22/04/2021 ‹#› Demonstração Código teste 2: tipo de falha 2 detectada: Operador errado em uma operação relacional 22/04/2021 ‹#› Demonstração Código teste 3: tipo de falha 3 detectada: função principal sem fechamento 22/04/2021 ‹#› Demonstração Código teste 4: Deu tudo certo! 22/04/2021 ‹#› Demonstração -------- Lex -------- Token [Type: Reserved Word | Text: int | Line: 1 | Column: 3] Token [Type: Reserved Word | Text: main | Line: 1 | Column: 8] Token [Type: Special Character | Text: ( | Line: 1 | Column: 9] Token [Type: Special Character | Text: ) | Line: 1 | Column: 10] Token [Type: Special Character | Text: { | Line: 1 | Column: 12] Token [Type: Reserved Word | Text: float | Line: 3 | Column: 9] Token [Type: Identifier | Text: c | Line: 3 | Column: 11] Token [Type: Arithmetic Operator | Text: = | Line: 3 | Column: 13] Token [Type: Integer | Text: 88 | Line: 3 | Column: 16] Token [Type: Special Character | Text: ; | Line: 3 | Column: 17] Token [Type: Reserved Word | Text: int | Line: 4 | Column: 7] Token [Type: Identifier | Text: a | Line: 4 | Column: 9] Token [Type: Arithmetic Operator | Text: = | Line: 4 | Column: 11] Token [Type: Integer | Text: 1 | Line: 4 | Column: 13] Token [Type: Special Character | Text: , | Line: 4 | Column: 14] Token [Type: Identifier | Text: x | Line: 4 | Column: 16] Token [Type: Arithmetic Operator | Text: = | Line: 4 | Column: 18] Token [Type: Integer | Text: 5 | Line: 4 | Column: 20] Token [Type: Special Character | Text: ; | Line: 4 | Column: 21] Token [Type: Identifier | Text: x | Line: 5 | Column: 5] Token [Type: Arithmetic Operator | Text: = | Line: 5 | Column: 7] Token [Type: Integer | Text: 85 | Line: 5 | Column: 10] Token [Type: Special Character | Text: ; | Line: 5 | Column: 11] Token [Type: Reserved Word | Text: while | Line: 7 | Column: 9] Token [Type: Special Character | Text: ( | Line: 7 | Column: 11] Token [Type: Identifier | Text: a | Line: 7 | Column: 12] Token [Type: Relational Operator | Text: < | Line: 7 | Column: 14] Token [Type: Identifier | Text: x | Line: 7 | Column: 16] Token [Type: Special Character | Text: ) | Line: 7 | Column: 17] Token [Type: Special Character | Text: { | Line: 7 | Column: 19] Token [Type: Identifier | Text: a | Line: 8 | Column: 9] Token [Type: Arithmetic Operator | Text: = | Line: 8 | Column: 11] Token [Type: Identifier | Text: a | Line: 8 | Column: 13] Token [Type: Arithmetic Operator | Text: + | Line: 8 | Column: 15] Token [Type: Integer | Text: 1 | Line: 8 | Column: 17] Token [Type: Special Character | Text: ; | Line: 8 | Column: 18] Token [Type: Special Character | Text: } | Line: 9 | Column: 5] Token [Type: Reserved Word | Text: if | Line: 11 | Column: 6] Token [Type: Special Character | Text: ( | Line: 11 | Column: 8] Token [Type: Identifier | Text: a | Line: 11 | Column: 9] Token [Type: Relational Operator | Text: == | Line: 11 | Column: 12] Token [Type: Integer | Text: 5 | Line: 11 | Column: 14] Token [Type: Special Character | Text: ) | Line: 11 | Column: 15] Token [Type: Special Character | Text: { | Line: 11 | Column: 17] Token [Type: Identifier | Text: a | Line: 12 | Column: 9] Token [Type: Arithmetic Operator | Text: = | Line: 12 | Column: 11] Token [Type: Integer | Text: 10 | Line: 12 | Column: 14] Token [Type: Special Character | Text: ; | Line: 12 | Column: 15] Token [Type: Special Character | Text: } | Line: 13 | Column: 5] Token [Type: Reserved Word | Text: else | Line: 13 | Column: 10] Token [Type: Special Character | Text: { | Line: 13 | Column: 12] Token [Type: Identifier | Text: a | Line: 14 | Column: 9] Token [Type: Arithmetic Operator | Text: = | Line: 14 | Column: 11] Token [Type: Integer | Text: 20 | Line: 14 | Column: 14] Token [Type: Special Character | Text: ; | Line: 14 | Column: 15] Token [Type: Special Character | Text: } | Line: 15 | Column: 5] Token [Type: Reserved Word | Text: char | Line: 17 | Column: 8] Token [Type: Identifier | Text: newChar | Line: 17 | Column: 16] Token [Type: Arithmetic Operator | Text: = | Line: 17 | Column: 18] Token [Type: Char | Text: 'a' | Line: 17 | Column: 22] Token [Type: Special Character | Text: ; | Line: 17 | Column: 23] Token [Type: Reserved Word | Text: float | Line: 18 | Column: 9] Token [Type: Identifier | Text: i | Line: 18 | Column: 11] Token [Type: Arithmetic Operator | Text: = | Line: 18 | Column: 13] Token [Type: Integer | Text: 5 | Line: 18 | Column: 15] Token [Type: Special Character | Text: ; | Line: 18 | Column: 16] Token [Type: Reserved Word | Text: while | Line: 20 | Column: 9] Token [Type: Special Character | Text: ( | Line: 20 | Column: 11] Token [Type: Identifier | Text: i | Line: 20 | Column: 12] Token [Type: Relational Operator | Text: <= | Line: 20 | Column: 15] Token [Type: Integer | Text: 5 | Line: 20 | Column: 17] Token [Type: Special Character | Text: ) | Line: 20 | Column: 18] Token [Type: Special Character | Text: { | Line: 20 | Column: 20] Token [Type: Identifier | Text: i | Line: 21 | Column: 9] Token [Type: Arithmetic Operator | Text: = | Line: 21 | Column: 11] Token [Type: Identifier | Text: i | Line: 21 | Column: 13] Token [Type: Arithmetic Operator | Text: + | Line: 21 | Column: 15] Token [Type: Integer | Text: 1 | Line: 21 | Column: 17] Token [Type: Special Character | Text: ; | Line: 21 | Column: 18] Token [Type: Special Character | Text: } | Line: 22 | Column: 5] Token [Type: Reserved Word | Text: if | Line: 24 | Column: 6] Token [Type: Special Character | Text: ( | Line: 24 | Column: 8] Token [Type: Identifier | Text: i | Line: 24 | Column: 9] Token [Type: Relational Operator | Text: == | Line: 24 | Column: 12] Token [Type: Integer | Text: 5 | Line: 24 | Column: 14] Token [Type: Special Character | Text: ) | Line: 24 | Column: 15] Token [Type: Special Character | Text: { | Line: 24 | Column: 17] Token [Type: Identifier | Text: i | Line: 25 | Column: 9] Token [Type: Arithmetic Operator | Text: = | Line: 25 | Column: 11] Token [Type: Integer | Text: 10 | Line: 25 | Column: 14] Token [Type: Special Character | Text: ; | Line: 25 | Column: 15] Token [Type: Special Character | Text: } | Line: 26 | Column: 5] Token [Type: Special Character | Text: } | Line: 28 | Column: 1] -------- Syntax -------- Successfully Parsed OBS.: Quando foi apresentado a análise léxica, havia um conflito de idioma inglês/português. Nessa nova versão, com o analisador sintático, todo o programa foi refatorado para o inglês. Lista comandos testados e reconhecidos na atividade 22/04/2021 ‹#› Comandos reconhecidos if / else while atribuição de valor a uma variável e declaração de uma variável Limitações do compilador 22/04/2021 ‹#› Limitações O compilador não suporta os operadores de auto-incremento (++) e auto-decremento (--) O compilador não suporta condicionais com || (ou) e && (e) Apontar limitações do compilador 22/04/2021 ‹#› Mensagens de erro unexpected token unexpected end of file opening curly braces Expected identifier or number Expected operator Expected type Declaration Expected identifier Expected attribution operator Expected attribution operator, semicolon or comma Expected relational operator Expected opening Parenthesis Expected closing Parenthesis Expected if Expected Syntax Error: {X}, found {TIPO} ( {TERMO} ) at LINE {LINHA} and COLUMN {COLUNA} X Compiladores Time: Fernando Cabral Umberto Barros Atividade Parser
Compartilhar