SquigglyParser.java 文件源码

java
阅读 22 收藏 0 点赞 0 评论 0

项目:squiggly-filter-jackson 作者:
/**
 * Parse a filter expression.
 *
 * @param filter the filter expression
 * @return compiled nodes
 */
public List<SquigglyNode> parse(String filter) {
    filter = StringUtils.trim(filter);

    if (StringUtils.isEmpty(filter)) {
        return Collections.emptyList();
    }

    // get it from the cache if we can
    List<SquigglyNode> cachedNodes = CACHE.getIfPresent(filter);

    if (cachedNodes != null) {
        return cachedNodes;
    }


    SquigglyExpressionLexer lexer = ThrowingErrorListener.overwrite(new SquigglyExpressionLexer(new ANTLRInputStream(filter)));
    SquigglyExpressionParser parser = ThrowingErrorListener.overwrite(new SquigglyExpressionParser(new CommonTokenStream(lexer)));

    Visiter visiter = new Visiter();
    List<SquigglyNode> nodes = visiter.visit(parser.parse());

    CACHE.put(filter, nodes);
    return nodes;
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号