relatorio sobre analisador sintatico
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.