1 /* Generated By:JavaCC: Do not edit this line. DotParser.java */
\r
2 package org.simantics.graphviz.internal.parser;
\r
4 import org.simantics.graphviz.*;
\r
5 import java.util.Map;
\r
6 import java.util.HashMap;
\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
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
19 jj_consume_token(18);
\r
25 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
\r
27 jj_consume_token(15);
\r
30 jj_consume_token(14);
\r
34 jj_consume_token(-1);
\r
35 throw new ParseException();
\r
37 jj_consume_token(8);
\r
40 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
\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
63 final public void statement(IGraph graph) throws ParseException {
\r
64 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
\r
71 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
\r
74 Node node = new Node(graph); connectors.put(id1, node);
\r
78 jj_consume_token(5);
\r
80 Edge edge = new Edge(connectors.get(id1.split(":")[0]),
\r
81 connectors.get(id2.split(":")[0]));
\r
86 jj_consume_token(-1);
\r
87 throw new ParseException();
\r
91 jj_consume_token(15);
\r
95 jj_consume_token(16);
\r
96 attributes(defaultNode);
\r
99 jj_consume_token(17);
\r
100 attributes(defaultEdge);
\r
103 Subgraph subgraph; String id;
\r
104 jj_consume_token(13);
\r
106 subgraph = new Subgraph(graph); connectors.put(id, subgraph);
\r
107 jj_consume_token(8);
\r
110 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
\r
122 jj_la1[4] = jj_gen;
\r
125 statement(subgraph);
\r
127 jj_consume_token(9);
\r
130 jj_la1[5] = jj_gen;
\r
131 jj_consume_token(-1);
\r
132 throw new ParseException();
\r
136 final public void attributes(IAttributeContainer el) throws ParseException {
\r
137 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
\r
139 jj_consume_token(10);
\r
143 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
\r
152 jj_la1[6] = jj_gen;
\r
155 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
\r
157 jj_consume_token(12);
\r
160 jj_la1[7] = jj_gen;
\r
165 jj_consume_token(11);
\r
168 jj_la1[8] = jj_gen;
\r
171 jj_consume_token(19);
\r
175 final public void attribute(IAttributeContainer el) throws ParseException {
\r
176 String key, value="";
\r
178 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
\r
180 jj_consume_token(4);
\r
184 jj_la1[9] = jj_gen;
\r
187 el.set(key, value);
\r
190 final public String id() throws ParseException {
\r
191 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
\r
193 jj_consume_token(NUMBER);
\r
194 {if (true) return token.image;}
\r
197 jj_consume_token(STRING);
\r
198 {if (true) return token.image;}
\r
201 jj_consume_token(IDENT);
\r
202 {if (true) return token.image;}
\r
205 jj_consume_token(HTML);
\r
206 {if (true) return token.image;}
\r
209 jj_la1[10] = jj_gen;
\r
210 jj_consume_token(-1);
\r
211 throw new ParseException();
\r
213 throw new Error("Missing return statement in function");
\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
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
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
234 /** Constructor with InputStream. */
\r
235 public DotParser(java.io.InputStream stream) {
\r
236 this(stream, null);
\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
245 for (int i = 0; i < 11; i++) jj_la1[i] = -1;
\r
248 /** Reinitialise. */
\r
249 public void ReInit(java.io.InputStream stream) {
\r
250 ReInit(stream, null);
\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
259 for (int i = 0; i < 11; i++) jj_la1[i] = -1;
\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
269 for (int i = 0; i < 11; i++) jj_la1[i] = -1;
\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
279 for (int i = 0; i < 11; i++) jj_la1[i] = -1;
\r
282 /** Constructor with generated Token Manager. */
\r
283 public DotParser(DotParserTokenManager tm) {
\r
285 token = new Token();
\r
288 for (int i = 0; i < 11; i++) jj_la1[i] = -1;
\r
291 /** Reinitialise. */
\r
292 public void ReInit(DotParserTokenManager tm) {
\r
294 token = new Token();
\r
297 for (int i = 0; i < 11; i++) jj_la1[i] = -1;
\r
300 private Token jj_consume_token(int kind) throws ParseException {
\r
302 if ((oldToken = token).next != null) token = token.next;
\r
303 else token = token.next = token_source.getNextToken();
\r
305 if (token.kind == kind) {
\r
311 throw generateParseException();
\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
324 /** Get the specific Token. */
\r
325 final public Token getToken(int index) {
\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
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
338 return (jj_ntk = jj_nt.kind);
\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
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
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
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
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
373 return new ParseException(token, exptokseq, tokenImage);
\r
376 /** Enable tracing. */
\r
377 final public void enable_tracing() {
\r
380 /** Disable tracing. */
\r
381 final public void disable_tracing() {
\r