MCPcopy Create free account
hub / github.com/google/re2j / compileImpl

Method compileImpl

java/com/google/re2j/RE2.java:184–203  ·  view source on GitHub ↗
(String expr, int mode, boolean longest)

Source from the content-addressed store, hash-verified

182
183 // Exposed to ExecTests.
184 static RE2 compileImpl(String expr, int mode, boolean longest) throws PatternSyntaxException {
185 Regexp re = Parser.parse(expr, mode);
186 int maxCap = re.maxCap(); // (may shrink during simplify)
187 re = Simplify.simplify(re);
188 Prog prog = Compiler.compileRegexp(re);
189 RE2 re2 = new RE2(expr, prog, maxCap, longest);
190 StringBuilder prefixBuilder = new StringBuilder();
191 re2.prefixComplete = prog.prefix(prefixBuilder);
192 re2.prefix = prefixBuilder.toString();
193 try {
194 re2.prefixUTF8 = re2.prefix.getBytes("UTF-8");
195 } catch (UnsupportedEncodingException e) {
196 throw new IllegalStateException("can't happen");
197 }
198 if (!re2.prefix.isEmpty()) {
199 re2.prefixRune = re2.prefix.codePointAt(0);
200 }
201 re2.namedGroups = re.namedGroups;
202 return re2;
203 }
204
205 /**
206 * Returns the number of parenthesized subexpressions in this regular expression.

Callers 4

testFowlerMethod · 0.95
compileMethod · 0.95
compileMethod · 0.95
compilePOSIXMethod · 0.95

Calls 7

parseMethod · 0.95
maxCapMethod · 0.95
simplifyMethod · 0.95
compileRegexpMethod · 0.95
prefixMethod · 0.95
isEmptyMethod · 0.80
toStringMethod · 0.45

Tested by 1

testFowlerMethod · 0.76