Compiladores -gals
Relatório TAE3
Construção dos analisadores no GALS. Primeiro foi criado analisador léxico que identifica uma palavra pertencente a umalinguagem regular. Primeiro definido as Definições Regulares e depois os tokens.
Com estas opções é possível reconhecer um palavra como, abac, ou abac$, onde o $ servirá mais para frente como o aceita.
Segundo foi criado o analisador Sintático para verificar a consistência da linguagem,onde verifica se realmente tem sentido, como uma conta de somar, no caso um ou, idvid, onde o v- está como um ou.
Exemplo onde verificou a consistência de uma palavra onde neste caso reconhecida.
A gramática neste caso é um pouco limitada, onde reconhece poucas palavras. A tabela gerada pelo gals, onde indica estado, o item a ser trocado e o desvio.
Como mostrado acima esta gramatica é bem simples, reconhecendo um conjunto de palavras pequeno.
Foi gerado o conjunto de FIRST e FOLLOW, onde mostra os símbolos terminais e os não terminais.
Segue abaixo a tabela de analise SLR, onde mostra ação e transição(desvio).
Exemplo aceito:
abac$
Pilha 0 0a5 0 2 0 2 b 6 0 2 b 6 a 5 0 2 b6 11 0 2 b 6 11 c 8 0 2 b 6 13 0 2 7 0 1
Entrada abac$ bac$ bac$ ac$ c$ c$ $ $ $ $
Ação/Transição Shift(5) – Empilha a 5 Reduce(0) – (trans.5) Shift(6) – Empilha b 6 Shift(5) – Empilha a 5 Reduce(0)- ( trans. 5) Shift(8) – Empilha c 8 Reduce(2) – (trans. 8) Reduce(6)- (trans. 6) Reduce(4)- (trans. 7) Accept
Exemplo rejeitado: aca$
Pilha 0 0a5 0 2 0 2 c 8 0 8
Entrada aca$ ca$ ca$ a$ a$
Ação/Transição Shift(5) – Empilha a 5 Reduce(0) – (trans.0) Shift(8) –Empilha c 8 Reduce(2) – (trans. 8) Reduce(2)- (trans. 8< Rejeitado
Os exemplos acima foram testados utilizando como base a tabela de itens, e a tabela de Análise SLR, porém a tabela de itens foi um pouco complicada de entendê-la, porém testados.