/** * Tests ExpParser::parse */ public function testParse() { $this->dataContext['no_prefix_id']->Ee = 1; $actualResult = ExpParser::parse($this->tokenStream, $this->dataContext); $this->assertEquals(new Token(ExpType::$STRING, 'no_prefix_id.Ee > 0'), $actualResult); $this->dataContext['no_prefix_id']->Ee = -1; $actualResult = ExpParser::parse($this->tokenStream, $this->dataContext); $this->assertEquals(new Token(ExpType::$STRING, 'no_prefix_id.Ee <= 0'), $actualResult); }
/** * Evaluates the given $expression using the $dataContext as variable source. * * Internally the ExpressionParser uses a infix to postfix conversion to easily * be able to evaluate mathematical expressions * * @param string $expression * @param array $dataContext * @return string evaluated result or an exception of failure */ public static function evaluate($expression, $dataContext) { $outputTokens = ExpLexer::process($expression); $result = ExpParser::parse($outputTokens, $dataContext); return $result->value; }