/**
* Parses while matching an AQL expression.
*
* @param expression
* the expression to parse
* @return the corresponding {@link AstResult}
*/
private AstResult parseWhileAqlExpression(String expression) {
final IQueryBuilderEngine.AstResult result;
if (expression != null && expression.length() > 0) {
AstBuilderListener astBuilder = AQL56Compatibility.createAstBuilderListener(queryEnvironment);
CharStream input = new UnbufferedCharStream(new StringReader(expression), expression.length());
QueryLexer lexer = new QueryLexer(input);
lexer.setTokenFactory(new CommonTokenFactory(true));
lexer.removeErrorListeners();
lexer.addErrorListener(astBuilder.getErrorListener());
TokenStream tokens = new UnbufferedTokenStream<CommonToken>(lexer);
QueryParser parser = new QueryParser(tokens);
parser.addParseListener(astBuilder);
parser.removeErrorListeners();
parser.addErrorListener(astBuilder.getErrorListener());
// parser.setTrace(true);
parser.expression();
result = astBuilder.getAstResult();
} else {
ErrorExpression errorExpression = (ErrorExpression) EcoreUtil
.create(AstPackage.eINSTANCE.getErrorExpression());
List<org.eclipse.acceleo.query.ast.Error> errors = new ArrayList<org.eclipse.acceleo.query.ast.Error>(1);
errors.add(errorExpression);
final Map<Object, Integer> positions = new HashMap<Object, Integer>();
if (expression != null) {
positions.put(errorExpression, Integer.valueOf(0));
}
final BasicDiagnostic diagnostic = new BasicDiagnostic();
diagnostic.add(new BasicDiagnostic(Diagnostic.ERROR, AstBuilderListener.PLUGIN_ID, 0,
"null or empty string.", new Object[] {errorExpression }));
result = new AstResult(errorExpression, positions, positions, errors, diagnostic);
}
return result;
}
M2DocParser.java 文件源码
java
阅读 20
收藏 0
点赞 0
评论 0
项目:M2Doc
作者:
评论列表
文章目录