Acceso a clase
[PL2.git] / EjemploMain.java
1 import java.io.FileInputStream;\r
2 import java.io.FileNotFoundException;\r
3 import java.util.LinkedList;\r
4 import java.util.List;\r
5 \r
6 import antlr.CommonToken;\r
7 import antlr.Token;\r
8 import antlr.TokenStreamException;\r
9 \r
10 /**\r
11  * Ejemplo de la estructura del método main para comenzar el procesado de una serie de archivos\r
12  * en el lenguaje L-1\r
13  * \r
14  *\r
15  */\r
16 public class EjemploMain {\r
17 \r
18         /**\r
19          *  Pre: 'nombre_prog' es el nombre de un fichero conteniendo un programa L-1.\r
20          *               Ej. "programa.cfg" \r
21          *               c:\PL2\Laboratorio\SEMANTICA\sem2\m.mod;\r
22          *               c:\PL2\Laboratorio\SEMANTICA\sem2\n.mod;\r
23          *               c:\PL2\Laboratorio\SEMANTICA\sem2\p.mod;\r
24          *\r
25          *      Cada elemento en 'lista_nombre_modulos' contiene el nombre de un módulo \r
26          *  del programa 'nombre_prog'.\r
27          */\r
28         private static List<String> extraer_modulos(String nombre_prog) {\r
29                 List<String> lista_nombres_modulos = new LinkedList<String>();\r
30                 try {\r
31                         FileInputStream f = new FileInputStream(nombre_prog);\r
32                         Conflex conflex = new Conflex(f);\r
33                         CommonToken tok = (CommonToken) conflex.nextToken();\r
34 \r
35                         // Análisis léxico del archivo "*.cfg". Cada token 'tok' representa el nombre de un módulo.\r
36                         while (tok.getType() != Token.EOF_TYPE) {\r
37                                 String s = new String(tok.getText());\r
38                                 lista_nombres_modulos.add(s);\r
39                                 tok = (CommonToken) conflex.nextToken();\r
40                         }\r
41                 } catch (FileNotFoundException e) {\r
42                         System.out.println("Excepcion: " + e);\r
43                 } catch (TokenStreamException e) {\r
44                         System.out.println("Excepcion: " + e);\r
45                 }\r
46                 return lista_nombres_modulos;\r
47         }\r
48         \r
49         /**\r
50          * @param args Como único argumento a la aplicación se le pasará un archivo *.cfg con \r
51          * las rutas de los archivos *.mod que queramos procesar.\r
52          */\r
53         public static void main(String[] args) {\r
54                 List<String> nombres_modulos = extraer_modulos(args[0]);\r
55                 \r
56                 //TODO Realizar análisis léxico, sintáctico y semántico de cada módulo\r
57         }\r
58 \r
59         \r
60         \r
61 }\r