An - PowerPoint PPT Presentation

About This Presentation
Title:

An

Description:

Title: Compiladores IF0xx Author: Andre Santos Last modified by: Andre Santos Created Date: 1/16/2001 12:15:25 AM Document presentation format – PowerPoint PPT presentation

Number of Views:69
Avg rating:3.0/5.0
Slides: 28
Provided by: AndreS190
Category:
Tags: object | subject | verb

less

Transcript and Presenter's Notes

Title: An


1
Análise Sintática Parte 1
  • Subfases
  • Análise léxica (scanning) transforma o texto do
    programa em uma sequëncia de tokens (símbolos
    como identificadores, literais, operadores,
    palavras-chave, pontuação etc.
  • Parsing verifica a seqüencia de tokens para
    determinar a estrutura das frases.
  • Representação da estrutura das frases (árvore
    sintática abstrata).

2
Programa e seqüencia de tokens
  • let var y Integerin ! new year
    (comentário) y y 1

let
var
Ident.
colon
Ident.
in
let
var
y

Integer
in
Ident.
becomes
Ident.
op
intlit
eot
y

y

1
3
Programa após parsing (1)
Program
Single-Command
Declaration
Single-Command


4
Programa após parsing (2)
Declaration
Single-Declaration
Type-Denoter
Ident.
Ident.
let
var
Ident.
colon
Ident.
in
let
var
y

Integer
in
5
Programa após parsing (3)
Single-Command
Expression
Expression
Primary-Expr.
Primary-Expr.
V-name
V-name
Int-Lit
Ident.
Ident.
op
op
intlit
eot
Ident.
becomes
Ident.
in

1
y

y
in
6
Abstract Syntax Trees
Program
LetCommand
AssignCommand
VarDeclaration
BinaryExpr.
SimpleV.
VnameExpr.
SimpleT.
IntExpr.
SimpleV.
Ident.
Ident.
Ident.
Op.
IntLit.
Ident.
y
Integer
y
1

y
7
Tokens em Java
  • public class Token public byte kindpublic
    String spellingpublic Token (byte kind, String
    spelling) this.kind kind this.spelling
    spelling

8
Tokens em Java
  • public final static byte IDENTIFIER 0,
    INTLITERAL 1, OPERATOR 2, BEGIN 3,
    CONST 4, DO 5, ELSE 6, END 7, IF 8,
    IN 9, LET 10, THEN 11, VAR 12, WHILE
    13, SEMICOLON 14, COLON 15, BECOMES 16,
    IS 17, LPAREN 18, RPAREN 19, EOT 20

9
Gramáticas
  • Uso de EBNF BNF expressões regulares
  • , , ( )
  • Exemplos
  • Mr Ms
  • M (rs)
  • pst
  • Ba(na)
  • M(rs)

10
BNF estendida
  • Expression primary-Expression
    (Operator primary-Expression)primary-Expression
    Identifier
    ( Expression )Identifier a b c d
    eOperator - /

11
Transformações em gramáticas Fatoração à esquerda
  • X Y X Z
  • X (Y Z)

12
Fatoração à esquerda exemplo
  • Single-command V-name expression if
    Expression then single-Command if Expression
    then single-Command else single-Command
  • Single-command V-name expression if
    Expression then single-Command ( ? else
    single-Command)

13
Transformações Eliminação de recursão à esquerda
  • N X N Y
  • N X (Y)

14
Eliminação de recursão à esquerda exemplo
  • Identifier Letter
    Identifier Letter
    Identifier Digit
  • Identifier Letter
    Identifier (Letter Digit)
  • Identifier Letter (Letter Digit)

15
Transformações substituição de símbolos não
terminais
  • single-Command for Control-Variable
    Expression
    To-or-Downto Expression do
    single-CommandControl-Variable
    IdentifierTo-or-Downto to downto
  • single-Command for Identifier
    Expression
    (to downto) Expression do single-Command

16
Starter sets (conjuntos iniciais)
  • starters X é o conjunto de símbolos terminais
    que podem iniciar uma string gerada por X
  • startershis her its h,i
  • starters(re)set r,s

17
Starter sets definição
  • starters?
  • starterst t
  • startersXY startersX ? startersY,
    se X gera ?
  • startersXY startersX, se X não gera ?
  • startersXY startersX ? startersY
  • startersX startersX

18
Starter sets exemplo
  • startersExpression startersprimary-Expr
    ession (Operator primary-Expression)
    startersprimary-Expression
    startersidentifier ? starters (
    Expression )
  • startersa b c d e ? (
  • a , b , c , d , e, (

19
Parsing
  • Algorítmos de parsing são classificados em
    bottom-up parsing e top-down parsing
  • Definem a ordem em que a parse tree é construída
    (na prática ela não é construída de verdade)

20
Gramática de micro-inglês
  • Sentence Subject Verb Object .Subject I
    a Noun the NounObject me a Noun the
    NounNoun cat mat ratVerb like is
    see sees

21
Bottom-up parsing
  • O parser examina os símbolos terminais da string
    de entrada, da esquerda para a direita, e
    reconstrói a árvore sintática de baixo (nós
    terminais) para cima (em direção ao nó-raiz).
  • Exemplo the cat sees a rat .

22
Bottom-up parsing
Verb
Noun
Noun
  • the cat sees a rat .

23
Top-down parsing
  • O parser examina os símbolos terminais da string
    de entrada, da esquerda para a direita, e
    reconstrói a árvore sintática de cima (nó-raiz)
    para baixo (em direção aos nós terminais).
  • Exemplo the cat sees a rat .

24
Top-down parsing
Sentence
Subject
Object
Verb
Noun
Noun
  • the cat sees a rat .

25
Recursive descent parsing
  • Top-down.
  • Grupo de N métodos parseN, um para cada símbolo
    não-terminal.
  • Elimine recursão à esquerda e fatorize à
    esquerda.
  • Cada método faz o parsing de uma frase-Nprivate
    void parseNoun()private void parseVerb()privat
    e void parseSubject()private void
    parseObject()private void parseSentence()

26
Parser class
  • Public class Parser private TerminalSymbol
    currentTerminalprivate void accept
    (TerminalSymbol
    expectedTerminal)
    if (currentTerminal matches expectedTerminal)
    currentTerminal next input terminal
    else report a syntax error

27
parseSentence
  • private void parseSentence ( ) parseSubject(
    ) parseVerb( ) parseObject( )
    accept(.)

28
parseSubject
  • private void parseSubject ( ) if
    (currentTerminal matches I) accept(I)
    else if (currentTerminal matches a)
    accept (a) parseNoun( ) else if
    (currentTerminal matches the)
    accept (the) parseNoun( ) else report
    syntax error

29
parseNoun
  • private void parseNoun ( ) if (currentTerminal
    matches cat) accept(cat) else if
    (currentTerminal matches mat)
    accept (mat) else if (currentTerminal
    matches rat) accept (rat)
    else report syntax error

30
parse
  • private void parse ( ) currentTerminal first
    input terminal parseSentence( ) check
    that no terminal follows the sentence
Write a Comment
User Comments (0)
About PowerShow.com