KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > analyzer > listeners > TCRParser


1 /*
2  * TCRjava
3  *
4  * Created on April 12, 2005, 8:19 PM
5  */

6
7 package analyzer.listeners;
8
9 import java.io.StreamTokenizer JavaDoc;
10
11 /**
12  *
13  * @author loicsegapelli
14  *
15  * Syntactical grammar:
16  *
17  * S = timestamp PROPERTY
18  * PROPERTY = ("opened" OPENCLOSE) | ("activated" WINDOW) | ("activatedNodes" NODES) | "NBGAINEDFOCUS" | "NBLOSTFOCUS"
19  * OPENCLOSE = (("opening" | "closing") WINDOW) | "exception"
20  * WINDOW = ("editor"? windowName) | "null"
21  * NODES = ("parent" nodeParentName "node" nodeName)*
22  *
23  */

24 public abstract class TCRParser extends Parser {
25     
26     boolean editor;
27     
28     /** Creates a new instance of WParser */
29     public TCRParser(String JavaDoc pathAndTS) {
30         super(pathAndTS+".TCR.log");
31     }
32     
33     protected void analyzeTokenInput() throws SyntaxException{
34         nextNUMBER();
35         timestamp=new Double JavaDoc(st.nval).longValue();
36         caseProperty();
37     }
38     
39     private void caseProperty() throws SyntaxException{
40         nextWORD();
41         if(svalIs("opened")){
42             caseOpenClose();
43         } else if(svalIs("activated")){
44             String JavaDoc s=caseWindow();
45             if(s!=null)analyzeActivated(s,editor);
46         } else if(svalIs("activatedNodes")){
47             caseNodes();
48         } else if(svalIs("NBGAINEDFOCUS")){
49             analyzeGAINED();
50         } else if(svalIs("NBLOSTFOCUS")){
51             analyzeLOST();
52         } else {
53             throw(new SyntaxException("skipped: "+st.sval));
54         }
55     }
56     
57     private void caseOpenClose() throws SyntaxException{
58         String JavaDoc s;
59         nextWORD();
60         if(svalIs("opening")){
61             s=caseWindow();
62             analyzeOpen(s,editor);
63         } else if(svalIs("closing")){
64             s=caseWindow();
65             analyzeClose(s,editor);
66         } else if(svalIs("exception")){
67             throw(new SyntaxException(""));
68         } else {
69             throw(new SyntaxException("unexpected token open/close:"+st.sval));
70         }
71     }
72     
73     private String JavaDoc caseWindow() throws SyntaxException{
74         nextWORD();
75         if(svalIs("editor")){
76             editor=true;
77             nextWORD();
78         } else editor=false;
79         return st.sval;
80     }
81     
82     private void caseNodes() throws SyntaxException{
83         String JavaDoc p,s;
84         nextWORD();
85         while(st.ttype==WORD){
86             if(!svalIs("parent")) throw(new SyntaxException("no parent "+st.sval));
87             nextWORD();
88             p=st.sval;
89             nextWORD();
90             if(!svalIs("node"))throw(new SyntaxException("node name not found"));
91             nextWORD();
92             s=st.sval;
93             analyzeNode(p,s);
94             next();
95         }
96         // compensates one too many iterations from the loop
97
st.pushBack();
98     }
99     
100     
101     /*
102      * From Parser: not implemented here
103      */

104     abstract protected void eof();
105     
106     /*
107      * From parser: not implemented here
108      */

109     abstract protected void init();
110     
111     abstract protected void analyzeNode(String JavaDoc parent, String JavaDoc node);
112     
113     abstract protected void analyzeOpen(String JavaDoc windowId, boolean editor);
114     
115     abstract protected void analyzeClose(String JavaDoc windowId , boolean editor);
116     
117     abstract protected void analyzeActivated(String JavaDoc windowId, boolean editor);
118     
119     abstract protected void analyzeGAINED();
120     
121     abstract protected void analyzeLOST();
122     
123 }
124
Popular Tags