Advertisement
Guest User

ALS.analisis.AnalisisSintactico

a guest
Nov 13th, 2011
1,000
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.30 KB | None | 0 0
  1. /*
  2.  * Esta clase realiza el Analisis Sintáctico
  3.  */
  4.  
  5. package analisis;
  6.  
  7. /**
  8.  * @author Julio Chinchilla
  9.  */
  10. public class AnalisisSintactico {
  11.    
  12.     public String imp = "";
  13.     TablaDeERRORES err = new TablaDeERRORES();        
  14.    
  15.     public AnalisisSintactico (String rALexico) {        
  16.         AnalisisLexico an = new AnalisisLexico(rALexico);
  17.        
  18.         String lex = "";
  19.         String cuant = "";
  20.         int linea = 1;
  21.         int A=0, B=0, C=0, D=0, E=0, F=0, X=0;                
  22.         if ( an.ERRORLexico == 0 ) {            
  23.             for ( int i = 0; i < an.allavesPorLinea.size(); i++ ) {
  24.                 String bd = String.valueOf( an.allavesPorLinea.get(i) );
  25.                 if ( this.esEncabezadoGeneral(bd)) {
  26.                     A++;                    
  27.                     lex = lex + "A";
  28.                 }
  29.                 else if ( this.esEncabezadoExpresionGen(bd)) {
  30.                     B++;                    
  31.                     lex = lex + "B";
  32.                 }
  33.                 else if ( this.esAlternador(bd)) {
  34.                     C++;          
  35.                     lex = lex + "C";
  36.                 }
  37.                 else if ( this.esCuantificador(bd)) {
  38.                     D++;          
  39.                     cuant = "D";
  40.                 }
  41.                 else if ( this.esEncabezadoExpresionEv(bd)) {
  42.                     E++;          
  43.                     lex = lex + "E";
  44.                 }
  45.                 else if ( this.esEExpresionEv(bd)) {
  46.                     F++;          
  47.                     lex = lex + "F";
  48.                 }
  49.                 else {
  50.                     X++;          
  51.                     lex = lex + "X";
  52.                     ErrorEspecifico(bd, linea);                    
  53.                 }
  54.                 if (cuant.equals("D") && D == 1) {
  55.                     lex = lex + cuant;
  56.                 }
  57.                 linea++;
  58.             }
  59.            
  60.             if ( lex.equals("ABCDEF")) {
  61.                 imp = imp + "COMPILACIÓN EXITOSA ! \n";
  62.             }
  63.             else {
  64.                 System.out.println(lex);
  65.                 ErrorGeneral(lex);
  66.             }
  67.             imp = imp + "Numero de lineas con código " + an.NumeroLineas + "\n";
  68.         } else {
  69.             imp = imp + an.errores;
  70.         }
  71.        
  72.     }
  73.    
  74.     private void ErrorGeneral ( String lex ) {
  75.         if ( err.ERRORgeneral.get(lex) != null) {
  76.             imp = imp + err.ERRORgeneral.get(lex) + "\n";
  77.         }
  78.             else {
  79.                 imp = imp + " ERROR DE SINTAXIS! \n";
  80.             }
  81.     }
  82.    
  83.     private void ErrorEspecifico ( String analiza, int linea) {        
  84.         if ( err.ERRORespecifico.get(analiza) != null ) {
  85.             imp = imp + "Error en linea "+ linea + " SUGERENCIA ! "+ err.ERRORespecifico.get(analiza).toString() + "\n";
  86.         } else {
  87.             imp = imp + "Error en linea "+ linea +"\n";
  88.         }
  89.     }
  90.    
  91.     private boolean esEncabezadoGeneral ( String analiza ) {
  92.         boolean analizado = false;        
  93.         if (analiza.equals("abrcrd")) {
  94.             analizado = true;
  95.         }
  96.         return analizado;
  97.     }
  98.    
  99.     private boolean esEncabezadoExpresionGen ( String analiza ) {
  100.         boolean analizado = false;
  101.         if (analiza.equals("h")) {
  102.             analizado = true;
  103.         }
  104.         return analizado;
  105.     }
  106.    
  107.     private boolean esAlternador ( String analiza ) {
  108.         boolean analizado = false;
  109.         if (analiza.equals("kgbrcrdq")) {
  110.             analizado = true;
  111.         }
  112.         return analizado;
  113.     }
  114.    
  115.     private boolean esCuantificador ( String analiza ) {
  116.         boolean analizado = false;
  117.         if (analiza.equals("mgbpcrdq") || analiza.equals("mgbncrdq")
  118.                 || analiza.equals("mgbocrdq")) {
  119.             analizado = true;
  120.         }
  121.         return analizado;
  122.     }
  123.    
  124.     private boolean esEncabezadoExpresionEv ( String analiza ) {
  125.         boolean analizado = false;
  126.         if (analiza.equals("i")) {
  127.             analizado = true;
  128.         }
  129.         return analizado;
  130.     }
  131.    
  132.     private boolean esEExpresionEv ( String analiza ) {
  133.         boolean analizado = false;
  134.         if (analiza.equals("jgrq")) {
  135.             analizado = true;
  136.         }
  137.         return analizado;
  138.     }
  139.    
  140. }
  141.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement