-/* Generated By:JavaCC: Do not edit this line. DotParser.java */\r
-package org.simantics.graphviz.internal.parser;\r
-\r
-import org.simantics.graphviz.*;\r
-import java.util.Map;\r
-import java.util.HashMap;\r
-\r
-@SuppressWarnings("all")\r
-public class DotParser implements DotParserConstants {\r
- AbstractAttributeContainer defaultNode = new AbstractAttributeContainer();\r
- AbstractAttributeContainer defaultEdge = new AbstractAttributeContainer();\r
- Map<String,Identifiable> connectors = new HashMap<String,Identifiable>();\r
-\r
-/*** Parser ********************************************************/\r
- final public Graph document() throws ParseException {\r
- Graph graph = new Graph();\r
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
- case 18:\r
- jj_consume_token(18);\r
- break;\r
- default:\r
- jj_la1[0] = jj_gen;\r
- ;\r
- }\r
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
- case 15:\r
- jj_consume_token(15);\r
- break;\r
- case 14:\r
- jj_consume_token(14);\r
- break;\r
- default:\r
- jj_la1[1] = jj_gen;\r
- jj_consume_token(-1);\r
- throw new ParseException();\r
- }\r
- jj_consume_token(8);\r
- label_1:\r
- while (true) {\r
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
- case 13:\r
- case 15:\r
- case 16:\r
- case 17:\r
- case STRING:\r
- case HTML:\r
- case IDENT:\r
- case NUMBER:\r
- ;\r
- break;\r
- default:\r
- jj_la1[2] = jj_gen;\r
- break label_1;\r
- }\r
- statement(graph);\r
- }\r
- jj_consume_token(9);\r
- jj_consume_token(0);\r
- {if (true) return graph;}\r
- throw new Error("Missing return statement in function");\r
- }\r
-\r
- final public void statement(IGraph graph) throws ParseException {\r
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
- case STRING:\r
- case HTML:\r
- case IDENT:\r
- case NUMBER:\r
- String id1, id2;\r
- id1 = id();\r
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
- case 10:\r
- case 19:\r
- Node node = new Node(graph); connectors.put(id1, node);\r
- attributes(node);\r
- break;\r
- case 5:\r
- jj_consume_token(5);\r
- id2 = id();\r
- Edge edge = new Edge(connectors.get(id1.split(":")[0]),\r
- connectors.get(id2.split(":")[0]));\r
- attributes(edge);\r
- break;\r
- default:\r
- jj_la1[3] = jj_gen;\r
- jj_consume_token(-1);\r
- throw new ParseException();\r
- }\r
- break;\r
- case 15:\r
- jj_consume_token(15);\r
- attributes(graph);\r
- break;\r
- case 16:\r
- jj_consume_token(16);\r
- attributes(defaultNode);\r
- break;\r
- case 17:\r
- jj_consume_token(17);\r
- attributes(defaultEdge);\r
- break;\r
- case 13:\r
- Subgraph subgraph; String id;\r
- jj_consume_token(13);\r
- id = id();\r
- subgraph = new Subgraph(graph); connectors.put(id, subgraph);\r
- jj_consume_token(8);\r
- label_2:\r
- while (true) {\r
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
- case 13:\r
- case 15:\r
- case 16:\r
- case 17:\r
- case STRING:\r
- case HTML:\r
- case IDENT:\r
- case NUMBER:\r
- ;\r
- break;\r
- default:\r
- jj_la1[4] = jj_gen;\r
- break label_2;\r
- }\r
- statement(subgraph);\r
- }\r
- jj_consume_token(9);\r
- break;\r
- default:\r
- jj_la1[5] = jj_gen;\r
- jj_consume_token(-1);\r
- throw new ParseException();\r
- }\r
- }\r
-\r
- final public void attributes(IAttributeContainer el) throws ParseException {\r
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
- case 10:\r
- jj_consume_token(10);\r
- attribute(el);\r
- label_3:\r
- while (true) {\r
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
- case 12:\r
- case STRING:\r
- case HTML:\r
- case IDENT:\r
- case NUMBER:\r
- ;\r
- break;\r
- default:\r
- jj_la1[6] = jj_gen;\r
- break label_3;\r
- }\r
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
- case 12:\r
- jj_consume_token(12);\r
- break;\r
- default:\r
- jj_la1[7] = jj_gen;\r
- ;\r
- }\r
- attribute(el);\r
- }\r
- jj_consume_token(11);\r
- break;\r
- default:\r
- jj_la1[8] = jj_gen;\r
- ;\r
- }\r
- jj_consume_token(19);\r
-\r
- }\r
-\r
- final public void attribute(IAttributeContainer el) throws ParseException {\r
- String key, value="";\r
- key = id();\r
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
- case 4:\r
- jj_consume_token(4);\r
- value = id();\r
- break;\r
- default:\r
- jj_la1[9] = jj_gen;\r
- ;\r
- }\r
- el.set(key, value);\r
- }\r
-\r
- final public String id() throws ParseException {\r
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
- case NUMBER:\r
- jj_consume_token(NUMBER);\r
- {if (true) return token.image;}\r
- break;\r
- case STRING:\r
- jj_consume_token(STRING);\r
- {if (true) return token.image;}\r
- break;\r
- case IDENT:\r
- jj_consume_token(IDENT);\r
- {if (true) return token.image;}\r
- break;\r
- case HTML:\r
- jj_consume_token(HTML);\r
- {if (true) return token.image;}\r
- break;\r
- default:\r
- jj_la1[10] = jj_gen;\r
- jj_consume_token(-1);\r
- throw new ParseException();\r
- }\r
- throw new Error("Missing return statement in function");\r
- }\r
-\r
- /** Generated Token Manager. */\r
- public DotParserTokenManager token_source;\r
- SimpleCharStream jj_input_stream;\r
- /** Current token. */\r
- public Token token;\r
- /** Next token. */\r
- public Token jj_nt;\r
- private int jj_ntk;\r
- private int jj_gen;\r
- final private int[] jj_la1 = new int[11];\r
- static private int[] jj_la1_0;\r
- static {\r
- jj_la1_init_0();\r
- }\r
- private static void jj_la1_init_0() {\r
- jj_la1_0 = new int[] {0x40000,0xc000,0xf3a000,0x80420,0xf3a000,0xf3a000,0xf01000,0x1000,0x400,0x10,0xf00000,};\r
- }\r
-\r
- /** Constructor with InputStream. */\r
- public DotParser(java.io.InputStream stream) {\r
- this(stream, null);\r
- }\r
- /** Constructor with InputStream and supplied encoding */\r
- public DotParser(java.io.InputStream stream, String encoding) {\r
- try { jj_input_stream = new SimpleCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }\r
- token_source = new DotParserTokenManager(jj_input_stream);\r
- token = new Token();\r
- jj_ntk = -1;\r
- jj_gen = 0;\r
- for (int i = 0; i < 11; i++) jj_la1[i] = -1;\r
- }\r
-\r
- /** Reinitialise. */\r
- public void ReInit(java.io.InputStream stream) {\r
- ReInit(stream, null);\r
- }\r
- /** Reinitialise. */\r
- public void ReInit(java.io.InputStream stream, String encoding) {\r
- try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }\r
- token_source.ReInit(jj_input_stream);\r
- token = new Token();\r
- jj_ntk = -1;\r
- jj_gen = 0;\r
- for (int i = 0; i < 11; i++) jj_la1[i] = -1;\r
- }\r
-\r
- /** Constructor. */\r
- public DotParser(java.io.Reader stream) {\r
- jj_input_stream = new SimpleCharStream(stream, 1, 1);\r
- token_source = new DotParserTokenManager(jj_input_stream);\r
- token = new Token();\r
- jj_ntk = -1;\r
- jj_gen = 0;\r
- for (int i = 0; i < 11; i++) jj_la1[i] = -1;\r
- }\r
-\r
- /** Reinitialise. */\r
- public void ReInit(java.io.Reader stream) {\r
- jj_input_stream.ReInit(stream, 1, 1);\r
- token_source.ReInit(jj_input_stream);\r
- token = new Token();\r
- jj_ntk = -1;\r
- jj_gen = 0;\r
- for (int i = 0; i < 11; i++) jj_la1[i] = -1;\r
- }\r
-\r
- /** Constructor with generated Token Manager. */\r
- public DotParser(DotParserTokenManager tm) {\r
- token_source = tm;\r
- token = new Token();\r
- jj_ntk = -1;\r
- jj_gen = 0;\r
- for (int i = 0; i < 11; i++) jj_la1[i] = -1;\r
- }\r
-\r
- /** Reinitialise. */\r
- public void ReInit(DotParserTokenManager tm) {\r
- token_source = tm;\r
- token = new Token();\r
- jj_ntk = -1;\r
- jj_gen = 0;\r
- for (int i = 0; i < 11; i++) jj_la1[i] = -1;\r
- }\r
-\r
- private Token jj_consume_token(int kind) throws ParseException {\r
- Token oldToken;\r
- if ((oldToken = token).next != null) token = token.next;\r
- else token = token.next = token_source.getNextToken();\r
- jj_ntk = -1;\r
- if (token.kind == kind) {\r
- jj_gen++;\r
- return token;\r
- }\r
- token = oldToken;\r
- jj_kind = kind;\r
- throw generateParseException();\r
- }\r
-\r
-\r
-/** Get the next Token. */\r
- final public Token getNextToken() {\r
- if (token.next != null) token = token.next;\r
- else token = token.next = token_source.getNextToken();\r
- jj_ntk = -1;\r
- jj_gen++;\r
- return token;\r
- }\r
-\r
-/** Get the specific Token. */\r
- final public Token getToken(int index) {\r
- Token t = token;\r
- for (int i = 0; i < index; i++) {\r
- if (t.next != null) t = t.next;\r
- else t = t.next = token_source.getNextToken();\r
- }\r
- return t;\r
- }\r
-\r
- private int jj_ntk() {\r
- if ((jj_nt=token.next) == null)\r
- return (jj_ntk = (token.next=token_source.getNextToken()).kind);\r
- else\r
- return (jj_ntk = jj_nt.kind);\r
- }\r
-\r
- private java.util.List<int[]> jj_expentries = new java.util.ArrayList<int[]>();\r
- private int[] jj_expentry;\r
- private int jj_kind = -1;\r
-\r
- /** Generate ParseException. */\r
- public ParseException generateParseException() {\r
- jj_expentries.clear();\r
- boolean[] la1tokens = new boolean[24];\r
- if (jj_kind >= 0) {\r
- la1tokens[jj_kind] = true;\r
- jj_kind = -1;\r
- }\r
- for (int i = 0; i < 11; i++) {\r
- if (jj_la1[i] == jj_gen) {\r
- for (int j = 0; j < 32; j++) {\r
- if ((jj_la1_0[i] & (1<<j)) != 0) {\r
- la1tokens[j] = true;\r
- }\r
- }\r
- }\r
- }\r
- for (int i = 0; i < 24; i++) {\r
- if (la1tokens[i]) {\r
- jj_expentry = new int[1];\r
- jj_expentry[0] = i;\r
- jj_expentries.add(jj_expentry);\r
- }\r
- }\r
- int[][] exptokseq = new int[jj_expentries.size()][];\r
- for (int i = 0; i < jj_expentries.size(); i++) {\r
- exptokseq[i] = jj_expentries.get(i);\r
- }\r
- return new ParseException(token, exptokseq, tokenImage);\r
- }\r
-\r
- /** Enable tracing. */\r
- final public void enable_tracing() {\r
- }\r
-\r
- /** Disable tracing. */\r
- final public void disable_tracing() {\r
- }\r
-\r
-}\r
+/* Generated By:JavaCC: Do not edit this line. DotParser.java */
+package org.simantics.graphviz.internal.parser;
+
+import org.simantics.graphviz.*;
+import java.util.Map;
+import java.util.HashMap;
+
+@SuppressWarnings("all")
+public class DotParser implements DotParserConstants {
+ AbstractAttributeContainer defaultNode = new AbstractAttributeContainer();
+ AbstractAttributeContainer defaultEdge = new AbstractAttributeContainer();
+ Map<String,Identifiable> connectors = new HashMap<String,Identifiable>();
+
+/*** Parser ********************************************************/
+ final public Graph document() throws ParseException {
+ Graph graph = new Graph();
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case 18:
+ jj_consume_token(18);
+ break;
+ default:
+ jj_la1[0] = jj_gen;
+ ;
+ }
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case 15:
+ jj_consume_token(15);
+ break;
+ case 14:
+ jj_consume_token(14);
+ break;
+ default:
+ jj_la1[1] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ jj_consume_token(8);
+ label_1:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case 13:
+ case 15:
+ case 16:
+ case 17:
+ case STRING:
+ case HTML:
+ case IDENT:
+ case NUMBER:
+ ;
+ break;
+ default:
+ jj_la1[2] = jj_gen;
+ break label_1;
+ }
+ statement(graph);
+ }
+ jj_consume_token(9);
+ jj_consume_token(0);
+ {if (true) return graph;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public void statement(IGraph graph) throws ParseException {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case STRING:
+ case HTML:
+ case IDENT:
+ case NUMBER:
+ String id1, id2;
+ id1 = id();
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case 10:
+ case 19:
+ Node node = new Node(graph); connectors.put(id1, node);
+ attributes(node);
+ break;
+ case 5:
+ jj_consume_token(5);
+ id2 = id();
+ Edge edge = new Edge(connectors.get(id1.split(":")[0]),
+ connectors.get(id2.split(":")[0]));
+ attributes(edge);
+ break;
+ default:
+ jj_la1[3] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ break;
+ case 15:
+ jj_consume_token(15);
+ attributes(graph);
+ break;
+ case 16:
+ jj_consume_token(16);
+ attributes(defaultNode);
+ break;
+ case 17:
+ jj_consume_token(17);
+ attributes(defaultEdge);
+ break;
+ case 13:
+ Subgraph subgraph; String id;
+ jj_consume_token(13);
+ id = id();
+ subgraph = new Subgraph(graph); connectors.put(id, subgraph);
+ jj_consume_token(8);
+ label_2:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case 13:
+ case 15:
+ case 16:
+ case 17:
+ case STRING:
+ case HTML:
+ case IDENT:
+ case NUMBER:
+ ;
+ break;
+ default:
+ jj_la1[4] = jj_gen;
+ break label_2;
+ }
+ statement(subgraph);
+ }
+ jj_consume_token(9);
+ break;
+ default:
+ jj_la1[5] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ }
+
+ final public void attributes(IAttributeContainer el) throws ParseException {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case 10:
+ jj_consume_token(10);
+ attribute(el);
+ label_3:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case 12:
+ case STRING:
+ case HTML:
+ case IDENT:
+ case NUMBER:
+ ;
+ break;
+ default:
+ jj_la1[6] = jj_gen;
+ break label_3;
+ }
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case 12:
+ jj_consume_token(12);
+ break;
+ default:
+ jj_la1[7] = jj_gen;
+ ;
+ }
+ attribute(el);
+ }
+ jj_consume_token(11);
+ break;
+ default:
+ jj_la1[8] = jj_gen;
+ ;
+ }
+ jj_consume_token(19);
+
+ }
+
+ final public void attribute(IAttributeContainer el) throws ParseException {
+ String key, value="";
+ key = id();
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case 4:
+ jj_consume_token(4);
+ value = id();
+ break;
+ default:
+ jj_la1[9] = jj_gen;
+ ;
+ }
+ el.set(key, value);
+ }
+
+ final public String id() throws ParseException {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case NUMBER:
+ jj_consume_token(NUMBER);
+ {if (true) return token.image;}
+ break;
+ case STRING:
+ jj_consume_token(STRING);
+ {if (true) return token.image;}
+ break;
+ case IDENT:
+ jj_consume_token(IDENT);
+ {if (true) return token.image;}
+ break;
+ case HTML:
+ jj_consume_token(HTML);
+ {if (true) return token.image;}
+ break;
+ default:
+ jj_la1[10] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ throw new Error("Missing return statement in function");
+ }
+
+ /** Generated Token Manager. */
+ public DotParserTokenManager token_source;
+ SimpleCharStream jj_input_stream;
+ /** Current token. */
+ public Token token;
+ /** Next token. */
+ public Token jj_nt;
+ private int jj_ntk;
+ private int jj_gen;
+ final private int[] jj_la1 = new int[11];
+ static private int[] jj_la1_0;
+ static {
+ jj_la1_init_0();
+ }
+ private static void jj_la1_init_0() {
+ jj_la1_0 = new int[] {0x40000,0xc000,0xf3a000,0x80420,0xf3a000,0xf3a000,0xf01000,0x1000,0x400,0x10,0xf00000,};
+ }
+
+ /** Constructor with InputStream. */
+ public DotParser(java.io.InputStream stream) {
+ this(stream, null);
+ }
+ /** Constructor with InputStream and supplied encoding */
+ public DotParser(java.io.InputStream stream, String encoding) {
+ try { jj_input_stream = new SimpleCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
+ token_source = new DotParserTokenManager(jj_input_stream);
+ token = new Token();
+ jj_ntk = -1;
+ jj_gen = 0;
+ for (int i = 0; i < 11; i++) jj_la1[i] = -1;
+ }
+
+ /** Reinitialise. */
+ public void ReInit(java.io.InputStream stream) {
+ ReInit(stream, null);
+ }
+ /** Reinitialise. */
+ public void ReInit(java.io.InputStream stream, String encoding) {
+ try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
+ token_source.ReInit(jj_input_stream);
+ token = new Token();
+ jj_ntk = -1;
+ jj_gen = 0;
+ for (int i = 0; i < 11; i++) jj_la1[i] = -1;
+ }
+
+ /** Constructor. */
+ public DotParser(java.io.Reader stream) {
+ jj_input_stream = new SimpleCharStream(stream, 1, 1);
+ token_source = new DotParserTokenManager(jj_input_stream);
+ token = new Token();
+ jj_ntk = -1;
+ jj_gen = 0;
+ for (int i = 0; i < 11; i++) jj_la1[i] = -1;
+ }
+
+ /** Reinitialise. */
+ public void ReInit(java.io.Reader stream) {
+ jj_input_stream.ReInit(stream, 1, 1);
+ token_source.ReInit(jj_input_stream);
+ token = new Token();
+ jj_ntk = -1;
+ jj_gen = 0;
+ for (int i = 0; i < 11; i++) jj_la1[i] = -1;
+ }
+
+ /** Constructor with generated Token Manager. */
+ public DotParser(DotParserTokenManager tm) {
+ token_source = tm;
+ token = new Token();
+ jj_ntk = -1;
+ jj_gen = 0;
+ for (int i = 0; i < 11; i++) jj_la1[i] = -1;
+ }
+
+ /** Reinitialise. */
+ public void ReInit(DotParserTokenManager tm) {
+ token_source = tm;
+ token = new Token();
+ jj_ntk = -1;
+ jj_gen = 0;
+ for (int i = 0; i < 11; i++) jj_la1[i] = -1;
+ }
+
+ private Token jj_consume_token(int kind) throws ParseException {
+ Token oldToken;
+ if ((oldToken = token).next != null) token = token.next;
+ else token = token.next = token_source.getNextToken();
+ jj_ntk = -1;
+ if (token.kind == kind) {
+ jj_gen++;
+ return token;
+ }
+ token = oldToken;
+ jj_kind = kind;
+ throw generateParseException();
+ }
+
+
+/** Get the next Token. */
+ final public Token getNextToken() {
+ if (token.next != null) token = token.next;
+ else token = token.next = token_source.getNextToken();
+ jj_ntk = -1;
+ jj_gen++;
+ return token;
+ }
+
+/** Get the specific Token. */
+ final public Token getToken(int index) {
+ Token t = token;
+ for (int i = 0; i < index; i++) {
+ if (t.next != null) t = t.next;
+ else t = t.next = token_source.getNextToken();
+ }
+ return t;
+ }
+
+ private int jj_ntk() {
+ if ((jj_nt=token.next) == null)
+ return (jj_ntk = (token.next=token_source.getNextToken()).kind);
+ else
+ return (jj_ntk = jj_nt.kind);
+ }
+
+ private java.util.List<int[]> jj_expentries = new java.util.ArrayList<int[]>();
+ private int[] jj_expentry;
+ private int jj_kind = -1;
+
+ /** Generate ParseException. */
+ public ParseException generateParseException() {
+ jj_expentries.clear();
+ boolean[] la1tokens = new boolean[24];
+ if (jj_kind >= 0) {
+ la1tokens[jj_kind] = true;
+ jj_kind = -1;
+ }
+ for (int i = 0; i < 11; i++) {
+ if (jj_la1[i] == jj_gen) {
+ for (int j = 0; j < 32; j++) {
+ if ((jj_la1_0[i] & (1<<j)) != 0) {
+ la1tokens[j] = true;
+ }
+ }
+ }
+ }
+ for (int i = 0; i < 24; i++) {
+ if (la1tokens[i]) {
+ jj_expentry = new int[1];
+ jj_expentry[0] = i;
+ jj_expentries.add(jj_expentry);
+ }
+ }
+ int[][] exptokseq = new int[jj_expentries.size()][];
+ for (int i = 0; i < jj_expentries.size(); i++) {
+ exptokseq[i] = jj_expentries.get(i);
+ }
+ return new ParseException(token, exptokseq, tokenImage);
+ }
+
+ /** Enable tracing. */
+ final public void enable_tracing() {
+ }
+
+ /** Disable tracing. */
+ final public void disable_tracing() {
+ }
+
+}