45 46 47 public ScanEnvironment(final Regex regex, final Syntax syntax) { 48 this.reg = regex; 49 option = regex.options; 50 caseFoldFlag = regex.caseFoldFlag; 51 this.syntax = syntax; 52 } 53 54 public void clear() { 55 captureHistory = bsClear(); 56 btMemStart = bsClear(); 57 btMemEnd = bsClear(); 58 backrefedMem = bsClear(); 59 60 numMem = 0; 61 memNodes = null; 62 } 63 64 public int addMemEntry() { 65 if (numMem++ == 0) { 66 memNodes = new Node[SCANENV_MEMNODES_SIZE]; 67 } else if (numMem >= memNodes.length) { 68 final Node[]tmp = new Node[memNodes.length << 1]; 69 System.arraycopy(memNodes, 0, tmp, 0, memNodes.length); 70 memNodes = tmp; 71 } 72 73 return numMem; 74 } 75 76 public void setMemNode(final int num, final Node node) { 77 if (numMem >= num) { 78 memNodes[num] = node; 79 } else { 80 throw new InternalException(ErrorMessages.ERR_PARSER_BUG); 81 } 82 } 83 84 public int convertBackslashValue(final int c) { | 45 46 47 public ScanEnvironment(final Regex regex, final Syntax syntax) { 48 this.reg = regex; 49 option = regex.options; 50 caseFoldFlag = regex.caseFoldFlag; 51 this.syntax = syntax; 52 } 53 54 public void clear() { 55 captureHistory = bsClear(); 56 btMemStart = bsClear(); 57 btMemEnd = bsClear(); 58 backrefedMem = bsClear(); 59 60 numMem = 0; 61 memNodes = null; 62 } 63 64 public int addMemEntry() { 65 if (numMem >= Config.MAX_CAPTURE_GROUP_NUM) { 66 throw new InternalException(ErrorMessages.ERR_TOO_MANY_CAPTURE_GROUPS); 67 } 68 if (numMem++ == 0) { 69 memNodes = new Node[SCANENV_MEMNODES_SIZE]; 70 } else if (numMem >= memNodes.length) { 71 final Node[]tmp = new Node[memNodes.length << 1]; 72 System.arraycopy(memNodes, 0, tmp, 0, memNodes.length); 73 memNodes = tmp; 74 } 75 76 return numMem; 77 } 78 79 public void setMemNode(final int num, final Node node) { 80 if (numMem >= num) { 81 memNodes[num] = node; 82 } else { 83 throw new InternalException(ErrorMessages.ERR_PARSER_BUG); 84 } 85 } 86 87 public int convertBackslashValue(final int c) { |