Sei que não será uma tarefa fácil construir um compilador, por isso quero fazer cada passo de uma vez, o primeiro será construir o analisador léxico, o programa deve receber um arquivo e verificar quais caracteres representam as palavras reservadas, os números, os símbolos, etc…
:oops: Mas infelizmente, não sei nem como começar… Fiz um programinha que lê um arquivo texto, mas não verifica os caracteres, simplismente copia o texto para o outro quadro como uma STRING.
Estou precisando de muita AJUDA :roll: :?:
importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;importjava.io.*;publicclassComp5extendsJFrame{privateGridBagLayoutgbLayout;Containerc=getContentPane();privateJTextAreat1,t2;privateJButtoncomp,abrir;privateFilefile;privatecLeitorteste;privateFilearquivo;// arquivo que será lido privateStringconteudo;// string para armazenar o arquivo texto lido publicComp5(){super("Organização de Computadores IV");GridBagConstraintsgbConstraints=newGridBagConstraints();gbLayout=newGridBagLayout();c.setLayout(gbLayout);gbConstraints.fill=GridBagConstraints.CENTER;Boxte1=Box.createVerticalBox();Boxte2=Box.createVerticalBox();Boxb=Box.createVerticalBox();//criar área de texto 1t1=newJTextArea(29,25);//(linha, coluna)te1.add(newJScrollPane(t1));c.add(te1);//criar botão abrirabrir=newJButton("Abrir >>");abrir.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){openFile();teste=newcLeitor(file);t1.setText(String.valueOf(teste.getConteudo()));}});b.add(abrir);//criar botão compilarcomp=newJButton("Compilar >>");comp.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){t2.setText(t1.getText());}});b.add(comp);c.add(b);//Caixa colocada no Centro da Janela //criar área de texto 2t2=newJTextArea(29,25);te2.add(newJScrollPane(t2));c.add(te2);//Container c = getContentPane();setSize(725,500);// configura o tamanho da janelashow();//exibe a janela}privatevoidopenFile(){JFileChooserfileChooser=newJFileChooser();fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);intresult=fileChooser.showOpenDialog(this);// user clicked Cancel button on dialogif(result==JFileChooser.CANCEL_OPTION)file=null;elsefile=fileChooser.getSelectedFile();}publicclasscLeitor{privateFilearquivo;// arquivo que será lido privateStringconteudo;// string para armazenar o arquivo texto lido /** arquivo a ser aberto * utilizei um JFileChooser pra localizar o arquivo */publiccLeitor(Filearq){setArquivo(arq);setConteudo(null);if(this.arquivo!=null){leArquivo();}}// contrutor nulo publiccLeitor(){setArquivo(null);setConteudo(null);}// método para determinar o arquivo que será lido o seu conteudo publicvoidsetArquivo(Filearquivo){this.arquivo=arquivo;}// método que retorna o arquivo que está sendo manipulado publicFilegetArquivo(){returnarquivo;}// por formalismo de OO tem esse método( no caso não utilizado ) publicvoidsetConteudo(Stringconteudo){this.conteudo=conteudo;}// com esse método vc pega a String montada do arquivo lido publicStringgetConteudo(){returnconteudo;}// método de leitura do arquivo texto publicvoidleArquivo(){try{Fileentrada=arquivo;BufferedReaderbuffer=newBufferedReader(newFileReader(entrada));Stringtexto="";Stringlinha="";do{linha=buffer.readLine();if(linha!=null){texto+=linha+" \n";}}while(linha!=null);setConteudo(texto);}catch(IOExceptione){JOptionPane.showMessageDialog(null,"Não foi possivel ler o arquivo.","Aviso",JOptionPane.INFORMATION_MESSAGE);}}}publicstaticvoidmain(Stringarg[]){Comp5app=newComp5();app.addWindowListener(newWindowAdapter(){publicvoidwindwClosing(WindowEvente){System.exit(0);}});}}
Eu terei a disciplina de compiladores ano que vem…pretendo fazer em Java tb. Pessoal aqui costuma usar DELPHI para implementar o compilador nessa disciplina.
Sheyla…vc está fazendo esse trabalho sozinha???No meu curso esse trabalho de implementação de um compilador é feito em grupo.
Bom…esse ano estou tendo a experiência de fazer as implementações de CG usando Java. Depois de descobrir +/- como trabalhar com uma BufferedImage estamos implementando os algoritmos básicos de construção de retas, circunferências, elipses…não é facil HeHeHe. Principalmente pq eu comecei a aprender Java faz uns 2, 3 meses.