@Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; if (!super.equals(o)) return false; ConditionalExpr that = (ConditionalExpr) o; return newBranchStarted == that.newBranchStarted && linkAsBranch == that.linkAsBranch && (node != null ? node.equals(that.node) : that.node == null); }
@Override public int hashCode() { int result = super.hashCode(); result = 31 * result + (node != null ? node.hashCode() : 0); result = 31 * result + (newBranchStarted ? 1 : 0); result = 31 * result + (linkAsBranch ? 1 : 0); return result; } }
private static void makeTree(char[] data, int offset, int end, int[] flags, Pattern re) throws PatternSyntaxException { // memreg,counter,depth,lookahead int[] vars = {1, 0, 0, 0}; //don't use counters[0] //collect iterators for subsequent optimization ArrayList<TermIterator> iterators = new ArrayList<TermIterator>(); HashMap<String, Integer> groupNames = new HashMap<String, Integer>(); Pretokenizer t = new Pretokenizer(data, offset, end); Term term = makeTree(t, data, vars, flags, new Group(), iterators, groupNames); // convert closing outer bracket into success term term.out.type = SUCCESS; //throw out opening bracket Term first = term.next; // Optimisation: Term optimized = first; Optimizer opt = Optimizer.find(first); if (opt != null) optimized = opt.makeFirst(first); for (TermIterator i : iterators) { i.optimize(); } re.root = optimized; re.root = first; re.root0 = first; re.memregs = vars[MEMREG_COUNT]; re.counters = vars[CNTREG_COUNT]; re.lookaheads = vars[LOOKAHEAD_COUNT]; re.namedGroupMap = groupNames; }
private static void makeTree(char[] data, int offset, int end, int[] flags, Pattern re) throws PatternSyntaxException { // memreg,counter,depth,lookahead int[] vars = {1, 0, 0, 0}; //don't use counters[0] //collect iterators for subsequent optimization ArrayList<TermIterator> iterators = new ArrayList<TermIterator>(); HashMap<String, Integer> groupNames = new HashMap<String, Integer>(); Pretokenizer t = new Pretokenizer(data, offset, end); Term term = makeTree(t, data, vars, flags, new Group(), iterators, groupNames); // convert closing outer bracket into success term term.out.type = SUCCESS; //throw out opening bracket Term first = term.next; // Optimisation: Term optimized = first; Optimizer opt = Optimizer.find(first); if (opt != null) optimized = opt.makeFirst(first); for (TermIterator i : iterators) { i.optimize(); } re.root = optimized; re.root = first; re.root0 = first; re.memregs = vars[MEMREG_COUNT]; re.counters = vars[CNTREG_COUNT]; re.lookaheads = vars[LOOKAHEAD_COUNT]; re.namedGroupMap = groupNames; }
case Pretokenizer.PLAIN_GROUP: vars[DEPTH]++; term.append(makeTree(t, data, vars, new int[]{t.flags(flags[0])}, new Group(), iterators, groupNames)); break; case Pretokenizer.NAMED_GROUP: term.append(makeTree(t, data, vars, flags, new Group(id), iterators, groupNames)); break; case '(': vars[DEPTH]++; term.append(makeTree(t, data, vars, flags, new Group(vars[MEMREG_COUNT]++), iterators, groupNames)); break; case Pretokenizer.POS_LOOKAHEAD:
@Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; if (!super.equals(o)) return false; ConditionalExpr that = (ConditionalExpr) o; return newBranchStarted == that.newBranchStarted && linkAsBranch == that.linkAsBranch && (node != null ? node.equals(that.node) : that.node == null); }
@Override public int hashCode() { int result = super.hashCode(); result = 31 * result + (node != null ? node.hashCode() : 0); result = 31 * result + (newBranchStarted ? 1 : 0); result = 31 * result + (linkAsBranch ? 1 : 0); return result; } }
case Pretokenizer.PLAIN_GROUP: vars[DEPTH]++; term.append(makeTree(t, data, vars, new int[]{t.flags(flags[0])}, new Group(), iterators, groupNames)); break; case Pretokenizer.NAMED_GROUP: term.append(makeTree(t, data, vars, flags, new Group(id), iterators, groupNames)); break; case '(': vars[DEPTH]++; term.append(makeTree(t, data, vars, flags, new Group(vars[MEMREG_COUNT]++), iterators, groupNames)); break; case Pretokenizer.POS_LOOKAHEAD: