]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.graphviz/src/org/simantics/graphviz/internal/parser/DotParser.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.graphviz / src / org / simantics / graphviz / internal / parser / DotParser.java
1 /* Generated By:JavaCC: Do not edit this line. DotParser.java */\r
2 package org.simantics.graphviz.internal.parser;\r
3 \r
4 import org.simantics.graphviz.*;\r
5 import java.util.Map;\r
6 import java.util.HashMap;\r
7 \r
8 @SuppressWarnings("all")\r
9 public class DotParser implements DotParserConstants {\r
10         AbstractAttributeContainer defaultNode = new AbstractAttributeContainer();\r
11         AbstractAttributeContainer defaultEdge = new AbstractAttributeContainer();\r
12         Map<String,Identifiable> connectors = new HashMap<String,Identifiable>();\r
13 \r
14 /*** Parser ********************************************************/\r
15   final public Graph document() throws ParseException {\r
16                      Graph graph = new Graph();\r
17     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
18     case 18:\r
19       jj_consume_token(18);\r
20       break;\r
21     default:\r
22       jj_la1[0] = jj_gen;\r
23       ;\r
24     }\r
25     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
26     case 15:\r
27       jj_consume_token(15);\r
28       break;\r
29     case 14:\r
30       jj_consume_token(14);\r
31       break;\r
32     default:\r
33       jj_la1[1] = jj_gen;\r
34       jj_consume_token(-1);\r
35       throw new ParseException();\r
36     }\r
37     jj_consume_token(8);\r
38     label_1:\r
39     while (true) {\r
40       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
41       case 13:\r
42       case 15:\r
43       case 16:\r
44       case 17:\r
45       case STRING:\r
46       case HTML:\r
47       case IDENT:\r
48       case NUMBER:\r
49         ;\r
50         break;\r
51       default:\r
52         jj_la1[2] = jj_gen;\r
53         break label_1;\r
54       }\r
55       statement(graph);\r
56     }\r
57     jj_consume_token(9);\r
58     jj_consume_token(0);\r
59                                                                         {if (true) return graph;}\r
60     throw new Error("Missing return statement in function");\r
61   }\r
62 \r
63   final public void statement(IGraph graph) throws ParseException {\r
64     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
65     case STRING:\r
66     case HTML:\r
67     case IDENT:\r
68     case NUMBER:\r
69     String id1, id2;\r
70       id1 = id();\r
71       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
72       case 10:\r
73       case 19:\r
74       Node node = new Node(graph); connectors.put(id1, node);\r
75         attributes(node);\r
76         break;\r
77       case 5:\r
78         jj_consume_token(5);\r
79         id2 = id();\r
80         Edge edge = new Edge(connectors.get(id1.split(":")[0]),\r
81                                                  connectors.get(id2.split(":")[0]));\r
82         attributes(edge);\r
83         break;\r
84       default:\r
85         jj_la1[3] = jj_gen;\r
86         jj_consume_token(-1);\r
87         throw new ParseException();\r
88       }\r
89       break;\r
90     case 15:\r
91       jj_consume_token(15);\r
92       attributes(graph);\r
93       break;\r
94     case 16:\r
95       jj_consume_token(16);\r
96       attributes(defaultNode);\r
97       break;\r
98     case 17:\r
99       jj_consume_token(17);\r
100       attributes(defaultEdge);\r
101       break;\r
102     case 13:\r
103     Subgraph subgraph; String id;\r
104       jj_consume_token(13);\r
105       id = id();\r
106                        subgraph = new Subgraph(graph); connectors.put(id, subgraph);\r
107       jj_consume_token(8);\r
108       label_2:\r
109       while (true) {\r
110         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
111         case 13:\r
112         case 15:\r
113         case 16:\r
114         case 17:\r
115         case STRING:\r
116         case HTML:\r
117         case IDENT:\r
118         case NUMBER:\r
119           ;\r
120           break;\r
121         default:\r
122           jj_la1[4] = jj_gen;\r
123           break label_2;\r
124         }\r
125         statement(subgraph);\r
126       }\r
127       jj_consume_token(9);\r
128       break;\r
129     default:\r
130       jj_la1[5] = jj_gen;\r
131       jj_consume_token(-1);\r
132       throw new ParseException();\r
133     }\r
134   }\r
135 \r
136   final public void attributes(IAttributeContainer el) throws ParseException {\r
137     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
138     case 10:\r
139       jj_consume_token(10);\r
140       attribute(el);\r
141       label_3:\r
142       while (true) {\r
143         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
144         case 12:\r
145         case STRING:\r
146         case HTML:\r
147         case IDENT:\r
148         case NUMBER:\r
149           ;\r
150           break;\r
151         default:\r
152           jj_la1[6] = jj_gen;\r
153           break label_3;\r
154         }\r
155         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
156         case 12:\r
157           jj_consume_token(12);\r
158           break;\r
159         default:\r
160           jj_la1[7] = jj_gen;\r
161           ;\r
162         }\r
163         attribute(el);\r
164       }\r
165       jj_consume_token(11);\r
166       break;\r
167     default:\r
168       jj_la1[8] = jj_gen;\r
169       ;\r
170     }\r
171     jj_consume_token(19);\r
172 \r
173   }\r
174 \r
175   final public void attribute(IAttributeContainer el) throws ParseException {\r
176                                            String key, value="";\r
177     key = id();\r
178     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
179     case 4:\r
180       jj_consume_token(4);\r
181       value = id();\r
182       break;\r
183     default:\r
184       jj_la1[9] = jj_gen;\r
185       ;\r
186     }\r
187                                el.set(key, value);\r
188   }\r
189 \r
190   final public String id() throws ParseException {\r
191     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
192     case NUMBER:\r
193       jj_consume_token(NUMBER);\r
194              {if (true) return token.image;}\r
195       break;\r
196     case STRING:\r
197       jj_consume_token(STRING);\r
198              {if (true) return token.image;}\r
199       break;\r
200     case IDENT:\r
201       jj_consume_token(IDENT);\r
202             {if (true) return token.image;}\r
203       break;\r
204     case HTML:\r
205       jj_consume_token(HTML);\r
206            {if (true) return token.image;}\r
207       break;\r
208     default:\r
209       jj_la1[10] = jj_gen;\r
210       jj_consume_token(-1);\r
211       throw new ParseException();\r
212     }\r
213     throw new Error("Missing return statement in function");\r
214   }\r
215 \r
216   /** Generated Token Manager. */\r
217   public DotParserTokenManager token_source;\r
218   SimpleCharStream jj_input_stream;\r
219   /** Current token. */\r
220   public Token token;\r
221   /** Next token. */\r
222   public Token jj_nt;\r
223   private int jj_ntk;\r
224   private int jj_gen;\r
225   final private int[] jj_la1 = new int[11];\r
226   static private int[] jj_la1_0;\r
227   static {\r
228       jj_la1_init_0();\r
229    }\r
230    private static void jj_la1_init_0() {\r
231       jj_la1_0 = new int[] {0x40000,0xc000,0xf3a000,0x80420,0xf3a000,0xf3a000,0xf01000,0x1000,0x400,0x10,0xf00000,};\r
232    }\r
233 \r
234   /** Constructor with InputStream. */\r
235   public DotParser(java.io.InputStream stream) {\r
236      this(stream, null);\r
237   }\r
238   /** Constructor with InputStream and supplied encoding */\r
239   public DotParser(java.io.InputStream stream, String encoding) {\r
240     try { jj_input_stream = new SimpleCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }\r
241     token_source = new DotParserTokenManager(jj_input_stream);\r
242     token = new Token();\r
243     jj_ntk = -1;\r
244     jj_gen = 0;\r
245     for (int i = 0; i < 11; i++) jj_la1[i] = -1;\r
246   }\r
247 \r
248   /** Reinitialise. */\r
249   public void ReInit(java.io.InputStream stream) {\r
250      ReInit(stream, null);\r
251   }\r
252   /** Reinitialise. */\r
253   public void ReInit(java.io.InputStream stream, String encoding) {\r
254     try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }\r
255     token_source.ReInit(jj_input_stream);\r
256     token = new Token();\r
257     jj_ntk = -1;\r
258     jj_gen = 0;\r
259     for (int i = 0; i < 11; i++) jj_la1[i] = -1;\r
260   }\r
261 \r
262   /** Constructor. */\r
263   public DotParser(java.io.Reader stream) {\r
264     jj_input_stream = new SimpleCharStream(stream, 1, 1);\r
265     token_source = new DotParserTokenManager(jj_input_stream);\r
266     token = new Token();\r
267     jj_ntk = -1;\r
268     jj_gen = 0;\r
269     for (int i = 0; i < 11; i++) jj_la1[i] = -1;\r
270   }\r
271 \r
272   /** Reinitialise. */\r
273   public void ReInit(java.io.Reader stream) {\r
274     jj_input_stream.ReInit(stream, 1, 1);\r
275     token_source.ReInit(jj_input_stream);\r
276     token = new Token();\r
277     jj_ntk = -1;\r
278     jj_gen = 0;\r
279     for (int i = 0; i < 11; i++) jj_la1[i] = -1;\r
280   }\r
281 \r
282   /** Constructor with generated Token Manager. */\r
283   public DotParser(DotParserTokenManager tm) {\r
284     token_source = tm;\r
285     token = new Token();\r
286     jj_ntk = -1;\r
287     jj_gen = 0;\r
288     for (int i = 0; i < 11; i++) jj_la1[i] = -1;\r
289   }\r
290 \r
291   /** Reinitialise. */\r
292   public void ReInit(DotParserTokenManager tm) {\r
293     token_source = tm;\r
294     token = new Token();\r
295     jj_ntk = -1;\r
296     jj_gen = 0;\r
297     for (int i = 0; i < 11; i++) jj_la1[i] = -1;\r
298   }\r
299 \r
300   private Token jj_consume_token(int kind) throws ParseException {\r
301     Token oldToken;\r
302     if ((oldToken = token).next != null) token = token.next;\r
303     else token = token.next = token_source.getNextToken();\r
304     jj_ntk = -1;\r
305     if (token.kind == kind) {\r
306       jj_gen++;\r
307       return token;\r
308     }\r
309     token = oldToken;\r
310     jj_kind = kind;\r
311     throw generateParseException();\r
312   }\r
313 \r
314 \r
315 /** Get the next Token. */\r
316   final public Token getNextToken() {\r
317     if (token.next != null) token = token.next;\r
318     else token = token.next = token_source.getNextToken();\r
319     jj_ntk = -1;\r
320     jj_gen++;\r
321     return token;\r
322   }\r
323 \r
324 /** Get the specific Token. */\r
325   final public Token getToken(int index) {\r
326     Token t = token;\r
327     for (int i = 0; i < index; i++) {\r
328       if (t.next != null) t = t.next;\r
329       else t = t.next = token_source.getNextToken();\r
330     }\r
331     return t;\r
332   }\r
333 \r
334   private int jj_ntk() {\r
335     if ((jj_nt=token.next) == null)\r
336       return (jj_ntk = (token.next=token_source.getNextToken()).kind);\r
337     else\r
338       return (jj_ntk = jj_nt.kind);\r
339   }\r
340 \r
341   private java.util.List<int[]> jj_expentries = new java.util.ArrayList<int[]>();\r
342   private int[] jj_expentry;\r
343   private int jj_kind = -1;\r
344 \r
345   /** Generate ParseException. */\r
346   public ParseException generateParseException() {\r
347     jj_expentries.clear();\r
348     boolean[] la1tokens = new boolean[24];\r
349     if (jj_kind >= 0) {\r
350       la1tokens[jj_kind] = true;\r
351       jj_kind = -1;\r
352     }\r
353     for (int i = 0; i < 11; i++) {\r
354       if (jj_la1[i] == jj_gen) {\r
355         for (int j = 0; j < 32; j++) {\r
356           if ((jj_la1_0[i] & (1<<j)) != 0) {\r
357             la1tokens[j] = true;\r
358           }\r
359         }\r
360       }\r
361     }\r
362     for (int i = 0; i < 24; i++) {\r
363       if (la1tokens[i]) {\r
364         jj_expentry = new int[1];\r
365         jj_expentry[0] = i;\r
366         jj_expentries.add(jj_expentry);\r
367       }\r
368     }\r
369     int[][] exptokseq = new int[jj_expentries.size()][];\r
370     for (int i = 0; i < jj_expentries.size(); i++) {\r
371       exptokseq[i] = jj_expentries.get(i);\r
372     }\r
373     return new ParseException(token, exptokseq, tokenImage);\r
374   }\r
375 \r
376   /** Enable tracing. */\r
377   final public void enable_tracing() {\r
378   }\r
379 \r
380   /** Disable tracing. */\r
381   final public void disable_tracing() {\r
382   }\r
383 \r
384 }\r