java 实现逻辑表达式解析

这里的字符串分割使用的默认空格分隔,使用时需要特别注意模板格式。废话不多说,直接上代码
package com.lunua.parse;import com.alibaba.fastjson.JSONPath;
import com.google.common.collect.Lists;import java.util.ArrayList;
import java.util.EmptyStackException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Stack;public class Parser {enum Op{GT(">"),GE(">="),LT("<"),LE("<="),EQ("=="),AND("and"),OR("or"),CONTAINS("contains"),CONTAINS_NOT("containsnot");private String operator;Op(String operator) {this.operator = operator;}public String getOperator() {return operator;}public static Op getByOperator(String operator){if (operator == null || operator.length() == 0){return null;}for (Op op: Op.values()) {if (op.getOperator().equalsIgnoreCase(operator)){return op;}}return null;}}private static final List operator = Lists.newArrayList(Op.GT.getOperator(), Op.GE.getOperator(), Op.LT.getOperator(),Op.LE.getOperator(),Op.EQ.getOperator(),Op.AND.getOperator(),Op.OR.getOperator(),Op.CONTAINS.getOperator(),Op.CONTAINS_NOT.getOperator());private static Map operatorMap = null;static {operatorMap = new HashMap();operatorMap.put("(", 1);operatorMap.put(")", 1);operatorMap.put("and", 11);operatorMap.put("or", 12);operatorMap.put("==", 7);operatorMap.put("!=", 7);operatorMap.put(">", 6);operatorMap.put(">=", 6);operatorMap.put("<&


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部