source: tol/TolJava/TOLJava-Ejemplos/src/com/hcarralero/toljava/ejemplos/Ejemplo02.java @ 9887b93

1941-docker-image-to-testdevel
Last change on this file since 9887b93 was 9887b93, checked in by Humberto Carralero <hacarralero@…>, 15 years ago

Importing TolJava

git-svn-id: ​https://www.tol-project.org/svn/tolp/trunk@3900 be4846ae-f051-483a-831f-b64e7d08527f

  • Property mode set to 100644
File size: 5.5 KB
Line 
1package com.hcarralero.toljava.ejemplos;
2
3//Se deben importar del paquete com.hcarralero.toljava todas las clases a usarse,
4//para este ejemplo se requieren las clases: TOLMachine, TOLMachineException, TOLReal y TOLText.
5import com.hcarralero.toljava.TOLMachine;
6import com.hcarralero.toljava.TOLMachineException;
7import com.hcarralero.toljava.TOLReal;
8import com.hcarralero.toljava.TOLText;
9/**
10 * Segundo Ejemplo de TOLJava para Consola:
11 *  1) Se crea una instancia de TOLMachine.
12 *  2) Se ejecuta una sentencia TOL para definir las variables x (Text) e y (Real).
13 *  3) Se procesa el resultado.
14 *  4) Se muestran los mensajes devueltos por el intéprete de TOL.
15 *  5) Se obtiene el valor de la variable x.
16 *  6) Se muestra el valor de la variable x.
17 *  7) Se cambia el valor de la variable x por un nuevo valor.
18 *  8) Se muestra el nuevo valor de la variable x.
19 *  9) Se obtiene el valor de la variable y.
20 *  10) Se muestra el valor de la variable y.
21 *  11) Se cambia el valor de la variable y por un nuevo valor.
22 *  12) Se muestra el nuevo valor de la variable y.
23 *
24 * @author Humberto Andrés Carralero López (hcarralero@gmail.com)
25 * @version 1.0
26 * @see com.hcarralero.toljava.TOLMachine, com.hcarralero.toljava.TOLMachineException,
27 *      com.hcarralero.toljava.TOLReal, com.hcarralero.toljava.TOLText
28 */
29public class Ejemplo02 {
30
31    /**
32     * @param args los argumenetos de la línea de comandos.
33     */
34    public static void main(String[] args) {
35        //Se crea una instancia de la clase TOLMachine.
36        TOLMachine tm= new TOLMachine();
37        //En una cadena se almacena el código TOL que se ejecutará; en este caso
38        //el código es para definir las variables x de tipo Text e y de tipo Real.
39        String code= "Text x=\"Hola. Bienvenido a TOLJava.\"; Real y= 3.5+7;";
40        //Se invoca el intérprete de TOL para ejecutar el código pasado por parámetro.
41        //El resultado es un arreglo de cadenas Object.
42        Object res[]= tm.execute(code);
43        System.out.println();
44        if (res==null) {
45            //Si el resultado es nulo, entonces se ha producido un error en el acceso a TOL.
46            System.out.println("ERROR ACCEDIENDO A TOL->execute");
47        } else {
48            //Se ha logrado acceder al intérprete y ejecutar el código.
49            int ne= 0;
50            try {
51                //La primera cadena representa el número de errores detectado por el Intérprete de TOL.
52                ne= Integer.parseInt((String)res[0]);
53                if (ne>0) {
54                    //El intérprete de TOL reportó al menos un error.
55                    System.out.println("Se ha(n) detectado "+ne+" error(es)");
56                } else {
57                    //El intérprete de TOL no reportó errores.
58                    System.out.println("No se han detectado errores");
59                }
60                //Los siguientes objetos que conforman la respuesta del intérprete pueden ser:
61                //Warnings, Errores o mensajes generados por el código TOL ejecutado.
62                //Para procesar los mensajes generados debe comprender el formato de
63                //estos mensajes. (Consulte la documentación de TOL).
64                for (int i= 1; i<res.length; ++i) {
65                    //Cada objeto es una cadena
66                    String strRes= (String)res[i];
67                    //Se obtiene la longitud de la cadena.
68                    int l= strRes.length();
69                    if (strRes.charAt(0)=='<'&&strRes.charAt(2)=='>'&&(strRes.charAt(1)=='E'||strRes.charAt(1)=='W')&&l>=7) {
70                        //En este caso el mensaje es un 'W'arning o un 'E'rror.
71                        System.out.println("\t"+strRes.substring(3, l-5));
72                    } else {
73                        //En este caso es un mensaje común.
74                        System.out.println("\t"+strRes);
75                    }
76                }
77                //Se obtiene el valor de la variable x.
78                Object objx= tm.getVariable("x");
79                //Se imprime el valor de la variable x.
80                System.out.println("Valor de x:["+objx+"]");
81                //Se asigna un nuevo valor a x, el texto: "Hasta la vista TOL."
82                tm.setVariableValue( "x", new TOLText("Hasta la vista TOL."));
83                //Se obtiene nuevamente el valor de la variable x (ya modificado).
84                objx= tm.getVariable("x");
85                //Se imprime el nuevo valor de la variable x.
86                System.out.println("NUEVO Valor de x:["+objx+"]");
87                //Se obtiene el valor de la variable y.
88                Object objy= tm.getVariable("y");
89                //Se imprime el valor de la variable y.
90                System.out.println("Valor de y:["+objy+"]");
91                //Se asigna un nuevo valor a y, el número: 4567.89.
92                tm.setVariableValue( "y", new TOLReal(4567.89));
93                //Se obtiene nuevamente el valor de la variable y (ya modificado).
94                objy= tm.getVariable("y");
95                //Se imprime el nuevo valor de la variable y.
96                System.out.println("NUEVO Valor de y:["+objy+"]");
97            } catch (NumberFormatException ex) {
98                //Algo inusual (ERROR INTERNO DE TOLJava) ha ocurrido.
99                System.out.println("ERROR DE ACCESO AL NÚMERO DE ERRORES");
100            } catch (TOLMachineException ex) {
101                //Algún error ha ocurrido en el acceso a las variables de TOL.
102                System.out.println("ERROR procesando la información introducida: "+ex.getMessage());
103            }
104        }
105    }
106}
Note: See TracBrowser for help on using the repository browser.