Bonjour,
j'ai généré un parseur par l'outil JavaCC.
par la suite, je souhaite calculer le nombre d'appel d'une fonction dans le fichier d'entrée de DATA ( input file stream ).
MyProgram est défini par JavaCC rules suivant :
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 TOKEN : { <id : ["a"-"z","A"-"Z","_"] (["a"-"z","A"-"Z","0"-"9","_"])* >} MyProgram ():{} { (MyMethod ())* } MyMethod () {} { <method> <id> "(" (Argument ()) * ")" {} (Statement ()) * return String <end_method> } Argument void () {} { <STRING> <id> <STRING> <id> } void statement () {} { // here Call_MyMethod () is used for calling the method defined by the<id> and its parameters Call_MyMethod () statementType2 () ........... } // Javacc rules of Call_MyMethod () Call_MyMethod void () {} { <id> "(" ( ExpressionTreeStructure () ( "," ExpressionTreeStructure () ) * ) * ")" } ExpressionTreeStructure void () {} { ...... }
input file stream is :
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 <method> id1 ( String sid11, String sid12) statement11 statement12 return String1 <end_method> <method> id2 ( String sid21, String sid22) statement21 id1(sid1,sid2) // call of Method the name id1 with argument sid11 and sid12 return String2 <end_method> <method> id3 ( String sid31, String sid32) id1(sid1,sid2) // call of Method the name id1 with argument sid11 and sid12 statement32 return String3 <end_method> <method> id4 ( String sid41, String sid42) id1(sid1,sid2) // call of Method the name id1 with argument sid11 and sid12 statement42 return String4 <end_method>
ma question est comment compter le nombre d'appel de la méthode <method> défini par id2 qui est appelé par d'autres méthodes.
dans le cas de fichier d’entrée ( input file stream ) mentionnée ci-dessus :
3 est le nombre d'appel de la méthode défini par identifiant id1.
Merci d'avance de votre aide.
Partager