CaptureTreeNode cloneTree() { CaptureTreeNode clone = new CaptureTreeNode(); clone.beg = beg; clone.end = end; for (int i = 0; i < numChildren; i++) { CaptureTreeNode child = children[i].cloneTree(); clone.addChild(child); } return clone; } }
private void checkCaptureHistory(Region region) { CaptureTreeNode node; if (region.historyRoot == null) { node = region.historyRoot = new CaptureTreeNode(); } else { node = region.historyRoot; node.clear(); } // was clear ??? node.group = 0; node.beg = ((pkeep > s) ? s : pkeep) - str; node.end = s - str; stkp = 0; makeCaptureHistoryTree(region.historyRoot); }
private boolean makeCaptureHistoryTree(CaptureTreeNode node) { //CaptureTreeNode child; int k = stkp; //int k = kp; while (k < stk) { StackEntry e = stack[k]; if (e.type == MEM_START) { int n = e.getMemNum(); if (n <= Config.MAX_CAPTURE_HISTORY_GROUP && bsAt(regex.captureHistory, n)) { CaptureTreeNode child = new CaptureTreeNode(); child.group = n; child.beg = e.getMemPStr() - str; node.addChild(child); stkp = k + 1; if (makeCaptureHistoryTree(child)) return true; k = stkp; child.end = e.getMemPStr() - str; } } else if (e.type == MEM_END) { if (e.getMemNum() == node.group) { node.end = e.getMemPStr() - str; stkp = k; return false; } } } return true; /* 1: root node ending. */ }
public Region clone() { Region region = new Region(numRegs); System.arraycopy(beg, 0, region.beg, 0, beg.length); System.arraycopy(end, 0, region.end, 0, end.length); if (historyRoot != null) region.historyRoot = historyRoot.cloneTree(); return region; }
private boolean makeCaptureHistoryTree(CaptureTreeNode node) { //CaptureTreeNode child; int k = stkp; //int k = kp; while (k < stk) { StackEntry e = stack[k]; if (e.type == MEM_START) { int n = e.getMemNum(); if (n <= Config.MAX_CAPTURE_HISTORY_GROUP && bsAt(regex.captureHistory, n)) { CaptureTreeNode child = new CaptureTreeNode(); child.group = n; child.beg = e.getMemPStr() - str; node.addChild(child); stkp = k + 1; if (makeCaptureHistoryTree(child)) return true; k = stkp; child.end = e.getMemPStr() - str; } } else if (e.type == MEM_END) { if (e.getMemNum() == node.group) { node.end = e.getMemPStr() - str; stkp = k; return false; } } } return true; /* 1: root node ending. */ }
public Region clone() { Region region = new Region(numRegs); System.arraycopy(beg, 0, region.beg, 0, beg.length); System.arraycopy(end, 0, region.end, 0, end.length); if (historyRoot != null) region.historyRoot = historyRoot.cloneTree(); return region; }
CaptureTreeNode cloneTree() { CaptureTreeNode clone = new CaptureTreeNode(); clone.beg = beg; clone.end = end; for (int i = 0; i < numChildren; i++) { CaptureTreeNode child = children[i].cloneTree(); clone.addChild(child); } return clone; } }
private void checkCaptureHistory(Region region) { CaptureTreeNode node; if (region.historyRoot == null) { node = region.historyRoot = new CaptureTreeNode(); } else { node = region.historyRoot; node.clear(); } // was clear ??? node.group = 0; node.beg = ((pkeep > s) ? s : pkeep) - str; node.end = s - str; stkp = 0; makeCaptureHistoryTree(region.historyRoot); }