Voila j'ai recupéré le programme de calculatrice donné en exemple sur divers site. Je l'ai dégéré et je pense avoir compris.
Le problème est que je n'arrive pas a faire un "truc" (difficile déja d'y mettre un nom dessus, alors trouver dans le net ...).
Dans la calculatrice, je voudrais rajouter un type de donnée (chose simple normalement). Le problème est que je ne sais pas recuperer les infos (au nombre de 3 : h:m:s)
voici la ou j'en suis :
Donc la je pense savoir récuperer les informations, mais il me fait une erreur lors de la génération du code (en gros il ne reconnais pas de balise, donc pas de "case ... :").
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 void element() : {Token h;Token m;Token s;} { <INT> { try { long x = Long.parseLong(token.image); argStack.push(new Long(x)); } catch (NumberFormatException ee) { argStack.push(new Long(0)); } } | (h=<INT> ":" m=<INT> ":" s=<INT>) { System.out.println("h=" + h + " m=" + m + " s" + s); long t = 1*3600000+1*60000+1*1000; argStack.push(new Long(t)); } | "(" sum() ")" }
ou
et la, la compilation est bonne, mais je ne vois pas comment on récupère les 3 infos !!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 TOKEN : /* TYPES DE BASES*/ { < INT: ( <CHAR_ALPHA> )+ > | < CHAR: "\'" <CHAR_ALL> "\'" > | < STRING: "\"" <CHAR_ALL> "\"" > | < HEURE: <INT> ":" <INT> ":" <INT> > | < DATE: <INT> "/" <INT> "/" <INT> > } void element() : {} { <INT> { try { long x = Long.parseLong(token.image); argStack.push(new Long(x)); } catch (NumberFormatException ee) { argStack.push(new Long(0)); } } | <HEURE> { System.out.println(token.image); argStack.push(new Long(0)); } | "(" sum() ")" }
Voila mon soucis.
Partager