public static FillerRequest createRequest(final SourceLinesProvider linesProvider, final InputFile file, final Charset encoding)
throws IOException, FileNotFoundException {
final CharStream mainStream = CharStreams.fromPath(file.path(), encoding);
final CharStream charStream = new CaseChangingCharStream(mainStream, true);
final TSqlLexer lexer = new TSqlLexer(charStream);
lexer.removeErrorListeners();
final CommonTokenStream stream = new CommonTokenStream(lexer);
stream.fill();
final TSqlParser parser = new TSqlParser(stream);
parser.removeErrorListeners();
final ParseTree root = parser.tsql_file();
final FillerRequest antrlFile = new FillerRequest(file, stream, root,
linesProvider.getLines(new FileInputStream(file.file()), encoding));
return antrlFile;
}
java类org.antlr.v4.runtime.tree.ParseTree的实例源码
PluginHelper.java 文件源码
项目:sonar-tsql-plugin
阅读 22
收藏 0
点赞 0
评论 0
ExpressionParser.java 文件源码
项目:Squid
阅读 34
收藏 0
点赞 0
评论 0
private void printTree(ExpressionsForSquid2Parser parser, ParseTree tree, List<String> parsed) {
if (tree.getChildCount() < 1) {
parsed.add(tree.toStringTree(parser));
} else {
for (int i = 0; i < tree.getChildCount(); i++) {
printTree(parser, tree.getChild(i), parsed);
}
}
}
AntlrParser.java 文件源码
项目:rapidminer
阅读 25
收藏 0
点赞 0
评论 0
/**
* Parses the expression using antlr, aborts the parsing on the first error.
*
* @param expression
* an expression, not {@code null}
* @return a {@link ParseTree} for further processing
* @throws ExpressionException
*/
ParseTree parseExpression(String expression) throws ExpressionException {
if (expression == null) {
throw new IllegalArgumentException("expression must not be null");
}
ANTLRInputStream in = new ANTLRInputStream(expression);
FunctionExpressionLexer lexer = new CapitulatingFunctionExpressionLexer(in);
CommonTokenStream tokens = new CommonTokenStream(lexer);
FunctionExpressionParser parser = new FunctionExpressionParser(tokens);
parser.removeErrorListeners();
lexer.removeErrorListeners();
ExpressionErrorListener listener = new ExpressionErrorListener();
parser.addErrorListener(listener);
lexer.addErrorListener(listener);
parser.setErrorHandler(new CapitulatingErrorStrategy());
try {
ParseTree tree = parser.operationExp();
if (listener.containsError()) {
throw new ExpressionException(listener.getErrorMessage(), listener.getErrorLine());
} else {
return tree;
}
} catch (CapitulatingRuntimeException e) {
if (listener.containsError()) {
throw new ExpressionException(listener.getErrorMessage(), listener.getErrorLine());
} else {
// cannot happen since the parser and lexer always register the error before trying
// to recover
throw new ExpressionException("Unknown error");
}
}
}
AntlrParser.java 文件源码
项目:rapidminer
阅读 24
收藏 0
点赞 0
评论 0
@Override
public void checkSyntax(String expression) throws ExpressionException {
ParseTree tree = parseExpression(expression);
ParseTreeWalker walker = new ParseTreeWalker();
FunctionListener listener = new FunctionListener(lookup);
try {
walker.walk(listener, tree);
} catch (ExpressionParsingException e) {
throw new ExpressionException(e);
}
}
BooleanExpEditorVariableErrorFinder.java 文件源码
项目:BEAST
阅读 16
收藏 0
点赞 0
评论 0
@Override
public ArrayList<CodeError> getErrors() {
ParseTree tree = antlrHandler.getParseTree();
ParseTreeWalker walker = new ParseTreeWalker();
try {
walker.walk(lis, tree);
} catch (Exception e) {
e.printStackTrace();
return new ArrayList<CodeError>();
}
return lis.getErrors();
}
CAntlrHandler.java 文件源码
项目:BEAST
阅读 21
收藏 0
点赞 0
评论 0
/**
* gives the parse tree
* @return the parse tree
*/
public ParseTree getCParseTree() {
try {
String code = pane.getStyledDocument().getText(0, pane.getStyledDocument().getLength());
lexer.setInputStream(new ANTLRInputStream(code));
CommonTokenStream commonTokenStream = new CommonTokenStream(lexer);
cParser.setTokenStream(commonTokenStream);
return cParser.compilationUnit();
} catch (BadLocationException ex) {
Logger.getLogger(CAntlrHandler.class.getName()).log(Level.SEVERE, null, ex);
}
return null;
}
ANTLRTest.java 文件源码
项目:BEAST
阅读 15
收藏 0
点赞 0
评论 0
static void showGuiTreeView(final String code) {
final org.antlr.v4.runtime.CharStream stream = new ANTLRInputStream(code);
final FormalPropertyDescriptionLexer lexer = new FormalPropertyDescriptionLexer(stream);
final CommonTokenStream tokens = new CommonTokenStream(lexer);
final FormalPropertyDescriptionParser parser = new FormalPropertyDescriptionParser(tokens);
final ParseTree tree = parser.booleanExpList();
final List<String> ruleNames = Arrays.asList(FormalPropertyDescriptionParser.ruleNames);
final TreeViewer view = new TreeViewer(ruleNames, tree);
view.open();
}
ANTLRTest.java 文件源码
项目:BEAST
阅读 15
收藏 0
点赞 0
评论 0
static void showGuiTreeView(final String code) {
final org.antlr.v4.runtime.CharStream stream = new ANTLRInputStream(code);
final CLexer lexer = new CLexer(stream);
final CommonTokenStream tokens = new CommonTokenStream(lexer);
final CParser parser = new CParser(tokens);
final ParseTree tree = parser.declaration();
final List<String> ruleNames = Arrays.asList(CParser.ruleNames);
final TreeViewer view = new TreeViewer(ruleNames, tree);
view.open();
}
CypherCstToAstVisitor.java 文件源码
项目:memory-graph
阅读 23
收藏 0
点赞 0
评论 0
private <T extends ParseTree> CypherBinaryExpression toBinaryExpressions(List<ParseTree> children, Function<T, CypherAstBase> itemTransform) {
CypherAstBase left = null;
CypherBinaryExpression.Op op = null;
for (int i = 0; i < children.size(); i++) {
ParseTree child = children.get(i);
if (child instanceof TerminalNode) {
CypherBinaryExpression.Op newOp = CypherBinaryExpression.Op.parseOrNull(child.getText());
if (newOp != null) {
if (op == null) {
op = newOp;
} else {
throw new MemgraphException("unexpected op, found too many ops in a row");
}
}
} else {
//noinspection unchecked
CypherAstBase childObj = itemTransform.apply((T) child);
if (left == null) {
left = childObj;
} else {
if (op == null) {
throw new MemgraphException("unexpected binary expression. expected an op between expressions");
}
left = new CypherBinaryExpression(left, op, childObj);
}
op = null;
}
}
return (CypherBinaryExpression) left;
}
CypherCstToAstVisitor.java 文件源码
项目:memory-graph
阅读 26
收藏 0
点赞 0
评论 0
@Override
public CypherAstBase visitExpression4(CypherParser.Expression4Context ctx) {
int neg = 0;
for (ParseTree child : ctx.children) {
if (child instanceof TerminalNode && child.getText().equals("-")) {
neg++;
}
}
CypherAstBase expr = visitExpression3(ctx.expression3());
if (neg % 2 == 1) {
return new CypherNegateExpression(expr);
} else {
return expr;
}
}