1 5 6 7 8 package com.hp.hpl.jena.rdql.parser; 9 10 class JJTRDQLParserState { 11 private java.util.Stack nodes; 12 private java.util.Stack marks; 13 14 private int sp; private int mk; private boolean node_created; 17 18 JJTRDQLParserState() { 19 nodes = new java.util.Stack (); 20 marks = new java.util.Stack (); 21 sp = 0; 22 mk = 0; 23 } 24 25 28 boolean nodeCreated() { 29 return node_created; 30 } 31 32 34 void reset() { 35 nodes.removeAllElements(); 36 marks.removeAllElements(); 37 sp = 0; 38 mk = 0; 39 } 40 41 43 Node rootNode() { 44 return (Node)nodes.elementAt(0); 45 } 46 47 48 void pushNode(Node n) { 49 nodes.push(n); 50 ++sp; 51 } 52 53 55 Node popNode() { 56 if (--sp < mk) { 57 mk = ((Integer )marks.pop()).intValue(); 58 } 59 return (Node)nodes.pop(); 60 } 61 62 63 Node peekNode() { 64 return (Node)nodes.peek(); 65 } 66 67 69 int nodeArity() { 70 return sp - mk; 71 } 72 73 74 void clearNodeScope(Node n) { 75 while (sp > mk) { 76 popNode(); 77 } 78 mk = ((Integer )marks.pop()).intValue(); 79 } 80 81 82 void openNodeScope(Node n) { 83 marks.push(new Integer (mk)); 84 mk = sp; 85 n.jjtOpen(); 86 } 87 88 89 93 void closeNodeScope(Node n, int num) { 94 mk = ((Integer )marks.pop()).intValue(); 95 while (num-- > 0) { 96 Node c = popNode(); 97 c.jjtSetParent(n); 98 n.jjtAddChild(c, num); 99 } 100 n.jjtClose(); 101 pushNode(n); 102 node_created = true; 103 } 104 105 106 111 void closeNodeScope(Node n, boolean condition) { 112 if (condition) { 113 int a = nodeArity(); 114 mk = ((Integer )marks.pop()).intValue(); 115 while (a-- > 0) { 116 Node c = popNode(); 117 c.jjtSetParent(n); 118 n.jjtAddChild(c, a); 119 } 120 n.jjtClose(); 121 pushNode(n); 122 node_created = true; 123 } else { 124 mk = ((Integer )marks.pop()).intValue(); 125 node_created = false; 126 } 127 } 128 } 129 130 156 | Popular Tags |