Buscar

Apresentação do Parser

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 12 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 12 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 12 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Outros materiais