Java代码 


  1. 例一:使用符号  

  2. //evaluates to true  
  3. boolean trueValue=parser.parseExpression("2==2").getValue(Boolean.class);  
  4. //evaluates to false  
  5. boolean falseValue=parser.parseExpression("2<-5.0").getValue(Boolean.class);  

  6. //evaluates to true  
  7. boolean trueValue=parser.parseExpression("'black'<'block'").getValue(Boolean.class); //字符串的比较  

  8. 例二:判断是否是类中的一个实例  

  9. //evaluates to false  
  10. boolean falseValue=parser.parseExpression("'xyz'  instanceofT(int)").getValue(Boolean.class);  

  11. 例三:和正则表达式结合  

  12. //evaluates to true  
  13. boolean trueValue = parser.parseExpression("'5.00'matches'^-?\\d+\\.\\d{2})?$'").getValue(Boolean.class);  

  14. //evaluates to false  
  15. boolean falseValue = parser.parseExpression("'5.0067'matches'^-?\\d+(\\.\\d{2})?$'").getValue(Boolean.class);  

  16. 例四:逻辑运算符  

  17. //--AND--  
  18. //evaluates to false  
  19. boolean falseValue=parser.parseExpression("true and false").getValue(Boolean.class);//取后者  
  20. //evaluates to true  
  21. String expression= "isMember('NikolaTesla')  and  isMember('MihajloPupin')";  
  22. boolean trueValue=parser.parseExpression(expression).getValue(societyContext,Boolean.class);  
  23. //--OR--  
  24. //evaluates to  true  
  25. boolean trueValue=parser.parseExpression("true  or   false").getValue(Boolean.class);  
  26. //evaluates  to  true  
  27. String  expression= "isMember('Nikola Tesla')  or  isMember('Albert Einstien')";  
  28. boolean trueValue=parser.parseExpression(expression).getValue(societyContext,Boolean.class);  
  29. //--NOT--  
  30. //evaluates to false  
  31. boolean falseValue=parser.parseExpression(" !true").getValue(Boolean.class);  
  32. //--AND  and  NOT--  
  33. String expression= "isMember('NikolaTesla') and !isMember('MihajloPupin')";  
  34. boolean falseValue=parser.parseExpression(expression).getValue(societyContext,Boolean.class);  

  35. 例五:算术运算符  

  36. //Addition  
  37. int two=parser.parseExpression("1+1").getValue(Integer.class); //2  
  38. String testString=parser.parseExpression(" 'test'+'string' ").getValue(String.class); //'teststring'  
  39. //Subtraction  
  40. int four=parser.parseExpression("1-3").getValue(Integer.class); //4  
  41. double d=parser.parseExpression("1000.00-1e4").getValue(Double.class); //-9000  
  42. //Multiplication  
  43. int six=parser.parseExpression("-2*-3").getValue(Integer.class); //6  
  44. double twentyFour=parser.parseExpression("2.0*3e0*4").getValue(Double.class); //24.0  
  45. //Division  
  46. int minusTwo=parser.parseExpression("6/-3").getValue(Integer.class); //-2  
  47. double one=parser.parseExpression("8.0/4e0/2").getValue(Double.class); //1.0  
  48. //Modulus  
  49. int three=parser.parseExpression("7%4").getValue(Integer.class); //3  
  50. int one=parser.parseExpression("8/5%2").getValue(Integer.class); //1  
  51. //Operator precedence  
  52. int minusTwentyOne=parser.parseExpression("1+2-3*8").getValue(Integer.class); //-21