parsii.tokenizer.ParseException Java Examples
The following examples show how to use
parsii.tokenizer.ParseException.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: ParserTest.java From parsii with MIT License | 6 votes |
@Test public void scopes() throws ParseException { Scope root = new Scope(); Variable a = root.getVariable("a").withValue(1); Scope subScope1 = new Scope().withParent(root); Scope subScope2 = new Scope().withParent(root); Variable b1 = subScope1.getVariable("b").withValue(2); Variable b2 = subScope2.getVariable("b").withValue(3); Variable c = root.getVariable("c").withValue(4); Variable c1 = subScope1.getVariable("c").withValue(5); assertEquals(c, c1); Variable d = root.getVariable("d").withValue(9); Variable d1 = subScope1.create("d").withValue(7); assertNotEquals(d, d1); Expression expr1 = Parser.parse("a + b + c + d", subScope1); Expression expr2 = Parser.parse("a + b + c + d", subScope2); assertEquals(15d, expr1.evaluate(), BinaryOperation.EPSILON); assertEquals(18d, expr2.evaluate(), BinaryOperation.EPSILON); a.setValue(10); b1.setValue(20); b2.setValue(30); c.setValue(40); c1.setValue(50); assertEquals(87d, expr1.evaluate(), BinaryOperation.EPSILON); assertEquals(99d, expr2.evaluate(), BinaryOperation.EPSILON); }
Example #2
Source File: ParserTest.java From parsii with MIT License | 6 votes |
@Test public void simple() throws ParseException { assertEquals(-109d, Parser.parse("1 - (10 - -100)").evaluate(), BinaryOperation.EPSILON); assertEquals(0.01d, Parser.parse("1 / 10 * 10 / 100").evaluate(), BinaryOperation.EPSILON); assertEquals(-89d, Parser.parse("1 + 10 - 100").evaluate(), BinaryOperation.EPSILON); assertEquals(91d, Parser.parse("1 - 10 - -100").evaluate(), BinaryOperation.EPSILON); assertEquals(91d, Parser.parse("1 - 10 + 100").evaluate(), BinaryOperation.EPSILON); assertEquals(-109d, Parser.parse("1 - (10 + 100)").evaluate(), BinaryOperation.EPSILON); assertEquals(-89d, Parser.parse("1 + (10 - 100)").evaluate(), BinaryOperation.EPSILON); assertEquals(100d, Parser.parse("1 / 1 * 100").evaluate(), BinaryOperation.EPSILON); assertEquals(0.01d, Parser.parse("1 / (1 * 100)").evaluate(), BinaryOperation.EPSILON); assertEquals(0.01d, Parser.parse("1 * 1 / 100").evaluate(), BinaryOperation.EPSILON); assertEquals(7d, Parser.parse("3+4").evaluate(), BinaryOperation.EPSILON); assertEquals(7d, Parser.parse("3 + 4").evaluate(), BinaryOperation.EPSILON); assertEquals(-1d, Parser.parse("3+ -4").evaluate(), BinaryOperation.EPSILON); assertEquals(-1d, Parser.parse("3+(-4)").evaluate(), BinaryOperation.EPSILON); }
Example #3
Source File: ParserTest.java From parsii with MIT License | 5 votes |
@Test public void signed() throws ParseException { assertEquals(-2.02, Parser.parse("-2.02").evaluate(), BinaryOperation.EPSILON); assertEquals(2.02, Parser.parse("+2.02").evaluate(), BinaryOperation.EPSILON); assertEquals(1.01, Parser.parse("+2.02 + -1.01").evaluate(), BinaryOperation.EPSILON); assertEquals(-4.03, Parser.parse("-2.02 - +2.01").evaluate(), BinaryOperation.EPSILON); assertEquals(3.03, Parser.parse("+2.02 + +1.01").evaluate(), BinaryOperation.EPSILON); }
Example #4
Source File: ParserTest.java From parsii with MIT License | 5 votes |
@Test public void removeVariableFromSubscope() throws ParseException { Scope s = new Scope(); Scope child = new Scope().withParent(s); s.create("X"); assertTrue(child.find("X") != null); assertTrue(child.remove("X") == null); assertTrue(child.find("X") != null); }
Example #5
Source File: ParserTest.java From parsii with MIT License | 5 votes |
@Test public void removeVariable() throws ParseException { Scope s = new Scope(); s.create("X"); assertTrue(s.find("X") != null); assertTrue(s.remove("X") != null); assertTrue(s.find("X") == null); }
Example #6
Source File: ParserTest.java From parsii with MIT License | 5 votes |
@Test public void errorOnUnknownVariable() throws ParseException { Scope s = new Scope(); try { s.create("a"); s.create("b"); Parser.parse("a*b+c", s); } catch (ParseException e) { assertEquals(1, e.getErrors().size()); } s.create("c"); Parser.parse("a*b+c", s); }
Example #7
Source File: ParserTest.java From parsii with MIT License | 5 votes |
@Test public void getVariables() throws ParseException { Scope s = new Scope(); Parser.parse("a*b+c+e+wer", s); assertTrue(s.getNames().contains("a")); assertTrue(s.getNames().contains("b")); assertTrue(s.getNames().contains("c")); assertTrue(s.getNames().contains("e")); assertTrue(s.getNames().contains("wer")); assertFalse(s.getNames().contains("x")); // pi and euler are always defined... assertEquals(7, s.getVariables().size()); }
Example #8
Source File: ParserTest.java From parsii with MIT License | 5 votes |
@Test public void quantifiers() throws ParseException { assertEquals(1000d, Parser.parse("1K").evaluate(), BinaryOperation.EPSILON); assertEquals(1000d, Parser.parse("1M * 1m").evaluate(), BinaryOperation.EPSILON); assertEquals(1d, Parser.parse("1n * 1G").evaluate(), BinaryOperation.EPSILON); assertEquals(1d, Parser.parse("(1M / 1k) * 1m").evaluate(), BinaryOperation.EPSILON); assertEquals(1d, Parser.parse("1u * 10 k * 1000 m * 0.1 k").evaluate(), BinaryOperation.EPSILON); }
Example #9
Source File: ParserTest.java From parsii with MIT License | 5 votes |
@Test public void relationalOperators() throws ParseException { // Test for Issue with >= and <= operators (#4) assertEquals(1d, Parser.parse("5 <= 5").evaluate(), BinaryOperation.EPSILON); assertEquals(1d, Parser.parse("5 >= 5").evaluate(), BinaryOperation.EPSILON); assertEquals(0d, Parser.parse("5 < 5").evaluate(), BinaryOperation.EPSILON); assertEquals(0d, Parser.parse("5 > 5").evaluate(), BinaryOperation.EPSILON); }
Example #10
Source File: ParserTest.java From parsii with MIT License | 5 votes |
@Test public void functions() throws ParseException { assertEquals(0d, Parser.parse("1 + sin(-pi) + cos(pi)").evaluate(), BinaryOperation.EPSILON); assertEquals(4.72038341576d, Parser.parse("tan(sqrt(euler ^ (pi * 3)))").evaluate(), BinaryOperation.EPSILON); assertEquals(3d, Parser.parse("| 3 - 6 |").evaluate(), BinaryOperation.EPSILON); assertEquals(3d, Parser.parse("if(3 > 2 && 2 < 3, 2+1, 1+1)").evaluate(), BinaryOperation.EPSILON); assertEquals(2d, Parser.parse("if(3 < 2 || 2 > 3, 2+1, 1+1)").evaluate(), BinaryOperation.EPSILON); assertEquals(2d, Parser.parse("min(3,2)").evaluate(), BinaryOperation.EPSILON); // Test a var arg method... Parser.registerFunction("avg", new Function() { @Override public int getNumberOfArguments() { return -1; } @Override public double eval(List<Expression> args) { double avg = 0; if (args.isEmpty()) { return avg; } for (Expression e : args) { avg += e.evaluate(); } return avg / args.size(); } @Override public boolean isNaturalFunction() { return true; } }); assertEquals(3.25d, Parser.parse("avg(3,2,1,7)").evaluate(), BinaryOperation.EPSILON); }
Example #11
Source File: ParserTest.java From parsii with MIT License | 5 votes |
@Test public void variables() throws ParseException { Scope scope = new Scope(); Variable a = scope.create("a"); Variable b = scope.create("b"); Expression expr = Parser.parse("3*a + 4 * b", scope); assertEquals(0d, expr.evaluate(), BinaryOperation.EPSILON); a.setValue(2); assertEquals(6d, expr.evaluate(), BinaryOperation.EPSILON); b.setValue(3); assertEquals(18d, expr.evaluate(), BinaryOperation.EPSILON); assertEquals(18d, expr.evaluate(), BinaryOperation.EPSILON); }
Example #12
Source File: ParserTest.java From parsii with MIT License | 5 votes |
@Test public void signedValueAfterOperand() throws ParseException { assertEquals(-1.2, Parser.parse("1+-2.2").evaluate(), BinaryOperation.EPSILON); assertEquals(3.2, Parser.parse("1++2.2").evaluate(), BinaryOperation.EPSILON); assertEquals(6 * -1.1, Parser.parse("6*-1.1").evaluate(), BinaryOperation.EPSILON); assertEquals(6 * 1.1, Parser.parse("6*+1.1").evaluate(), BinaryOperation.EPSILON); }
Example #13
Source File: ParserTest.java From parsii with MIT License | 5 votes |
@Test public void signedParentheses() throws ParseException { assertEquals(0.2, Parser.parse("-(-0.2)").evaluate(), BinaryOperation.EPSILON); assertEquals(1.2, Parser.parse("1-(-0.2)").evaluate(), BinaryOperation.EPSILON); assertEquals(0.8, Parser.parse("1+(-0.2)").evaluate(), BinaryOperation.EPSILON); assertEquals(2.2, Parser.parse("+(2.2)").evaluate(), BinaryOperation.EPSILON); }
Example #14
Source File: ParserTest.java From parsii with MIT License | 5 votes |
@Test public void startingWithDecimalPoint() throws ParseException { assertEquals(.2, Parser.parse(".2").evaluate(), BinaryOperation.EPSILON); assertEquals(.2, Parser.parse("+.2").evaluate(), BinaryOperation.EPSILON); assertEquals(.4, Parser.parse(".2+.2").evaluate(), BinaryOperation.EPSILON); assertEquals(.4, Parser.parse(".6+-.2").evaluate(), BinaryOperation.EPSILON); }
Example #15
Source File: ParserTest.java From parsii with MIT License | 5 votes |
@Test public void precedence() throws ParseException { // term vs. product assertEquals(19d, Parser.parse("3+4*4").evaluate(), BinaryOperation.EPSILON); // product vs. power assertEquals(20.25d, Parser.parse("3^4/4").evaluate(), BinaryOperation.EPSILON); // relation vs. product assertEquals(1d, Parser.parse("3 < 4*4").evaluate(), BinaryOperation.EPSILON); assertEquals(0d, Parser.parse("3 > 4*4").evaluate(), BinaryOperation.EPSILON); // brackets assertEquals(28d, Parser.parse("(3 + 4) * 4").evaluate(), BinaryOperation.EPSILON); assertEquals(304d, Parser.parse("3e2 + 4").evaluate(), BinaryOperation.EPSILON); assertEquals(1200d, Parser.parse("3e2 * 4").evaluate(), BinaryOperation.EPSILON); }
Example #16
Source File: ParserTest.java From parsii with MIT License | 5 votes |
@Test public void number() throws ParseException { assertEquals(4003.333333d, Parser.parse("3.333_333+4_000").evaluate(), BinaryOperation.EPSILON); assertEquals(0.03, Parser.parse("3e-2").evaluate(), BinaryOperation.EPSILON); assertEquals(300d, Parser.parse("3e2").evaluate(), BinaryOperation.EPSILON); assertEquals(300d, Parser.parse("3e+2").evaluate(), BinaryOperation.EPSILON); assertEquals(320d, Parser.parse("3.2e2").evaluate(), BinaryOperation.EPSILON); assertEquals(0.032, Parser.parse("3.2e-2").evaluate(), BinaryOperation.EPSILON); assertEquals(0.03, Parser.parse("3E-2").evaluate(), BinaryOperation.EPSILON); assertEquals(300d, Parser.parse("3E2").evaluate(), BinaryOperation.EPSILON); assertEquals(300d, Parser.parse("3E+2").evaluate(), BinaryOperation.EPSILON); assertEquals(320d, Parser.parse("3.2E2").evaluate(), BinaryOperation.EPSILON); assertEquals(0.032, Parser.parse("3.2E-2").evaluate(), BinaryOperation.EPSILON); }
Example #17
Source File: Parser.java From parsii with MIT License | 5 votes |
/** * Parses the expression in <tt>input</tt> * * @return the parsed expression * @throws ParseException if the expression contains one or more errors */ protected Expression parse() throws ParseException { Expression result = expression().simplify(); if (tokenizer.current().isNotEnd()) { Token token = tokenizer.consume(); errors.add(ParseError.error(token, String.format("Unexpected token: '%s'. Expected an expression.", token.getSource()))); } if (!errors.isEmpty()) { throw ParseException.create(errors); } return result; }
Example #18
Source File: MetricExpression.java From incubator-pinot with Apache License 2.0 | 5 votes |
public List<MetricFunction> computeMetricFunctions() { try { Scope scope = Scope.create(); Set<String> metricTokens = new TreeSet<>(); // can be either metric names or ids ! :-/ // expression parser errors out on variables starting with _ // we're replacing the __COUNT default metric, with an escaped string // after evaluating, we replace the escaped string back with the original String modifiedExpressions = expression.replace(COUNT_METRIC, COUNT_METRIC_ESCAPED); Parser.parse(modifiedExpressions, scope); metricTokens = scope.getLocalNames(); ArrayList<MetricFunction> metricFunctions = new ArrayList<>(); for (String metricToken : metricTokens) { Long metricId = null; MetricConfigDTO metricConfig = null; String metricDataset = dataset; DatasetConfigDTO datasetConfig = ThirdEyeUtils.getDatasetConfigFromName(metricDataset); if (metricToken.equals(COUNT_METRIC_ESCAPED)) { metricToken = COUNT_METRIC; } else { metricId = Long.valueOf(metricToken.replace(MetricConfigBean.DERIVED_METRIC_ID_PREFIX, "")); metricConfig = ThirdEyeUtils.getMetricConfigFromId(metricId); if (metricConfig != null) { metricDataset = metricConfig.getDataset(); } } metricFunctions.add( new MetricFunction(aggFunction, metricToken, metricId, metricDataset, metricConfig, datasetConfig)); } return metricFunctions; } catch (ParseException e) { throw new RuntimeException("Exception parsing expressionString:" + expression, e); } }
Example #19
Source File: ExpressionParser.java From eagle with Apache License 2.0 | 5 votes |
/** * Thread safe * * @param expr * @return * @throws ParsiiInvalidException * @throws ParseException */ public static ExpressionParser parse(String expr) throws ParsiiInvalidException, ParseException { if (expr == null) { throw new IllegalStateException("Expression to parse is null"); } synchronized (_exprParserCache) { ExpressionParser parser = _exprParserCache.get(expr); if (parser == null) { parser = new ExpressionParser(expr); _exprParserCache.put(expr, parser); } return parser; } }
Example #20
Source File: ExpressionParser.java From Eagle with Apache License 2.0 | 5 votes |
/** * Thread safe * * @param expr * @return * @throws ParsiiInvalidException * @throws ParseException */ public static ExpressionParser parse(String expr) throws ParsiiInvalidException, ParseException { if(expr == null) throw new IllegalStateException("Expression to parse is null"); synchronized (_exprParserCache) { ExpressionParser parser = _exprParserCache.get(expr); if (parser == null) { parser = new ExpressionParser(expr); _exprParserCache.put(expr, parser); } return parser; } }
Example #21
Source File: ParserTest.java From parsii with MIT License | 4 votes |
@Test public void blockComment() throws ParseException { assertEquals(29, Parser.parse("27+ /*xxx*/ 2").evaluate(), BinaryOperation.EPSILON); assertEquals(29, Parser.parse("27+/*xxx*/ 2").evaluate(), BinaryOperation.EPSILON); assertEquals(29, Parser.parse("27/*xxx*/+2").evaluate(), BinaryOperation.EPSILON); }
Example #22
Source File: ParserTest.java From parsii with MIT License | 4 votes |
@Test public void trailingDecimalPoint() throws ParseException { assertEquals(2., Parser.parse("2.").evaluate(), BinaryOperation.EPSILON); }
Example #23
Source File: ExpressionParser.java From eagle with Apache License 2.0 | 4 votes |
@SuppressWarnings("unused") public ExpressionParser(String exprStr, Map<String, Double> context) throws ParsiiInvalidException, ParseException, ParsiiUnknowVariableException { this(exprStr); setVariables(context); }
Example #24
Source File: ExpressionParser.java From eagle with Apache License 2.0 | 4 votes |
/** * @param exprStr expression string in format like: <code>(max(a, b)* min(a, b)) / abs(a-b+c-d)</code> * @throws ParseException * @throws ParsiiInvalidException */ public ExpressionParser(String exprStr) throws ParseException, ParsiiInvalidException { this.exprStr = exprStr; scope = Scope.create(); expression = Parser.parse(this.exprStr, scope); }
Example #25
Source File: ExpressionParser.java From Eagle with Apache License 2.0 | 4 votes |
@SuppressWarnings("unused") public ExpressionParser(String exprStr, Map<String, Double> context) throws ParsiiInvalidException, ParseException, ParsiiUnknowVariableException { this(exprStr); setVariables(context); }
Example #26
Source File: ExpressionParser.java From Eagle with Apache License 2.0 | 2 votes |
/** * @param exprStr expression string in format like: <code>(max(a, b)* min(a, b)) / abs(a-b+c-d)</code> * * @throws ParseException * @throws ParsiiInvalidException */ public ExpressionParser(String exprStr) throws ParseException, ParsiiInvalidException{ this.exprStr = exprStr; scope = Scope.create(); expression = Parser.parse(this.exprStr,scope); }
Example #27
Source File: Parser.java From parsii with MIT License | 2 votes |
/** * Parses the given input into an expression. * <p> * Referenced variables will be resolved using the given Scope * * @param input the expression to be parsed * @param scope the scope used to resolve variables * @return the resulting AST as expression * @throws ParseException if the expression contains one or more errors */ public static Expression parse(Reader input, Scope scope) throws ParseException { return new Parser(input, scope).parse(); }
Example #28
Source File: Parser.java From parsii with MIT License | 2 votes |
/** * Parses the given input into an expression. * <p> * Referenced variables will be resolved using the given Scope * * @param input the expression to be parsed * @param scope the scope used to resolve variables * @return the resulting AST as expression * @throws ParseException if the expression contains one or more errors */ public static Expression parse(String input, Scope scope) throws ParseException { return new Parser(new StringReader(input), scope).parse(); }
Example #29
Source File: Parser.java From parsii with MIT License | 2 votes |
/** * Parses the given input into an expression. * * @param input the expression to be parsed * @return the resulting AST as expression * @throws ParseException if the expression contains one or more errors */ public static Expression parse(Reader input) throws ParseException { return new Parser(input, new Scope()).parse(); }
Example #30
Source File: Parser.java From parsii with MIT License | 2 votes |
/** * Parses the given input into an expression. * * @param input the expression to be parsed * @return the resulting AST as expression * @throws ParseException if the expression contains one or more errors */ public static Expression parse(String input) throws ParseException { return new Parser(new StringReader(input), new Scope()).parse(); }