1. Problema
Trocaria Prioridades por Prioridades entre
operandos
Prioridades
entre operadores
2.Solução
Avaliar Regras (Lisa de Tokens, Lista de Regras) até gerar
valor. É só para dizer
que valor é gerado na
fução Avaliar Regras
OK
Colocar uma notação: função
entrada:função saida
3.Analise Sintaxe
E se der erro, não aparece mensagem ???
qual melhor
- atual
deu certo: oba! faz alguma coisa
não deu certo: hi! falhou!
- solução do javascript:
deu certo? oba! faz alguma coisa: hi! falhou!
4 Avaliar Regras
n poderia ser trocado por posicao na lista de token
ok
Onde é gerada a lista de regra?? Não aparece nem entrada nem
em Analisar Sintaxe.
quem atualiza é o especialista da área, faz parte da especificação do problema (e solução)
5.Dados para Analisar Sintaxe
Máquina de Mealy
É autômato finito determinístico com saídas associadas às transições
Uma aplicação comum e freqüentemente recomendada
para os autômatos com saída é o projeto de diálogo entre um programa (de
computador) e o seu usuário. Neste caso, o diálogo poderia se dar de
duas maneiras: ser comandado pelo programa ou pelo usuário.
Máquina de Moore
Autômato Finito Determinístico com suas saídas
associadas aos estados
Um
exemplo comum de aplicação do conceito de Máquina de Moore é o
desenvolvimento de Analisadores Léxicos de compiladores ou tradutores
de linguagens em geral.
Conclusão: As
máquinas de Mealy e de Moore são equivalentes. As Máquinas de Moore e
de Mealy são Autômatos Finitos com Saída. Elas
são equivalentes para entradas não vazias. Com uma entrada vazia a
Máquina de Mealy não gera saída pois não executa nenhuma transição (a
saída está associada à transição), enquanto que a Máquina de Moore gera
a palavra correspondente ao estado inicial (a saída está associada ao
estado). Segundo [Menezes] uma Máquina de Mealy possui, em geral, menos
estados que a correspondente Máquina de Moore.
Sugestão
As duas tabelas (matriz de transições e ações) poderiam se unir e ficar
assim
estado atual |
proximo estado |
saidas |
entrada atual |
entrada atual |
0 |
1 |
2 |
3 |
4 |
0 |
1 |
2 |
3 |
4 |
0 |
0 |
1 |
2 |
. |
. |
. |
. |
a |
. |
. |
1 |
0 |
. |
. |
. |
. |
. |
. |
. |
. |
. |
2 |
. |
. |
. |
1 |
. |
. |
. |
. |
b |
. |
A idéia é muito boa, simplifica. Outras possibilidades
- vertical
- só uma, não precisa Lista de
Ações (ação).
trivial para qualquer linguagem de programação
transição: tabela (0, estado, estado) => estado
ações: executarAçoes (tabela (1, estado, estado))
- Tabela de Decisões! será?............
estado =
. entrada =
0 0 * 0
0 1 * 1
0 2 * 2 / a
1 0 * 0
2 3 * 1 / b
- outra Tabela de Decisões?........... não precisa Lista de
Ações (ação).
Deve ser bom para matrizes esparsas: nosso exemplo matriz de transições: 5/15 = 33%; matriz de ações: 2 / 15 = 13%
complicando: serve para matrizes n dimensionais; complicando mais: amantes de hypercubos terão mais prazer
A sintaxe permite que {transições e ações} usem {tabela de decisões, matrizes, listas}
- token, Tipo de Token, prioridade
=> Lista de Token
- estado =
. entrada =
0 0 * 0 => estado
0 1 * 1 => estado
0 2 * 2 => estado
* Analisar Sintaxe (ExpressaoAritmetica,
Matriz de Transições, Matriz de Ações, EstadoInicial, EstadosFinais,
TipoToken, ListaAcoes)
1 4 * 0 => estado
2 3 * 1 => estado
* return
estado =
. entrada =
0 2 * Analisar Sintaxe (ExpressaoAritmetica,
Matriz de Transições, Matriz de Ações, EstadoInicial, EstadosFinais,
TipoToken, ListaAcoes)
2 3 * return
Faltou dizer em algum lugar que token = operando
. Talvez neste item mesmo.
token ==
operando ou operador
7 Exemplo
Avaliar Regras até gerar valor. É so para
aparecer a palavra valor.
OK
8 Exemplo Solução
Trocaria Tranformações pelo componente Avaliar
por Tranformações na
lista de token pelo componente Avaliar
OK
9. Sintaxe - Automato Finito
Deixaria o desenho e acrescentaria a notação
estado atual -------- entrada [condição] /
ação-------> proximo estado
Ou
colocaria um texto dizendo o que o modelo faz: Iniciar no estado 0. Se
entrar o token inteiro vai para o estado 1 e termina. No estado 0
............
É só para facilitar o enetendimento.
13. Referencia
notação diagrama sintatico notação expressão
regular notação BNF notação automato
finito