3require_once 
"Modules/TestQuestionPool/classes/questions/LogicalAnswerCompare/Exception/ilAssLacMissingBracket.php";
 
    4require_once 
"Modules/TestQuestionPool/classes/questions/LogicalAnswerCompare/Exception/ilAssLacConditionParserException.php";
 
   59        include_once 
'Modules/TestQuestionPool/classes/questions/LogicalAnswerCompare/Factory/ilAssLacExpressionManufacturer.php';
 
   60        include_once 
'Modules/TestQuestionPool/classes/questions/LogicalAnswerCompare/Factory/ilAssLacOperationManufacturer.php';
 
   61        include_once 
"Modules/TestQuestionPool/classes/questions/LogicalAnswerCompare/ilAssLacCompositeBuilder.php";
 
   81        return $compositeBuilder->create($nodes);
 
   94        $this->expressions = $manufacturer->match($this->condition);
 
  107        $this->operators = $manufacturer->match($this->condition);
 
  120        $this->condition = preg_replace($manufacturer->getPattern(), 
'n', $this->condition);
 
  122        $this->condition = preg_replace($manufacturer->getPattern(), 
'o', $this->condition);
 
  123        $this->condition = preg_replace(
"/no/", 
"n o", $this->condition);
 
  124        $this->condition = preg_replace(
"/on/", 
"o n", $this->condition);
 
  126        for (
$i = 0; 
$i < strlen($this->condition); 
$i++) {
 
  135        $num_brackets_open = substr_count($this->condition, 
"(");
 
  136        $num_brackets_close = substr_count($this->condition, 
")");
 
  138        if ($num_brackets_open > $num_brackets_close) {
 
  141        if ($num_brackets_open < $num_brackets_close) {
 
  170        $expected = array(
"n", 
"(", 
"!");
 
  174        while ($this->index < strlen($this->condition)) {
 
  176            if (trim($this->condition[$this->index]) != 
"" && in_array($this->condition[$this->index], $expected)) {
 
  177                if ($this->condition[$this->index] == 
')') {
 
  179                } elseif ($this->condition[$this->index] == 
'n') {
 
  180                    $group[] = array(
'type' => 
'expression', 
'value' => array_shift($this->expressions));
 
  181                    $expected = array(
"o", 
")");
 
  182                } elseif ($this->condition[$this->index] == 
'o') {
 
  183                    $group[] = array(
'type' => 
'operator', 
'value' => array_shift($this->operators));
 
  184                    $expected = array(
"n", 
"(", 
"!");
 
  185                } elseif ($this->condition[$this->index] == 
'(') {
 
  188                    $group[] = array(
'type' => 
"group", 
"negated" => $negation, 
'nodes' => $elements);
 
  190                    $expected = array(
"o",
")");
 
  191                } elseif ($this->condition[$this->index] == 
"!") {
 
  194            } elseif (trim($this->condition[$this->index]) != 
"") {
 
  202        return array(
'type' => 
'group', 
"negated" => $negation, 
'nodes' => $group);
 
  218        $start = strpos($this->condition, 
"n", 
$index + 1);
 
  221        if ($start !== 
false) {
 
  222            $end   = strpos($this->condition, 
"n", $start + 1);
 
  225        if ($start !== 
false && 
$end !== 
false) {
 
  226            $this->condition = substr_replace($this->condition, 
"(n o n)", $start, 
$end - $start + 1);
 
  237        $next_bracket = strpos($this->condition, 
"(", 
$index+1);
 
  238        $next_expression = strpos($this->condition, 
"n", 
$index+1);
 
  240        return $next_bracket !== 
false & $next_bracket < $next_expression;
 
An exception for terminatinating execution or to throw for unit testing.
Class ConditionParserException.
createNodeArray()
Creates an array representing all Nodes in a condition based on the fetched expressions and operators...
cannonicalizeCondition()
Cannonicalize the condition into a more general form.
fetchExpressions()
Matches all expressions in the current condition and assign these to the class attribute ConditionPar...
isNegationSurroundedByBrackets($index)
fetchOperators()
Matches all operators in the current condition and assign these to the class attribute ConditionParse...
__construct()
Construct requirements.
parse($condition)
Parses the delivered condition and creates a composite tree Structure.
surroundNegationExpression($index)
static _getInstance()
Get an Instance of ExpressionManufacturer.
static _getInstance()
Get an Instance of OperationManufacturer.