J'ai une question, voici mes codes pour Java Compiler Compiler pour compiler et tester tout ce qui semble fonctionner parfaitement, mais le véritable problème est que, après que je l'exécuter sur shell unix, quand j'ai type 8 / 2, il devrait afficher comme ceci: < Rational> ( `8 / 2) valeur = 4.0.
Does anyone have a clue? S'il vous plaît
TOKEN:
(
<MYID: ( "abdr827")>
)
TOKEN:
(
<MYID2: ( "RAEC" | "827") +>
)
TOKEN:
(
<MYID3: (( "RAEC" ((( "8") + ( "2") ( "7")) | (( "8") ( "2") + ( "7")) | (( " 8 ") (" 2 ") (" 7 "))+)))>
)
TOKEN: / * littéraux entiers * /
(
<INTEGER_LITERAL :("+" | "-")? ([ "0" - "9"] (<chiffre>) *)>
)
TOKEN:
(
<RATIONAL: ([ "0" - "9"]) + | ([ "0" - "9"]) + "." ([ "0" - "9"]) + | ([ "0" - "9"]) + "." | ". "([" 0 "-" 9 "]) + | ([" 0 "-" 9 "]) +" / "([" 0 "-" 9 "]) +>
)
TOKEN: / * Identifiers. * /
(
<IDENTIFIER: <lettre> (<lettre> | <chiffre>) *>
)
TOKEN:
(
<HORROR: (~ [ "", "\ t", "\ n", "\ r", "\ f"]) +>
)
TOKEN: / * Définitions pour une utilisation dans d'autres définitions lexicales
(signifié par le « #). * /
(
< #Lettre: [ "a" - "z", "A" - "Z"]>
|
< #DIGIT: [ "0" - "9"]>
)
/ *
* Une grammaire simple pour correspondre à des jetons et les imprimer.
* /
void TokenList ():
(T Token; int val;)
(
((Val = 0;)
(T = <INTEGER_LITERAL> | t = <MYID> | t = <MYID2> | t = <MYID3> | t = <identifier> | t = <RATIONAL> | t = <HORROR>)
/ / Code exécuté après tout match de jetons dessus
(System.out.print (tokenImage [t.kind] + "(` "+ t.image +") ");
switch (t. nature) (
INTEGER_LITERAL cas:
/ / mon code de commencer ici
/ *
if ((t.image). substring (0) == "+"){
cw1.parseLiteral val = (((t.image). substring (1)), 10);
System.out.println ( "value =" + val);
) Else (
val = cw1.parseLiteral (t.image, 10);
System.out. out.println ( "value =" + val);
)
* /
/ * Faire ce que vous voulez * /
String input = t.image;
String search = "+";
String sub = "";
String result = "value =" + val;
int i;
do (/ / remplace toutes les sous-chaînes correspondant
i = input.indexOf (recherche);
if (i! = -1) (
result = input.substring (0, i);
result = result + sub;
result = result + input.substring (i + search.length ());
input = résultat;
)
) While (i! = -1);
System.out.println ( "value =" + entrée);
break;
par défaut:
System.out. out.println ( ""); / / nouvelle ligne
)
)
) * <EOF>
)