Escolar Documentos
Profissional Documentos
Cultura Documentos
Sintaxe e Semntica
Sintaxe e Semntica
Estrutura formada de acordo com Regras Gramaticais da Linguagem. (Estruturas Sintticas) Exemplo (condio diferente)
Semntica
Sintaxe e Semntica
Sintaxe
if (<expr>) <instruo>
Semntica
Uma linguagem uma conjunto de sentenas Uma sentena uma cadeia de tokens
Um lexema a unidade sinttica de mais baixo nvel de uma linguagem
Exemplos:
*, sum, begin, if
identificador, op_mult
Paradigmas de Programao prof Glucya Carreiro Boechat
Exemplo (C)
Resultado = 45 + Cont * 5;
Lexema
resultado = 45 + Cont *
Token
identificador sinal_igual int_literal op_soma Identificador op_mult
5
;
int_literal
ponto_e_virgula
Paradigmas de Programao prof Glucya Carreiro Boechat 5
Reconhecedores de linguagens
Dispositivo que recebe um token como entrada e verifica se o mesmo pertence a linguagem Exemplo:
Geradores de linguagens
Dispositivo que gera sentenas da linguagem Determinando se a sintaxe de uma sentena em particular est correta
Atravs de comparaes com a estrutura da linguagem gerada If <condio = true> then <instruo>
Paradigmas de Programao prof Glucya Carreiro Boechat 6
Mtodo mais usado para descrever a sintaxe das linguagens de programao Uma metalinguagem usada para descrever outras linguagens
Por apresentar algumas inconvenincias a BNF foi estendida Aumenta Legibilidade e Capacidade escrita da BNF
Paradigmas de Programao prof Glucya Carreiro Boechat 7
Desenvolvida por Noam Chomsky nos meados da dcada de 1950 Define uma classe de linguagens chamadas de linguagens livres de contexto Objetivo
Descrever a sintaxe das linguagens naturais So gramticas onde as regras de produo so definidas de forma mais livre
Inventada por John Backus para descrever o Algol 58 (International Algorithmic Language) BNF equivalente a gramticas livre de contexto BNF uma metalinguagem usada para descrever outras linguagens Em BNF, abstraes so usadas para representar classes de estruturas sintticas
BNF - Fundamentos
<ident_list> -> identifier | identifier , <ident_list> <if_stmt> -> if <expr_logica> then <stmt> <if_stmt> -> if <expr_logica> then <stmt> else <stmt>
Paradigmas de Programao prof Glucya Carreiro Boechat 10
Regras BNF
Uma gramtica um conjunto no vazio de regras Uma abstrao (ou smbolo no-terminal) pode ter mais de um RHS
<stmt> -> <single_stmt> | begin <stmt_list> end
Paradigmas de Programao prof Glucya Carreiro Boechat 11
Listas Sintticas
Derivao
comeando com um smbolo inicial finalizando com uma sentena (smbolos terminais)
12
<program> => <stmts> => <stmt> => <var> = <expr> => a = <expr> => a = <term> + <term> => a = <var> + <term> => a = b + <term> => a = b + const
<stmts>
<stmt>
<var>
<expr>
<term>
<term>
<var>
const
b
Paradigmas de Programao prof Glucya Carreiro Boechat 14
15
16
Ambigidade em gramticas
Uma gramtica ambgua se e somente se ela gera uma sentena que possui duas ou mais rvores de anlise distintas
17
18
A=B+C*A
19
20
=B+C*A
21
Calculadora simples
Com -> Expr
Expr -> Num | Expr + Num | Expr - Num | Expr * Num | Expr / Num Num -> Dig |Num Dig Dig -> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
Paradigmas de Programao prof Glucya Carreiro Boechat 22
1 Prioridade : *, /, and, ... 2 Prioridade : +, -, or, ... 3 Prioridade : =, >, <, ...
Expr -> tExpr | tExpr = tExpr | tExpr < tExpr | tExpr > tExpr
23
Associatividade de Operadores
Exemplo
25
Associatividade de Operadores
Exemplo
<expr> -> <expr> + <expr> | const (ambgua) <expr> -> <expr> + const | const (no-ambgua)
26
A=B+C+A
27
BNF estendida
Partes opcionais
<proc_call> -> ident [ ( <expr_list> ) ] <seleo> -> if ( <expresso> ) <instruo> [else <instruo>];
28
BNF estendida
Opes de mltipla escolha, so colocadas dentro de parnteses e separadas por barras verticais
<term> -> <term> ( + | - ) const <for_stmt> -> for <var> = <expr> ( to | downto ) <expr> do <stmt>
Indica zero ou repetio indefinida <ident> -> letter { letter | digit } <lista_ident> -> <identificador> { , <identificador> }
Paradigmas de Programao prof Glucya Carreiro Boechat 29
BNF e EBNF
BNF
30
Exerccios
31
Exerccios
Modificar a sintaxe previamente estabelecida para as expresses sejam avaliadas tendo as comparaes com maior precedncia (Ex.: A and (B=C)). Refaa a traduo das expresses considerando a nova sintaxe estabelecida.
32
Exerccios
Adicionar os operadores unrios ++, -- e not. Os operadores ++ e -- devem ter a mesma prioridade dos seus correspondentes binrios, e devem ser permitidos como pr ou ps. O operador not deve possuir uma prioridade mais alta do que todos os operadores j definidos.
33