Tengo una pregunta, aquí está mi código de Java Compiler Compiler para compilar y prueba todo parece funcionar perfectamente, pero la cuestión real es que, después de ejecutar este comando sobre shell de Unix, al escribir 8 / 2 se debe imprimir como esta: < RACIONAL> ( `8 / 2) = valor de 4,0.
¿Alguien tiene una pista? Por favor
Token:
(
<MyID: ( "abdr827")>
)
Token:
(
<MYID2: ( "ABDR" | "827") +>
)
Token:
(
<MYID3: (( "ABDR" ((( "8") + ( "2") ( "7")) | (( "8") ( "2") + ( "7")) | (( " 8 ") (" 2 ") (" 7 "))+)))>
)
TOKEN: / * literales enteros * /
(
<INTEGER_LITERAL :("+" | "-")? ([ "0" - "9"] (<DIGIT>) *)>
)
Token:
(
<RACIONAL: ([ "0" - "9"]) + | ([ "0" - "9"]) + "." ([ "0" - "9"]) + | ([ "0" - "9"]) + "." | ". "([" 0 "-" 9 "]) + | ([" 0 "-" 9 "]) +" / "([" 0 "-" 9 "]) +>
)
TOKEN: / * Identificadores. * /
(
<IDENTIFIER: <letra> (<letra> | <DIGIT>) *>
)
Token:
(
<HORROR: (~ [ "", "\ t", "\ n", "\ r", "\ t"]) +>
)
TOKEN: / * Las definiciones para su uso en otras definiciones léxicas
(representado por el ` #). * /
(
< #LETRA: [ "A" - "z", "A" - "Z"]>
|
< #DIGIT: [ "0" - "9"]>
)
/ *
* Una gramática sencilla para que coincida con fichas e imprimirlas.
* /
TokenList void ():
(T Token; int val;)
(
((Val = 0;)
(T = <INTEGER_LITERAL> | T = <myid> | T = <MYID2> | T = <MYID3> | t = <identifier> | T = <RATIONAL> | T = <HORROR>)
/ / Código ejecutado después de un partido de fichas por encima de
(System.out.println (tokenImage [t.kind] + "( '" + t.image + ")");
switch (t. tipo) (
caso INTEGER_LITERAL:
/ / mi código empieza aquí
/ *
if ((t.image). substring (0) == "+"){
val = cw1.parseLiteral (((t.image). substring (1)), 10);
System.out.println ( "value =" + val);
) Else (
val = cw1.parseLiteral (t.image, 10);
System.out. println ( "value =" + val);
)
* /
/ * Hacer lo que quieras * /
String input = t.image;
Búsqueda String = "+";
Sub String = "";
String result = "value =" + val;
int i;
do (/ / reemplazar todas las subcadenas coincidentes
i = input.indexOf (búsqueda);
if (i! = -1) (
resultado = input.substring (0, i);
result = result + sub;
result = result + input.substring (I + search.length ());
= entrada de resultado;
)
) While (i! = -1);
System.out.println ( "value =" + entrada);
break;
default:
System.out. println ( ""); / / nueva línea
)
)
) * <EOF>
)