analise sintÁtica aula-07-analise-sintática.pdf. termos utilizados em linguagem de programaÇÃo...
TRANSCRIPT
![Page 1: ANALISE SINTÁTICA aula-07-analise-sintática.pdf. TERMOS UTILIZADOS EM LINGUAGEM DE PROGRAMAÇÃO Símbolo: são os elementos mínimos que compõe uma linguagem](https://reader038.vdocuments.site/reader038/viewer/2022110305/552fc15f497959413d8e6e3a/html5/thumbnails/1.jpg)
ANALISE SINTÁTICAaula-07-analise-sintática.pdf
![Page 2: ANALISE SINTÁTICA aula-07-analise-sintática.pdf. TERMOS UTILIZADOS EM LINGUAGEM DE PROGRAMAÇÃO Símbolo: são os elementos mínimos que compõe uma linguagem](https://reader038.vdocuments.site/reader038/viewer/2022110305/552fc15f497959413d8e6e3a/html5/thumbnails/2.jpg)
TERMOS UTILIZADOS EM LINGUAGEM DE PROGRAMAÇÃO
• Símbolo: são os elementos mínimos que compõe uma linguagem. Na linguagem humana são as letras.
• Sentença: É um conjunto ordenado de símbolos que forma uma cadeia ou string. Na linguagem humana são as frases.
• Alfabeto: É um conjunto de símbolos. Na linguagem humana é o conjunto de letras {a, b, c, d, ...}
• Linguagem: É o conjunto de sentenças, Na linguagem humana são os conjuntos de palavras {compiladores, linguagem, ...}
• Gramática: É uma forma de representar as regras para formação de uma linguagem.
![Page 3: ANALISE SINTÁTICA aula-07-analise-sintática.pdf. TERMOS UTILIZADOS EM LINGUAGEM DE PROGRAMAÇÃO Símbolo: são os elementos mínimos que compõe uma linguagem](https://reader038.vdocuments.site/reader038/viewer/2022110305/552fc15f497959413d8e6e3a/html5/thumbnails/3.jpg)
ANALISE SINTÁTICA• O que é sintaxe? Parte da gramática que estuda a disposição das palavras na frase e das
frases no discurso, bem como a relação lógica das frases entre si. (AURELIO, 2004).
• É a segunda fazer do processo de compilação e sua função é verificar se as construções utilizadas no programa estão gramaticalmente corretas.
• As estruturas sintáticas ou gramaticais podem ser especificadas através das Gramaticas Livres de Contexto -GLC.
![Page 4: ANALISE SINTÁTICA aula-07-analise-sintática.pdf. TERMOS UTILIZADOS EM LINGUAGEM DE PROGRAMAÇÃO Símbolo: são os elementos mínimos que compõe uma linguagem](https://reader038.vdocuments.site/reader038/viewer/2022110305/552fc15f497959413d8e6e3a/html5/thumbnails/4.jpg)
ANALISE SINTÁTICA• Dada uma GLC “G” e uma sentença “s” o objetivo do analisador sintático é verificar se a
sentença “s” pertence a linguagem “G”.
• O analisador sintático também é conhecido como parser e recebe do analisador léxico a sequência de tokens que constitui a sentença “s”
• A analise sintática produz uma árvore de derivação se a sentença é válida ou emite um erro sintático.
• O analisador sintático deve ser projetado para que a análise seja feita até o fim do programa mesmo que encontre erros no texto do programa fonte.
![Page 5: ANALISE SINTÁTICA aula-07-analise-sintática.pdf. TERMOS UTILIZADOS EM LINGUAGEM DE PROGRAMAÇÃO Símbolo: são os elementos mínimos que compõe uma linguagem](https://reader038.vdocuments.site/reader038/viewer/2022110305/552fc15f497959413d8e6e3a/html5/thumbnails/5.jpg)
ANALISE SINTÁTICA• Duas estratégias para implementar a analise sintática.
• Top-down ou descendente: constrói a árvore de derivação a partir do símbolo inicial da gramatica fazendo a árvore crescer até as suas folhas.
• Bottom-up ou ascendente: Faz a análise no sentido inverso, ou seja, constrói a árvore de derivação das folhas até o símbolo inicial da gramatica.
![Page 6: ANALISE SINTÁTICA aula-07-analise-sintática.pdf. TERMOS UTILIZADOS EM LINGUAGEM DE PROGRAMAÇÃO Símbolo: são os elementos mínimos que compõe uma linguagem](https://reader038.vdocuments.site/reader038/viewer/2022110305/552fc15f497959413d8e6e3a/html5/thumbnails/6.jpg)
ANALISE SINTÁTICA - PROCESSO
• O analisador léxico é desenvolvido para reconhecer os tokens fazendo uma leitura dos caracteres e obtendo sequencia de tokens.
• O analisador léxico vê o texto como uma sequência de palavras de uma linguagem regular e reconhece ele através de um autômato finito ou expressão regular.
• Já o analisador sintático vê o mesmo texto como uma sequência de sentenças que deve satisfazer as regras gramaticais.
• É através da gramatica que podemos validar expressões criadas na linguagem de programação.
• O analisador sintático agrupa os tokens em frases gramaticais usadas pelo compilador com o objetivo de criar uma saída que é uma estrutura de dados que possui a hierarquia da entrada a árvore de derivação.
![Page 7: ANALISE SINTÁTICA aula-07-analise-sintática.pdf. TERMOS UTILIZADOS EM LINGUAGEM DE PROGRAMAÇÃO Símbolo: são os elementos mínimos que compõe uma linguagem](https://reader038.vdocuments.site/reader038/viewer/2022110305/552fc15f497959413d8e6e3a/html5/thumbnails/7.jpg)
ANALISE SINTÁTICA - PROCESSO
• Exemplo de uma árvore de derivação.
![Page 8: ANALISE SINTÁTICA aula-07-analise-sintática.pdf. TERMOS UTILIZADOS EM LINGUAGEM DE PROGRAMAÇÃO Símbolo: são os elementos mínimos que compõe uma linguagem](https://reader038.vdocuments.site/reader038/viewer/2022110305/552fc15f497959413d8e6e3a/html5/thumbnails/8.jpg)
ANALISE SINTÁTICA - PROCESSO
• Estrutura sintática de um código fonte
![Page 9: ANALISE SINTÁTICA aula-07-analise-sintática.pdf. TERMOS UTILIZADOS EM LINGUAGEM DE PROGRAMAÇÃO Símbolo: são os elementos mínimos que compõe uma linguagem](https://reader038.vdocuments.site/reader038/viewer/2022110305/552fc15f497959413d8e6e3a/html5/thumbnails/9.jpg)
ANALISE SINTÁTICA - PROCESSO
• Entende-se por regras gramaticas as formas como podemos descrever a estrutura sintática do programa.
• No modelo de compilador que está sendo estudado o analisador sintático recebe do analisador léxico uma cadeia de tokens representado o programa fonte.
• O analisador sintático verifica se essas cadeias pertencem a linguagem definhada pela gramatica. Veja um exemplo no diagrama abaixo demostrando esse processo.
![Page 10: ANALISE SINTÁTICA aula-07-analise-sintática.pdf. TERMOS UTILIZADOS EM LINGUAGEM DE PROGRAMAÇÃO Símbolo: são os elementos mínimos que compõe uma linguagem](https://reader038.vdocuments.site/reader038/viewer/2022110305/552fc15f497959413d8e6e3a/html5/thumbnails/10.jpg)
ANALISE SINTÁTICA - PROCESSO
![Page 11: ANALISE SINTÁTICA aula-07-analise-sintática.pdf. TERMOS UTILIZADOS EM LINGUAGEM DE PROGRAMAÇÃO Símbolo: são os elementos mínimos que compõe uma linguagem](https://reader038.vdocuments.site/reader038/viewer/2022110305/552fc15f497959413d8e6e3a/html5/thumbnails/11.jpg)
ANALISE SINTÁTICA - PROCESSO
![Page 12: ANALISE SINTÁTICA aula-07-analise-sintática.pdf. TERMOS UTILIZADOS EM LINGUAGEM DE PROGRAMAÇÃO Símbolo: são os elementos mínimos que compõe uma linguagem](https://reader038.vdocuments.site/reader038/viewer/2022110305/552fc15f497959413d8e6e3a/html5/thumbnails/12.jpg)
ANALISE SINTÁTICA - PROCESSO
• Descubra os erros sintáticos da seguinte expressão
01 private static Integer maior(Integer numero01 Integer numero02) {02 if (numero01 > numero02) {03 return numero0104 } else {05 return numero02;06 07 }
![Page 13: ANALISE SINTÁTICA aula-07-analise-sintática.pdf. TERMOS UTILIZADOS EM LINGUAGEM DE PROGRAMAÇÃO Símbolo: são os elementos mínimos que compõe uma linguagem](https://reader038.vdocuments.site/reader038/viewer/2022110305/552fc15f497959413d8e6e3a/html5/thumbnails/13.jpg)
GRAMATICA LIVRE DE CONTEXTO
• A Gramatica Livre de Contexto ajuda a especificar a sintaxe de uma linguagem.
• A GLC é a base para a análise sintática das linguagens de programação e permitem descrever a maioria das linguagens de programação usadas atualmente.
• Uma gramatica descreve naturalmente como é possível fazer construções em linguagem de programação.
• Veja o exemplo de um comando if-else em Pascal que deve ter a seguinte forma
if (expressão) then declaração else declaracao ;
![Page 14: ANALISE SINTÁTICA aula-07-analise-sintática.pdf. TERMOS UTILIZADOS EM LINGUAGEM DE PROGRAMAÇÃO Símbolo: são os elementos mínimos que compõe uma linguagem](https://reader038.vdocuments.site/reader038/viewer/2022110305/552fc15f497959413d8e6e3a/html5/thumbnails/14.jpg)
GRAMATICA LIVRE DE CONTEXTO
• Essa mesma forma em uma Gramatica Livre de Contexto pode ser expressada da seguinte maneira:
declaracao → if ( expressao ) then declaracao else declaracao;
expressao → id > id
declaracao → ...
...
![Page 15: ANALISE SINTÁTICA aula-07-analise-sintática.pdf. TERMOS UTILIZADOS EM LINGUAGEM DE PROGRAMAÇÃO Símbolo: são os elementos mínimos que compõe uma linguagem](https://reader038.vdocuments.site/reader038/viewer/2022110305/552fc15f497959413d8e6e3a/html5/thumbnails/15.jpg)
GRAMATICA LIVRE DE CONTEXTO
• As linguagens regulares podem ser reconhecidas através de expressões regulares criando um analisador léxico (exemplo JFlex).
• Uma linguagem livre de contexto pode ser reconhecida autômatos de pilha que a descrevem a forma como podemos criar analisadores sintáticos (exemplo JCUP).
![Page 16: ANALISE SINTÁTICA aula-07-analise-sintática.pdf. TERMOS UTILIZADOS EM LINGUAGEM DE PROGRAMAÇÃO Símbolo: são os elementos mínimos que compõe uma linguagem](https://reader038.vdocuments.site/reader038/viewer/2022110305/552fc15f497959413d8e6e3a/html5/thumbnails/16.jpg)
GRAMATICA LIVRE DE CONTEXTO
• A definição de uma gramatica livre de contexto pode ser representada da seguinte forma:
G = (N, T, P, S)
• Onde:
• N – Conjunto finito de símbolos não terminais.
• T – Conjunto finito de símbolos terminais.
• P – Conjunto de regras de produções.
• S – Símbolo inicial da gramatica
![Page 17: ANALISE SINTÁTICA aula-07-analise-sintática.pdf. TERMOS UTILIZADOS EM LINGUAGEM DE PROGRAMAÇÃO Símbolo: são os elementos mínimos que compõe uma linguagem](https://reader038.vdocuments.site/reader038/viewer/2022110305/552fc15f497959413d8e6e3a/html5/thumbnails/17.jpg)
GRAMATICA LIVRE DE CONTEXTO
• Terminologias:
• Símbolos terminais: símbolos básicos que formas as cadeias, são os tokens da linguagem de programação.
• Símbolos não terminais: variáveis sintáticas utilizadas para auxiliar a definição da linguagem, são compostas de símbolos terminas e pelos próprios símbolos não terminais.
• Regras de produções: regras sintáticas que indicam como símbolos terminais e não terminais podem ser combinados.
• Símbolo inicial: Inicio da validação da produção representado por um símbolo não terminal.
![Page 18: ANALISE SINTÁTICA aula-07-analise-sintática.pdf. TERMOS UTILIZADOS EM LINGUAGEM DE PROGRAMAÇÃO Símbolo: são os elementos mínimos que compõe uma linguagem](https://reader038.vdocuments.site/reader038/viewer/2022110305/552fc15f497959413d8e6e3a/html5/thumbnails/18.jpg)
GRAMATICA LIVRE DE CONTEXTO
• Derivações: É a substituição das setnteças iniciando pelo símbolo inicial substituindo os símbolos não terminais pelos símbolos terminais.
• Tipos de derivação:
• Mais à esquerda: trocamos os símbolos não terminais mais à esquerda.
• Mais à direita: trocamos os símbolos não terminais mais a direita
![Page 19: ANALISE SINTÁTICA aula-07-analise-sintática.pdf. TERMOS UTILIZADOS EM LINGUAGEM DE PROGRAMAÇÃO Símbolo: são os elementos mínimos que compõe uma linguagem](https://reader038.vdocuments.site/reader038/viewer/2022110305/552fc15f497959413d8e6e3a/html5/thumbnails/19.jpg)
![Page 20: ANALISE SINTÁTICA aula-07-analise-sintática.pdf. TERMOS UTILIZADOS EM LINGUAGEM DE PROGRAMAÇÃO Símbolo: são os elementos mínimos que compõe uma linguagem](https://reader038.vdocuments.site/reader038/viewer/2022110305/552fc15f497959413d8e6e3a/html5/thumbnails/20.jpg)
EXEMPLOS
• Derivações: É a substituição das setnteças iniciando pelo símbolo inicial substituindo os símbolos não terminais pelos símbolos terminais.
• Tipos de derivação:
• Mais à esquerda: trocamos os símbolos não terminais mais à esquerda.
• Mais à direita: trocamos os símbolos não terminais mais a direita
![Page 21: ANALISE SINTÁTICA aula-07-analise-sintática.pdf. TERMOS UTILIZADOS EM LINGUAGEM DE PROGRAMAÇÃO Símbolo: são os elementos mínimos que compõe uma linguagem](https://reader038.vdocuments.site/reader038/viewer/2022110305/552fc15f497959413d8e6e3a/html5/thumbnails/21.jpg)
LINGUAGEM DE PROGRAMAÇÃO AB
Definindo a gramatica da linguagem
G = ( {LITERAL}, {a, b}, PALAVRA, LITERAL )
Definindo a regra de produção
PALAVRA { LITERAL → aLITERALb | Ø }
Identificando as terminologias
Símbolos terminais a e bSímbolos não terminais: LITERALSímbolo inicial: LITERALRegra de produção: PALAVRA
Derivação a direita para saber se aabb fazer parte da linguagem
LITERAL → aLITERALb
LITERAL → aaLITERALbb
LITERAL → aaØbb
Com a gramática acima é possível dizer que palavra aab da linguagem?
![Page 22: ANALISE SINTÁTICA aula-07-analise-sintática.pdf. TERMOS UTILIZADOS EM LINGUAGEM DE PROGRAMAÇÃO Símbolo: são os elementos mínimos que compõe uma linguagem](https://reader038.vdocuments.site/reader038/viewer/2022110305/552fc15f497959413d8e6e3a/html5/thumbnails/22.jpg)
EXPRESSÕES MATEMÁTICAS SOMA E MULTIPLICAÇÃO
Definindo a gramatica da linguagem
G = ( {EXP }, { +, *, (, ), x }, OPR, EXP)
Definindo a regra de produção
OPR { EXP → EXP + EXP | EXP * EXP | (EXP) | x}
Identificando as terminologias
Símbolos terminais + , *, (, ), xSímbolos não terminais: EXPSímbolo inicial: EXPRegra de produção: OPR
![Page 23: ANALISE SINTÁTICA aula-07-analise-sintática.pdf. TERMOS UTILIZADOS EM LINGUAGEM DE PROGRAMAÇÃO Símbolo: são os elementos mínimos que compõe uma linguagem](https://reader038.vdocuments.site/reader038/viewer/2022110305/552fc15f497959413d8e6e3a/html5/thumbnails/23.jpg)
EXPRESSÕES MATEMÁTICAS SOMA E MULTIPLICAÇÃO
Derivação a direita para saber se a expressão (x + x) * x fazer parte da linguagem
EXP → EXP * EXP
EXP → (EXP) * EXP
EXP → (EXP + EXP) * EXP
EXP → (x + EXP) * EXP
EXP → (x + x) * EXP
EXP → (x + x) * x
Com a gramática acima é possível dizer que x - x é uma expressão valida?
OPR { EXP → EXP + EXP | EXP * EXP | (EXP) | x}
![Page 24: ANALISE SINTÁTICA aula-07-analise-sintática.pdf. TERMOS UTILIZADOS EM LINGUAGEM DE PROGRAMAÇÃO Símbolo: são os elementos mínimos que compõe uma linguagem](https://reader038.vdocuments.site/reader038/viewer/2022110305/552fc15f497959413d8e6e3a/html5/thumbnails/24.jpg)
EXPRESSÕES MATEMÁTICAS SOMA E MULTIPLICAÇÃO COMPLETO
Definindo a gramatica da linguagem
G = ({EXP, OP}, {+, *, +, -, (, ), id, numero}, OPR, EXP)
Definindo a regra de produção
OPR { EXP → EXP OP EXP | (EXP) | -EXP | id | numero OP → + | - | * | /}
Identificando as terminologias
Símbolos terminais + , *, (, ), x, +, -, id, numeroSímbolos não terminais: EXP, OPSímbolo inicial: EXPRegra de produção: OPR
![Page 25: ANALISE SINTÁTICA aula-07-analise-sintática.pdf. TERMOS UTILIZADOS EM LINGUAGEM DE PROGRAMAÇÃO Símbolo: são os elementos mínimos que compõe uma linguagem](https://reader038.vdocuments.site/reader038/viewer/2022110305/552fc15f497959413d8e6e3a/html5/thumbnails/25.jpg)
EXPRESSÕES MATEMÁTICAS SOMA E MULTIPLICAÇÃO COMPLETO
Derivação a direita para saber se a expressão a + b fazer parte da linguagem
EXP → EXP OP EXP
EXP → EXP OP id
EXP → EXP + id
EXP → id OP id
EXP → id + id
Com a gramática acima é possível dizer que qualquer expressão matemática é uma expressão valida?
OPR { EXP → EXP OP EXP | (EXP) | -EXP | id | numero OP → + | - | * | /}
![Page 26: ANALISE SINTÁTICA aula-07-analise-sintática.pdf. TERMOS UTILIZADOS EM LINGUAGEM DE PROGRAMAÇÃO Símbolo: são os elementos mínimos que compõe uma linguagem](https://reader038.vdocuments.site/reader038/viewer/2022110305/552fc15f497959413d8e6e3a/html5/thumbnails/26.jpg)
EXPRESSÕES MATEMÁTICAS SOMA E MULTIPLICAÇÃO COMPLETO
Com a gramática acima é possível dizer que qualquer expressão matemática é uma expressão valida?
OPR { EXP → EXP OP EXP | (EXP) | -EXP | id | numero OP → + | - | * | /}
Derivação a direita para saber se a expressão -1 fazer parte da linguagem
EXP → OP EXP
EXP → OP numero
EXP → - numero
![Page 27: ANALISE SINTÁTICA aula-07-analise-sintática.pdf. TERMOS UTILIZADOS EM LINGUAGEM DE PROGRAMAÇÃO Símbolo: são os elementos mínimos que compõe uma linguagem](https://reader038.vdocuments.site/reader038/viewer/2022110305/552fc15f497959413d8e6e3a/html5/thumbnails/27.jpg)
DICAS PARA CRIAR UMA GRAMATICA LIVRE DE CONTEXTO
• Conhecer todos os tokens.
• Criar a regra de produção.
• Especificar a gramatica.
• Ex: G = ( {A, B, C}, {int, id, numero, +, -}, P, A )
• Fazer a derivação.
![Page 28: ANALISE SINTÁTICA aula-07-analise-sintática.pdf. TERMOS UTILIZADOS EM LINGUAGEM DE PROGRAMAÇÃO Símbolo: são os elementos mínimos que compõe uma linguagem](https://reader038.vdocuments.site/reader038/viewer/2022110305/552fc15f497959413d8e6e3a/html5/thumbnails/28.jpg)
EXERCÍCIOS SEÇÃO 5