Sintaxe e Sem - PowerPoint PPT Presentation

About This Presentation
Title:

Sintaxe e Sem

Description:

Universidade Federal Rural de Pernambuco Departamento de Estat stica e Inform tica Sintaxe e Sem ntica Prof.: Gl ucya Carreiro Boechat glaucyacboechat_at_gmail.com – PowerPoint PPT presentation

Number of Views:102
Avg rating:3.0/5.0
Slides: 34
Provided by: glau151
Category:
Tags: sem | sintaxe

less

Transcript and Presenter's Notes

Title: Sintaxe e Sem


1
Sintaxe e Semântica
Universidade Federal Rural de Pernambuco Departame
nto de Estatística e Informática
Prof. Gláucya Carreiro Boechat
glaucyacboechat_at_gmail.com
2
Sintaxe e Semântica
  • Provêm a definição da linguagem
  • Sintaxe
  • A forma ou estrutura das expressões, das
    instruções e das unidades de programas
  • Estrutura formada de acordo com Regras
    Gramaticais da Linguagem. (Estruturas Sintáticas)
  • Exemplo (condição diferente)
  • Pascal ( ltgt ) C ( ! ) Ada ( / )
  • Semântica
  • O significado das expressões, das instruções e
    das unidades de programas
  • Identificação das seqüências de símbolos validos
    que constituem estruturas sintáticas

3
Sintaxe e Semântica
  • Exemplo comando if na linguagem C
  • Sintaxe
  • if (ltexprgt) ltinstruçãogt
  • Semântica
  • Se o valor da expressão for verdadeiro, a
    instrução será executada

4
Descrevendo a sintaxe terminologia
  • Uma linguagem é uma conjunto de sentenças
  • Uma sentença é uma cadeia de tokens
  • Um lexema é a unidade sintática de mais baixo
    nível de uma linguagem
  • Exemplos
  • , sum, begin, if
  • Um token é uma categoria dos lexemas
  • Seqüência de caracteres sobre um alfabeto
  • Exemplo
  • identificador, op_mult

5
Descrevendo a sintaxe terminologia
  • Exemplo (C)
  • Resultado 45 Cont 5

Lexema Token
resultado identificador
sinal_igual
45 int_literal
op_soma
Cont Identificador
op_mult
5 int_literal
ponto_e_virgula
6
Definição formal de linguagens
  • Reconhecedores de linguagens
  • Dispositivo que recebe um token como entrada e
    verifica se o mesmo pertence a linguagem
  • Exemplo
  • Análise Sintática (parte de um compilador)
  • Geradores de linguagens
  • Dispositivo que gera sentenças da linguagem
  • Determinando se a sintaxe de uma sentença em
    particular está correta
  • Através de comparações com a estrutura da
    linguagem gerada
  • If ltcondição truegt then ltinstruçãogt

7
Métodos formais para descrever a sintaxe
  • Forma de Backus-Naur (BNF)
  • Método mais usado para descrever a sintaxe das
    linguagens de programação
  • Uma metalinguagem é usada para descrever outras
    linguagens
  • Extended Backus Naur Form (EBNF)
  • Por apresentar algumas inconveniências a BNF foi
    estendida
  • Aumenta Legibilidade e Capacidade escrita da BNF

8
Gramáticas Livres de Contexto
  • Gramáticas Livres de Contexto
  • Desenvolvida por Noam Chomsky nos meados da
    década de 1950
  • Define uma classe de linguagens chamadas de
    linguagens livres de contexto
  • Objetivo
  • Descrever a sintaxe das linguagens naturais
  • São gramáticas onde as regras de produção são
    definidas de forma mais livre

9
Backus-Naur Form (BNF)
  • Backus-Naur Form (1959)
  • Inventada por John Backus para descrever o Algol
    58 (International Algorithmic Language)
  • BNF é equivalente a gramáticas livre de contexto
  • BNF é uma metalinguagem usada para descrever
    outras linguagens
  • Em BNF, abstrações são usadas para representar
    classes de estruturas sintáticas
  • Agem como variáveis sintáticas (também chamadas
    de símbolos não-terminais)

10
BNF - Fundamentos
  • Terminais lexemas e tokens
  • Não-terminais BNF abstrações
  • Atual como variáveis
  • Gramática uma coleção de regras
  • Exemplos de regras BNF
  • Atribuição em C(Representada pela abstração)
  • ltAtribuiçãogt  --gt  ltvargt ltexpressãogt 
  • ltident_listgt -gt identifier identifier ,
    ltident_listgt
  • ltif_stmtgt -gt if ltexpr_logicagt then ltstmtgt
  • ltif_stmtgt -gt if ltexpr_logicagt then ltstmtgt else
    ltstmtgt

11
Regras BNF
  • Uma regra possui
  • um lado esquerdo (LHS - Left Hand Side)
  • consiste de símbolos não-terminais
  • um lado direito (RHS - Right Hand Side),
  • consiste de símbolos terminais e não-terminais
  • Uma gramática é um conjunto não vazio de regras
  • Uma abstração (ou símbolo não-terminal) pode ter
    mais de um RHS
  • ltstmtgt -gt ltsingle_stmtgt
  • begin ltstmt_listgt end

12
Listas Sintáticas
  • Listas sintáticas são descritas usando recursão
  • ltident_listgt -gt ident
  • ident , ltident_listgt
  • Derivação
  • Aplicação de regras repetidas vezes,
  • começando com um símbolo inicial
  • finalizando com uma sentença (símbolos terminais)

13
Uma gramática para uma pequenalinguagem
  • ltprogramgt -gt begin ltstmtsgt end
  • ltstmtsgt -gt ltstmtgt
  • ltstmtgt ltstmtsgt
  • ltstmtgt -gt ltvargt ltexprgt
  • ltvargt -gt a b c d
  • ltexprgt -gt lttermgt lttermgt
  • lttermgt - lttermgt
  • lttermgt -gt ltvargt const

14
Exemplo gramática para uma pequena linguagem
ltprogramgt
ltstmtsgt ltstmtgt
ltvargt ltexprgt a
lttermgt lttermgt
ltvargt const
b
  • ltprogramgt gt ltstmtsgt
  • gt ltstmtgt
  • gt ltvargt ltexprgt
  • gt a ltexprgt
  • gt a lttermgt lttermgt
  • gt a ltvargt lttermgt
  • gt a b lttermgt
  • gt a b const

15
Uma gramática para instruções deatribuição
simples
  • ltassigngt -gt ltidgt ltexprgt
  • ltidgt -gt A B C
  • ltexprgt -gt ltidgt ltexprgt
  • ltidgt ltexprgt
  • ( ltexprgt )
  • ltidgt

16
Árvore de Análise (Parse Tree)
17
Ambigüidade em gramáticas
  • Uma gramática é ambígua se e somente se ela gera
    uma sentença que possui duas ou mais árvores de
    análise distintas

18
Uma gramática ambígua parainstruções de
atribuição simples
  • ltassigngt -gt ltidgt ltexprgt
  • ltexprgt -gt ltexprgt ltexprgt
  • ltexprgt ltexprgt
  • ( ltexprgt )
  • ltidgt
  • ltidgt -gt A B C

19
Duas árvores de análise para amesma sentença
  • A B C A

20
Uma gramática não-ambígua para expressões
  • indicar os níveis de precedência de operadores,
    não teremos ambigüidade
  • ltassigngt -gt ltidgt ltexprgt
  • ltexprgt -gt ltexprgt lttermgt
  • lttermgt
  • lttermgt -gt lt term gt ltfactorgt
  • ltfactorgt
  • ltfactorgt -gt ( ltexprgt )
  • ltidgt
  • ltidgt -gt A B C

21
A árvore de análise única para a expressão
  • A B C A

22
Exemplo Sintaxe para expressões
  • Calculadora simples
  • Com -gt Expr
  • Expr -gt Num
  • Expr Num
  • Expr - Num
  • Expr Num
  • Expr / Num
  • Num -gt Dig
  • Num Dig
  • Dig -gt 0 1 2 3 4 5 6 7 8 9

23
Exemplo2 Priorização em linguagens de
Programação
  • 1ª Prioridade , /, and, ...
  • 2ª Prioridade , -, or, ...
  • 3ª Prioridade , gt, lt, ...
  • Expr -gt tExpr
  • tExpr tExpr
  • tExpr lt tExpr
  • tExpr gt tExpr

24
Exemplo2 Priorização em linguagens de
Programação
  • tExpr -gt sExpr
  • tExpr sExpr
  • tExpr - sExpr
  • tExpr or sExpr
  • sExpr -gt pExpr
  • sExpr pExpr
  • sExpr / pExpr
  • sExpr and pExpr
  • pExpr -gt Lit
  • Var
  • (Exp)

25
Associatividade de Operadores
  • Associatividade de operadores podem ser indicados
    pela gramática
  • Exemplo
  • A B C A (adição é associativa)
  • A B / C / A   (divisão não é associativa)

26
Associatividade de Operadores
  • Exemplo
  • ltexprgt -gt ltexprgt ltexprgt const (ambígua)
  • ltexprgt -gt ltexprgt const const (não-ambígua)

27
Árvore de análise associatividade da adição
  • A B C A

28
BNF estendida
  • Adição de novas extensões
  • Uso de Colchetes no RHS
  • Partes opcionais
  • ltproc_callgt -gt ident ( ltexpr_listgt )
  • ltseleçãogt -gt if ( ltexpressãogt ) ltinstruçãogt else
    ltinstruçãogt 

29
BNF estendida
  • Uso de parenteses ( ) no RHS
  • Opções de múltipla escolha, são colocadas dentro
    de parênteses e separadas por barras verticais
  • lttermgt -gt lttermgt ( - ) const
  • ltfor_stmtgt -gt for ltvargt ltexprgt ( to downto )
    ltexprgt do ltstmtgt
  • Uso de chaves no RHS
  • Indica zero ou repetição indefinida
  • ltidentgt -gt letter letter digit
  • ltlista_identgt -gt ltidentificadorgt ,
    ltidentificadorgt  

30
BNF e EBNF
  • BNF
  • ltexprgt -gt ltexprgt lttermgt
  • ltexprgt - lttermgt
  • lttermgt
  • lttermgt -gt lttermgt ltfactorgt
  • lttermgt / ltfactorgt
  • ltfactorgt
  • ltfactorgt -gt ltexpgt ltfactorgt
  • ltexpgt
  • ltexpgt -gt ( ltexprgt )
  • id
  • EBNF
  • ltexprgt -gt lttermgt ( -) lttermgt
  • lttermgt -gt ltfactorgt ( / ) ltfactorgt
  • ltfactorgt -gt ltexpgt ltexpgt
  • ltexpgt -gt ( ltexprgt )
  • id

31
Exercícios
  • Traduzir as seguintes seqüências
  • 5 6 7
  • 5 6 7
  • 5 6 7
  • 5 3 2 7
  • A and B C
  • A or B C

32
Exercícios
  • Modificar a sintaxe previamente estabelecida para
    as expressões sejam avaliadas tendo as
    comparações com maior precedência (Ex. A and
    (BC)). Refaça a tradução das expressões
    considerando a nova sintaxe estabelecida.

33
Exercícios
  • Adicionar os operadores unários , -- e
    not. Os operadores e -- devem ter a
    mesma prioridade dos seus correspondentes
    binários, e devem ser permitidos como pré ou
    pós. O operador not deve possuir uma
    prioridade mais alta do que todos os operadores
    já definidos.
  • Represente as expressões --ab, ab--,
    ab e not A and B
Write a Comment
User Comments (0)
About PowerShow.com