function evaluate($input) { $icontext = new InterpreterContext(); $prefab = new VariableExpression('input', $input); $prefab->interpret($icontext); $this->interpreter->interpret($icontext); $result = $icontext->lookup($this->interpreter); return $result; }
function evaluate($input) { $context = new Context(); $prefab = new VariableExpression('input', $input); // add the input variable to Context $prefab->interpret($context); $this->interpreter->interpret($context); $result = $context->lookup($this->interpreter); return $result; }
<?php $context = new InterpreterContext(); $myvar = new VariableExpression("input", "four"); $myvar->interpret($context); echo $context->lookup($myvar) . "<br/>"; $new_var = new VariableExpression("input"); $new_var->interpret($context); echo $context->lookup($new_var) . "<br/>"; $myvar->setValue("five"); $myvar->interpret($context); echo $context->lookup($myvar) . "<br/>"; echo $context->lookup($new_var) . "<br/>"; $literal = new LiteralExpression("Four"); $literal->interpret($context); echo $context->lookup($literal) . "<br/>";
function getKey() { return $this->name; } } //$context = new InterpreterContext(); //$literal = new LiteralExpression('Четыре'); //$literal->interpret($context); // //echo $context->lookup($literal); $context = new InterpreterContext(); $myVar = new VariableExpression('input', 'Четыре'); $myVar->interpret($context); print $context->lookup($myVar) . '\\n'; $newVar = new VariableExpression('input'); $newVar->interpret($context); print $context->lookup($newVar) . '\\n'; $myVar->setValue('Пять'); $myVar->interpret($context); print $context->lookup($myVar) . '\\n'; print $context->lookup($newVar) . '\\n'; $context = new InterpreterContext(); $input = new VariableExpression('input'); $statement = new BooleanOrExpression(new EqualsExpression($input, new LiteralExpression('Четыре')), new EqualsExpression($input, new LiteralExpression('4'))); foreach (['Четыре', '4', '52'] as $val) { $input->setValue($val); print $val . '\\n'; $statement->interpret($context); if ($context->lookup($statement)) { print 'соотв.'; } else {
} class OrExpression extends OperatorExpression { protected function doInterpret(InterpreterContext $context, $resultL, $resultR) { $context->replace($this, $resultL || $resultR); } } class AndExpression extends OperatorExpression { protected function doInterpret(InterpreterContext $context, $resultL, $resultR) { $context->replace($this, $resultL && $resultR); } } $context = new InterpreterContext(); $literal = new LiteralExpression('quatro'); $literal->interpret($context); print $context->lookup($literal); $var = new VariableExpression('input', 'cinco'); $var->interpret($context); echo "\n"; print $context->lookup($var); $var = new VariableExpression('input'); $var->interpret($context); echo "\n"; print $context->lookup($var); $var->setValue('oito'); $var->interpret($context); echo "\n"; print $context->lookup($var);