/* Gramatica que utilizo este programa Derivada y eliminando la recursividad
E=TE' | T
E'=+TE'|-TE'|e
T=FT'|F
T'=*FT'|/FT'|e
F=P^F|P
P=-P|EL
EL=(E)|ID|CONSTANTE
*/
// Automata
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package paqApplet;
import java.io.*;
/**
*
* @author Edson
*/
public class Afd {
int z;
String r;
public String validador(String palabra)
{
Pila app = new Pila();
String caden = palabra, cadena = null;
int tam = caden.length();
int l = 0;
//char cad = 0;
while(l
<= tam) { try { if(pila.empty() == true) { fila = 18; if(cadena.charAt(i)=='+') col = 1; if(cadena.charAt(i)=='-') col = 2; if(cadena.charAt(i)=='*') col = 3; if(cadena.charAt(i)=='/') col = 4; if(cadena.charAt(i)=='^') col = 5; if(cadena.charAt(i)=='(') col = 6; if(cadena.charAt(i)==')') col = 7; if(Character.isLetter(cadena.charAt(i)) || Character.isDigit(cadena.charAt(i)) || cadena.charAt(i)=='_') col = 8; if(Character.isDigit(cadena.charAt(i))&&i==0) col = 9; if(cadena.charAt(i)=='#') col = 10; }// fin pila.empty() if(pila.peek()==E) { fila = 1; col = 10; }//fin pila.peek==E if(pila.peek()==Ex) { fila = 2; if(cadena.charAt(i)=='+') col = 1; else if(cadena.charAt(i)=='-') col = 2; else col = 10; }//fin pila.peek==Ex if(pila.peek()==T) { fila = 3; col = 10; }//fin pila.peek==T if(pila.peek()==Tx) { fila = 4; if(cadena.charAt(i)=='*') col = 3; else if(cadena.charAt(i)=='/') col = 4; else col = 10; }//fin pila.peek==Tx if(pila.peek()==Z) { fila = 5; if(cadena.charAt(i)=='^') col=5; else col=10; }//fin pila.peek==Z if(pila.peek()==F) { fila = 6; col = 10; }//fin pila.peek==F if(pila.peek()==P) { fila = 7; if(cadena.charAt(i)=='-') col = 2; else col = 10; }//fin pila.peek==P if(pila.peek()==M) { fila = 8; if(cadena.charAt(i)=='(') col = 6; else if(Character.isLetter(cadena.charAt(i)) || Character.isDigit(cadena.charAt(i)) || cadena.charAt(i)=='_') col = 8; if(Character.isDigit(cadena.charAt(i))) col = 9; }//fin pila.peek==M if(pila.peek()==p) { fila = 9; if(cadena.charAt(i)=='(') col = 6; else col = 10; }//fin pila.peek==p ( if(pila.peek()==q) { fila = 10; if(cadena.charAt(i)==')') col = 7; else col = 10; }//fin pila.peek==q ) if(pila.peek()==s) { fila = 11; if(cadena.charAt(i)=='+') col = 1; else col = 10; }//fin pila.peek==s + if(pila.peek()==r) { fila = 12; if(cadena.charAt(i)=='-') col = 2; else col = 10; }//fin pila.peek==q ) if(pila.peek()==m) { fila = 13; if(cadena.charAt(i)=='*') col = 3; else col = 10; }//fin pila.peek==m * if(pila.peek()==d) { fila = 14; if(cadena.charAt(i)=='/') col = 4; else col = 10; }//fin pila.peek==d / if(pila.peek()==x) { fila = 15; if(cadena.charAt(i)=='^') col = 5; else col = 10; }//fin pila.peek==x ^ if(pila.peek()==id) { fila = 16; if(cadena.charAt(i)=='+') col = 1; if(cadena.charAt(i)=='-') col = 2; if(cadena.charAt(i)=='*') col = 3; if(cadena.charAt(i)=='/') col = 4; if(cadena.charAt(i)=='^') col = 5; if(cadena.charAt(i)=='(') col = 6; if(cadena.charAt(i)==')') col = 7; if(Character.isLetter(cadena.charAt(i)) || Character.isDigit(cadena.charAt(i)) || cadena.charAt(i)=='_') col = 8; if(Character.isDigit(cadena.charAt(i))&&i==0) col = 9; if(cadena.charAt(i)=='#') col = 10; }//fin pila.peek==id if(pila.peek()==c) { fila = 17; if(Character.isDigit(cadena.charAt(i))) col = 9; else col = 10; }//fin pila.peek==c if(matriz[fila][col] == 2) { pila.pop(); pila.push(Ex); pila.push(T); }//fin matriz == 2 if(matriz[fila][col] == 3) { pila.pop(); pila.push(Ex); pila.push(T); pila.push(s); }//fin matriz == 3 if(matriz[fila][col] == 4) { pila.pop(); pila.push(Ex); pila.push(T); pila.push(r); }//fin matriz == 4 if(matriz[fila][col] == 5) { pila.pop(); }//fin matriz == 5 if(matriz[fila][col] == 6) { pila.pop(); pila.push(Tx); pila.push(F); }//fin matriz == 6 if(matriz[fila][col] == 7) { pila.pop(); pila.push(Tx); pila.push(F); pila.push(m); }//fin matriz == 7 if(matriz[fila][col] == 8) { pila.pop(); pila.push(Tx); pila.push(F); pila.push(d); }//fin matriz == 8 if(matriz[fila][col] == 9) { pila.pop(); }//fin matriz == 9 if(matriz[fila][col] == 10) { pila.pop(); pila.push(Z); pila.push(P); }//fin matriz == 10; if(matriz[fila][col] == 11) { pila.pop(); pila.push(F); pila.push(x); }//fin matriz == 11; if(matriz[fila][col] == 12) { pila.pop(); }//fin matriz == 12 if(matriz[fila][col] == 13) { pila.pop(); pila.push(P); pila.push(r); }//fin matriz == 13 if(matriz[fila][col] == 14) { pila.pop(); pila.push(M); }//fin matriz == 14 if(matriz[fila][col] == 15) { pila.pop(); pila.push(q); pila.push(E); pila.push(p); }//fin matriz == 15 if(matriz[fila][col] == 16) { pila.pop(); id = epp.analizador(cadena,i); i = epp.contador(); if(id==null) { col = 0; break; } else pila.push(id); }//fin matriz == 16 if(matriz[fila][col] == 17) { pila.pop(); c = epp.constante(cadena,i); i = epp.contador(); pila.push(c); }//fin matriz == 17 if(matriz[fila][col] == 18) { pila.pop(); i++; }//fin matriz == 18 if(matriz[fila][col] == 19) { pila.pop(); i++; }//fin matriz == 19 if(matriz[fila][col] == 20) { pila.pop(); i++; }//fin matriz == 20 if(matriz[fila][col] == 21) { pila.pop(); i++; }//fin matriz == 21 if(matriz[fila][col] == 22) { pila.pop(); i++; }//fin matriz == 22 if(matriz[fila][col] == 23) { pila.pop(); i++; }//fin matriz == 23 if(matriz[fila][col] == 24) { pila.pop(); i++; }//fin matriz == 24 if(matriz[fila][col] == 25) { pila.pop(); i++; }//fin matriz == 25 if(matriz[fila][col] == 26) { pila.pop(); i++; }//fin matriz == 26 while(h< cad = "Cadena Aceptada" col ="="" cad = "Cadena No Aceptada" cad = "Cadena No Aceptada" defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jTextField1 = new javax.swing.JTextField();
jTextField2 = new javax.swing.JTextField();
jButton1 = new javax.swing.JButton();
jLabel1.setText("Cadena a Analizar");
jLabel2.setText("Analisis");
jButton1.setText("Analizar");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(33, 33, 33)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.addComponent(jLabel2, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLabel1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 102, Short.MAX_VALUE))
.addGap(53, 53, 53)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jButton1)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(jTextField2)
.addComponent(jTextField1, javax.swing.GroupLayout.DEFAULT_SIZE, 145, Short.MAX_VALUE)))
.addContainerGap(67, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(89, 89, 89)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(34, 34, 34)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 22, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, 21, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(50, 50, 50)
.addComponent(jButton1)
.addContainerGap(59, Short.MAX_VALUE))
);
}//
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
Pila app = new Pila();
Afd epp = new Afd();
jTextField2.setText(app.pila(epp.validador(jTextField1.getText())));
}
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JTextField jTextField1;
private javax.swing.JTextField jTextField2;
// End of variables declaration
}
No hay comentarios:
Publicar un comentario