Exemplo de Java2D - Simulador de Autômatos

[quote=mrsmylle]What’s Linguagem Formal de Autômatos?? :lol: !!
Sorry about my lack of acknowledgement!!
Looking for it!![/quote]

Primeiramente, vamos usar o português? Afinal, somos brasileiros concorda?

Basicamente, na computação a área das linguagens formais trata de dispositivos matemáticos que têm poder computacional, ou seja, conseguem representar linguagens, reconhecendo sentenças (strings). Como exemplos de dispositivos estudados por essa área, podem-se citar os autômatos finitos, expressões regulares e gramáticas regulares (que tem poder para representar as linguagens regulares), os autômatos à pilha e gramáticas livres de contexto (que conseguem representar as linguagens livres de contexto), máquinas de turing (representam as linguagens recursivas e as linguagens recursivamente enumeráveis), etc.

Os autômatos também são conhecidos como máquinas de estado. Você já deve ter ouvido falar nelas.

Existem inúmeras aplicações para esses dispositivos, sendo que a mais utilizada talvez seja seu emprego nos analizadores léxicos das linguagens.

Mais informações você pode encontrar no livro “Introdução à Teoria dos Autômatos, Linguagens e Computação” do Hopcroft (http://www.submarino.com.br/produto/1/182106/introducao+a+teoria+de+automatos,+linguagens+e+computacao)

[] s

:roll: !!
Desculpa, assunto até então desconhecido pra mim!!
Vou dar uma boa olhada sobre isso!!

Olá, agora eu vi q cada bolinha é um Jpanel vi o codigo tb do drag and drop mas teria como voce comentar
essa parte do codigo

[code]
private void formMousePressed(java.awt.event.MouseEvent evt) {

estadoSelecionado = null;
JFramePrincipal f = ( JFramePrincipal ) getParent().getParent().getParent().getParent().getParent(); 
f.selecionaEstado( estadoSelecionado );

repaint();

}[/code]

Oi Jonathan, desculpa a demora para responder.

Isso ai chama gambiarra :smiley:
O certo seria passar uma referência do frame para o painel de desenho, mas como fui fazendo o programa por fazer, teve muita coisa que ficou MUITO feia :slight_smile:

O que eu faço com esse monte de getParent encadeado, é chegar ao JFramePrincipal.

[]´s

Maravilha! Estava procurando um algoritmo que tratasse Linguagens formais ! :stuck_out_tongue:

Parabéns e, meu sincero agradecimento!

Isso ai é legal. To baixando agora pra dar uma olhada,
Tem como postar uma imagem pra gente que entrar ver uma prévia?

[quote=davidbuzatto]Oi Jonathan, desculpa a demora para responder.

Isso ai chama gambiarra :smiley:
O certo seria passar uma referência do frame para o painel de desenho, mas como fui fazendo o programa por fazer, teve muita coisa que ficou MUITO feia :slight_smile:

O que eu faço com esse monte de getParent encadeado, é chegar ao JFramePrincipal.

[]´s[/quote]

Relaxa. Eu também já fiz muito isso. Não conheço nenhum programador que não tenha utilizado POG alguma vez.
Não teria como pegar esse objeto no construtor, em uma variavel privada?

Parabens pelo programa cara, ficou bem bolado :wink:
vou aproveitar e estudar o código

Estou com um problema para resolver preciso de ajuda em analizador lexico bem simples

autômato finito determinístico, com a movimentação do ponto, que reconheça os
tokens: números, nomes de variáveis e strings literais. Todos os estados devem ser descritos
através da movimentação do ponto

Alguma dica para um iniciante? hehehe

Não deveria estar continuando esta thread, mas de qualquer forma, você já desenhou a máquina de estados?

Se não conseguiu desenhar, é relativamente fácil achar um desenho de uma máquina de estados que reconheça essa gramática que você estipulou.

Na verdade estou bem perdido, fui seguindo os conselhos do forum e baixando os simuladores para testar,
estou sem ideia de por onde comecar e oque fazer. Minha primeira vez programando algo deste tipo.

Em vez de baixar o simulador para testar, você precisa desenhar a máquina de estados primeiro, e depois é que vai usar o tal do simulador :slight_smile:

Estou procurando como criar uma maquina de estado.
Ta ai outra coisa que nunca fiz hehehe

A propósito, se seu professor está ensinando as coisas direito e se você comprou (ou pelo menos copiou os PDFs) dos livros do seu curso, deve haver um exemplo de como criar uma máquina de estados para uso em um autômato finito.

Talvez haja até desenhada uma máquina de estados para o reconhecimento desses tokens que ficaram como lição de casa :slight_smile:

É materia assistida, não tenho aula, teoricamente ele deveria por material online para eu ler e estudar, porem estou tendo que me virar com a internet, 0 conteudo para ajudar no site da faculdade, apenas os trabalhos para fazer e a data, mesmo a materia eu nunca vi!
Gambiarras da faculdade! Anhembi Morumbi cada vez pior!

Achei alguns modelos na internet acho que consigo montar uma, seria tipo como nesse link?

http://wiki.icmc.usp.br/images/6/60/Aula_3_-_StateMachine-SSC0110_2010.pdf

A ideia das máquinas de estado é essa mesma.

Entretanto, para análise léxica, as máquinas de estado são mais especializadas - vou ver se acho um exemplo.


http://www.cs.duke.edu/~raw/cps206/CharactersAndLex.htm

Deve haver coisas em português . O segredo é procurar, no Google:

máquina estados análise léxica

Ingles não é um problema leio e escrevo bem
Dificil está entender a logica toda hehehe

Ola vc teria um codigo deste de Automatos em que alem de criar o automato o cara pode determinar se é destiguivel ou deterministico fazendo assim sua minimizaçao??? achei muito interessante seu codigo ta de Parabéns

Bem interessante o programa. Mais tarde tentarei ver o código.

Parabéns.

Boa tarde @davidbuzatto tudo bem?
Primeiramente quero agradecer por disponibilizar este projeto.
Sei que este tópico é antigo, mas o seu exemplo de código fonte é funcional e ainda é utilizado por muitos acadêmicos, e eu sou um deles hehehehe.
Estou desenvolvendo uma ferramenta parecida com a sua, para a disciplina de LFA, porém percebi que o desenho não fica legal quando ocorre a situação em que: O estado A possui uma aresta para B e B possui uma aresta para A.
Neste caso, os símbolos terminais da arestas ficam sobrepostos, criando uma aresta em cima da outra, estou na luta para que, quando ocorra este caso, o autômato desenhe duas arestas, sem sobrepor a existente. Teria como me ajudar nisso?