Escolar Documentos
Profissional Documentos
Cultura Documentos
Tpicos da Aula
Introduo
Sintaxe: forma ou estrutura das expresses, declaraes, e unidades de programa Semntica: o significado das expresses, declaraes e unidades de programa Sintaxe e semntica fornecem a definio da linguagem
Uma sentena um conjunto de caracteres de algum alfabeto Uma linguagem um conjunto de sentenas Um lexema uma unidade sinttica de nvel mais baixo
Reconhecedores da linguagem
Um reconhecedor l um conjunto de caracteres de um alfabeto da linguagem e decide se o conjunto de caracteres faz parte da linguagem Exemplo: anlise sinttica de um compilador Gera sentenas de uma linguagem O reconhecedor pode determinar se a sintaxe de uma sentena particular est sintaticamente correta comparando-a com a estrutura do gerador
6
Geradores de linguagens
Desenvolvidas por Noam Chomsky em meados de 1950 Geradoras de linguagens, teis para descrever a sintaxe de linguagens naturais Define uma classe de linguagens chamadas linguagens livres de contexto Inventada por John Backus para descrever a ALGOL 58 BNF equivalente s gramticas livres de contexto
7
Fundamentos da BNF
Abstraes agem como variveis sintticas Tambm chamadas smbolos no-terminais No-terminais so delimitados por colchetes angulares: < >
Fundamentos da BNF
Uma regra tem um left-hand side (LHS), o qual um no-terminal, e um right-hand side (RHS), o qual um conjunto de terminais e/ou noterminais
Regras BNF
<if_stmt> if <expr_lgica> then <stmt> <if_stmt> if <expr_lgica> then <stmt> else <stmt>
ou
<if_stmt> if <expr_lgica> then <stmt> | if <expr_lgica> then <stmt> else <stmt>
10
Descrevendo Listas
11
Gramtica
12
Gramtica: Exemplo
<program> <stmts> <stmts> <stmt> | <stmt> ; <stmts> <stmt> <var> = <expr> <var> a | b | c | d <expr> <term> + <term> | <term> - <term> <term> <var> | const
13
Derivao
Uma derivao uma aplicao repetida de regras, iniciando com o smbolo start e finalizando com uma sentena
<program> <stmts> <stmt> <var> = <expr> a = <expr> a = <term> + <term> a = <var> + <term> a = b + <term> a = b + const
14
Derivao
Cada uma das strings de derivao chamada de forma sentencial Uma sentena uma forma sentencial que tem somente smbolos Em uma derivao esquerda os noterminais da esquerda so substitudos primeiro Em uma derivao direita os no-terminais da direita so substitudos primeiro
15
<term> const
Exemplo
Ambiguidade em gramticas
Uma gramtica ambgua se e somente se gera uma forma sentencial que tem duas ou mais rvores de anlise Impacto na execuo do programa
18
Ambiguidade em gramticas
<expr> <op>
<expr>
const - const /
const
const -
const / const
19
Ambiguidade em gramticas
Associatividade de Operadores
A = 8 + 4 + 2 14 A = 8 / 4 / 2 1 ou 4 ? A = 8 - 4 / 2 2 ou 6 ?
21
Associatividade de Operadores
<expr> <op>
<expr>
const - const /
const
const -
const / const
22
Associatividade de Operadores
23
Associatividade de Operadores
A=8/4/2 1
24
Associatividade de Operadores
<expr> <expr> - <term> | <term> <term> <term> / <factor> | <factor> <factor> const ^ <factor> | const
<expr> <term> <factor> 3 ^ <factor> 2 ^ <factor> 3
25
Resumo
26