use of org.antlr.runtime.TokenRewriteStream in project hive by apache.
the class ParseDriver method parseTriggerActionExpression.
public ASTNode parseTriggerActionExpression(String command) throws ParseException {
GenericHiveLexer lexer = GenericHiveLexer.of(command, null);
TokenRewriteStream tokens = new TokenRewriteStream(lexer);
HiveParser parser = new HiveParser(tokens);
parser.setTreeAdaptor(adaptor);
ParserRuleReturnScope r;
try {
r = parser.triggerActionExpressionStandalone();
} catch (RecognitionException e) {
throw new ParseException(parser.errors);
}
if (lexer.getErrors().size() != 0) {
throw new ParseException(lexer.getErrors());
} else if (parser.errors.size() != 0) {
throw new ParseException(parser.errors);
}
return (ASTNode) r.getTree();
}
use of org.antlr.runtime.TokenRewriteStream in project flink by apache.
the class HiveASTParseDriver method parse.
/**
* Parses a command, optionally assigning the parser's token stream to the given context.
*
* @param command command to parse
* @param ctx context with which to associate this parser's token stream, or null if either no
* context is available or the context already has an existing stream
* @return parsed AST
*/
public HiveParserASTNode parse(String command, HiveParserContext ctx, String viewFullyQualifiedName) throws HiveASTParseException {
if (LOG.isDebugEnabled()) {
LOG.debug("Parsing command: " + command);
}
HiveLexerX lexer = new HiveLexerX(new ANTLRNoCaseStringStream(command));
TokenRewriteStream tokens = new TokenRewriteStream(lexer);
if (ctx != null) {
if (viewFullyQualifiedName == null) {
// Top level query
ctx.setTokenRewriteStream(tokens);
} else {
// It is a view
ctx.addViewTokenRewriteStream(viewFullyQualifiedName, tokens);
}
lexer.setHiveConf(ctx.getConf());
}
HiveASTParser parser = new HiveASTParser(tokens);
if (ctx != null) {
parser.setHiveConf(ctx.getConf());
}
parser.setTreeAdaptor(ADAPTOR);
HiveASTParser.statement_return r = null;
try {
r = parser.statement();
} catch (RecognitionException e) {
throw new HiveASTParseException(parser.errors);
}
if (lexer.getErrors().size() == 0 && parser.errors.size() == 0) {
LOG.debug("Parse Completed");
} else if (lexer.getErrors().size() != 0) {
throw new HiveASTParseException(lexer.getErrors());
} else {
throw new HiveASTParseException(parser.errors);
}
HiveParserASTNode tree = r.getTree();
tree.setUnknownTokenBoundaries();
return tree;
}
use of org.antlr.runtime.TokenRewriteStream in project flink by apache.
the class HiveASTParseDriver method parseHint.
/*
* Parse a string as a query hint.
*/
public HiveParserASTNode parseHint(String command) throws HiveASTParseException {
LOG.info("Parsing hint: " + command);
HiveLexerX lexer = new HiveLexerX(new ANTLRNoCaseStringStream(command));
TokenRewriteStream tokens = new TokenRewriteStream(lexer);
HiveASTHintParser parser = new HiveASTHintParser(tokens);
parser.setTreeAdaptor(ADAPTOR);
HiveASTHintParser.hint_return r = null;
try {
r = parser.hint();
} catch (RecognitionException e) {
throw new HiveASTParseException(parser.errors);
}
if (lexer.getErrors().size() == 0 && parser.errors.size() == 0) {
LOG.info("Parse Completed");
} else if (lexer.getErrors().size() != 0) {
throw new HiveASTParseException(lexer.getErrors());
} else {
throw new HiveASTParseException(parser.errors);
}
return r.getTree();
}
use of org.antlr.runtime.TokenRewriteStream in project ceylon-compiler by ceylon.
the class CeylonVersionTool method updateModuleVersion.
private boolean updateModuleVersion(Module module, Map<String, String> updatedModuleVersions) throws IOException, RecognitionException {
String moduleDescriptorPath = module.getUnit().getFullPath();
CeylonLexer lexer = new CeylonLexer(new ANTLRFileStream(moduleDescriptorPath, encoding));
TokenRewriteStream tokenStream = new TokenRewriteStream(lexer);
CeylonParser parser = new CeylonParser(tokenStream);
Tree.CompilationUnit cu = parser.compilationUnit();
String v = this.confirm == Confirm.dependencies ? this.newVersion : confirm("update.module.version", module.getNameAsString(), module.getVersion(), this.newVersion);
if (v == null) {
return false;
} else if (!v.isEmpty()) {
// record the new version for this module
updatedModuleVersions.put(module.getNameAsString(), v);
updateModuleVersion(moduleDescriptorPath, tokenStream, cu, v);
}
return true;
}
Aggregations