MCPcopy Create free account
hub / github.com/crate/crate / parse

Method parse

server/src/main/java/io/crate/types/TypeSignature.java:100–129  ·  view source on GitHub ↗

Creates a type signature out of the given signature string. A signature type string may contain parameters inside parenthesis: base_type_name(parameter [, parameter]) Custom parameterized type handling must also be supported by #createType(). Some examples: integer

(String signature)

Source from the content-addressed store, hash-verified

98 * <p>
99 */
100 public static TypeSignature parse(String signature) {
101 try {
102 var lexer = new TypeSignaturesLexer(CharStreams.fromString(signature));
103 var tokenStream = new CommonTokenStream(lexer);
104 var parser = new io.crate.signatures.antlr.TypeSignaturesParser(tokenStream);
105
106 lexer.removeErrorListeners();
107 lexer.addErrorListener(ERROR_LISTENER);
108
109 parser.removeErrorListeners();
110 parser.addErrorListener(ERROR_LISTENER);
111
112 ParserRuleContext tree;
113 try {
114 // first, try parsing with potentially faster SLL mode
115 parser.getInterpreter().setPredictionMode(PredictionMode.SLL);
116 tree = parser.type();
117 } catch (ParseCancellationException ex) {
118 // if we fail, parse with LL mode
119 tokenStream.seek(0); // rewind input stream
120 parser.reset();
121
122 parser.getInterpreter().setPredictionMode(PredictionMode.LL);
123 tree = parser.type();
124 }
125 return tree.accept(new TypeSignaturesASTVisitor());
126 } catch (StackOverflowError e) {
127 throw new TypeSignatureParsingException("stack overflow while parsing: " + e.getLocalizedMessage());
128 }
129 }
130
131 protected static TypeSignature of(int parseInt) {
132 return new IntegerLiteralTypeSignature(parseInt);

Calls 5

typeMethod · 0.65
resetMethod · 0.65
acceptMethod · 0.65
fromStringMethod · 0.45
seekMethod · 0.45