MCPcopy Create free account
hub / github.com/ReadyTalk/avian / writeCode

Method writeCode

classpath/java/util/regex/Compiler.java:138–175  ·  view source on GitHub ↗
(Output output)

Source from the content-addressed store, hash-verified

136 }
137
138 protected void writeCode(Output output) {
139 int start = output.offset;
140 int splitJmp = greedy ? SPLIT_JMP : SPLIT;
141 int split = greedy ? SPLIT : SPLIT_JMP;
142 for (int i = 1; i < minCount; ++ i) {
143 expr.writeCode(output);
144 }
145 if (maxCount == -1) {
146 if (minCount > 0) {
147 int jump = output.offset;
148 expr.writeCode(output);
149 output.add(splitJmp);
150 output.add(jump);
151 } else {
152 output.add(split);
153 int jump = output.markJump();
154 expr.writeCode(output);
155 output.add(splitJmp);
156 output.add(start + 2);
157 output.setJump(jump);
158 }
159 } else {
160 if (minCount > 0) {
161 expr.writeCode(output);
162 }
163 if (maxCount > minCount) {
164 int[] jumps = new int[maxCount - minCount];
165 for (int i = 0; i < jumps.length; ++ i) {
166 output.add(split);
167 jumps[i] = output.markJump();
168 expr.writeCode(output);
169 }
170 for (int jump : jumps) {
171 output.setJump(jump);
172 }
173 }
174 }
175 }
176
177 public String toString() {
178 String qualifier = greedy ? "" : "?";

Callers

nothing calls this directly

Calls 4

markJumpMethod · 0.80
setJumpMethod · 0.80
addMethod · 0.65
writeCodeMethod · 0.45

Tested by

no test coverage detected