relatorio sobre analisador sintatico

10
SISTEMAS DE INFORMAÇÃO DISCIPLINA: GRAMÁTICAS, AUTÔMATOS E COMPILADORES TRABALHO: ANÁLISE SINTÁTICA ALUNOS: PAULO GIOVANNY, ALISSON RANIEL E JOSELITO ANDRÉ RELATÓRIO 1. Gramática Prolog S -> A | R A -> id ( P ) . P -> id C | LISTA C | var C C ->, P | | ; P LISTA -> [ ELEMENTO ] . ELEMENTO -> id D | Lista D | D ->, ELEMENTO | R -> CABEÇA :- CORPO . CABEÇA ->id CABEÇA' CABEÇA' -> ( P ) | VAR -> VAR ( P ) | CORPO CORPO -> VAR is EXPRESSÃO | X EXPRESSÃO X -> id ( P ) , X EXPRESSÃO E | id B B -> OP | ( P ) E -> L E' E' -> + L E' | - L E' | L -> G L' L' -> * G L' | / G L' | div G L' | mod G L' | G -> id | num | ( E ) OP ->L id > | > = id | = H H -> L id | \ = id | := id | id

Upload: paulo-giovanny-bertulino

Post on 13-Sep-2015

223 views

Category:

Documents


6 download

DESCRIPTION

Criação de grupos first e análise de aceitação e rejeição de palavras.

TRANSCRIPT

SISTEMAS DE INFORMAODISCIPLINA: GRAMTICAS, AUTMATOS E COMPILADORESTRABALHO: ANLISE SINTTICAALUNOS: PAULO GIOVANNY, ALISSON RANIEL E JOSELITO ANDR

RELATRIO

1. Gramtica Prolog

S -> A | RA -> id ( P ) .P -> id C | LISTA C | var C C ->, P | | ; PLISTA -> [ ELEMENTO ] .ELEMENTO -> id D | Lista D | D ->, ELEMENTO | R -> CABEA :- CORPO .CABEA ->id CABEA'CABEA' -> ( P ) | VAR -> VAR ( P ) | CORPOCORPO -> VAR is EXPRESSO | X EXPRESSOX -> id ( P ) , X EXPRESSO E | id BB -> OP | ( P )E -> L E'E' -> + L E' | - L E' | L -> G L'L' -> * G L' | / G L' | div G L' | mod G L' | G -> id | num | ( E )OP ->L id > | > = id | = H H -> L id | \ = id | := id | id

2. Eliminao da Recursividade Esquerda e Fatorao

S -> A | RA -> id ( P ) .P -> id C | LISTA C | var C C ->, P | | ; PLISTA -> [ ELEMENTO ] .ELEMENTO -> id D | Lista D | D ->, ELEMENTO | R -> CABEA :- CORPO .CABEA ->id CABEA'CABEA' -> ( P ) | VAR -> VAR ( P ) VAR -> VAR VAR -> (P)VAR | CORPO -> VAR is EXPRESSO | X EXPRESSOX -> id(P),X | id(P)X -> id(P) XX -> X | EXPRESSO E | id BB -> OP | ( P )E -> L E'E' -> + L E' | - L E' | L -> G L'L' -> * G L' | / G L' | div G L' | mod G L' | G -> id | num | ( E )OP ->L id > | > = id | = H H -> L id | \= id | := id | id

3. Conjunto FIRST das Variveis da Gramtica

FIRST (S) = { id }FIRST (A) = { id }FIRST (P) = { id , [ , var }FIRST (C) = { , , , ;}FIRST (LISTA) = { [ }FIRST (ELEMENTO) = { id, Lista, }FIRST (D) = { , , }FIRST (R) = { id }FIRST (CABECA) = { id }FIRST (CABECA) = { ( }FIRST (VAR) = { ( }FIRST (VAR) = { ( , }FIRST (CORPO) = { ( , id }FIRST (X) = { id }FIRST (X) = { id , }FIRST (EXPRESSAO) = { id , num , ( }FIRST (B) = { id , num , ( }FIRST (E) = { id , num , ( }FIRST (E) = { + , - , }FIRST (L) = { id , num , ( }FIRST (L) = { * , / , div , mod , }FIRST (G) = { id , num , ( }FIRST (OP) = { id , num , ( , >= , = }FIRST (H) = { id , num , ( , \= , := }

4. 5. Fazer a verificao de 1 (um) trecho de cdigo mostrando a sua aceitao utilizando a Anlise Recursiva Preditiva

DERIVAOPALAVRA GERADA:Id(id,[id,id];id).

PALAVRA

SId(id,[id,id];id).

AId(id,[id,id];id).

Id(P).Id(id,[id,id];id).

(P).(id,[id,id];id).

Id C).id,[id,id];id).

,P).,[id,id];id).

LISTA C).[id,id];id).

[ELEMENTO];P).[id,id];id).

ELEMENTO]:P).id,id];id).

Id D];P).id,id];id).

,ELEMENTO];P).,id];id).

Id D];P).id];id).

D];P).];id).

];P).];id).

];P).];id).

;P).;id).

P).id).

Id C).id).

).).

).).

..

PALAVRA ACEITAId(id,[id,id];id).6. Fazer a verificao de 1 (um) trecho de cdigo mostrando a sua rejeio utilizando a Anlise Recursiva Preditiva

DERIVAOPALAVRA

SId(id)

AId(id)

Id(P).Id(id)

(P).(id)

Id C).id)

C). )

).)

).)

.

PALAVRA NO ACEITAId(id)

PALAVRA ESPERADAId(id).

7. Difculdades Encontradas

A realizao desse trabalho se mostrou relativamente mais simples do que a anlise lxica. A parte que demandou mais ateno foram as correes na gramtica para eliminao de recursividade a esquerda e ambiguidade, levando em considerao que foram percebidas algumas inconsistncias na gramtica original que foram corrigidas pela professora.A criao dos conjuntos FIRST das variveis tambm demanda ateno porque um trabalho repetitivo, bem como a posterior anlise preditiva.Para ns ficou claro, em linhas gerais, a mecnica de funcionamento de um analisador sinttico para aceitar ou rejeitar uma palavra.