You are here

function ARC_sparql_parser::parse_AdditiveExpression in Taxonomy import/export via XML 5

Same name and namespace in other branches
  1. 5.2 arc/ARC_sparql_parser.php \ARC_sparql_parser::parse_AdditiveExpression()
  2. 6.2 arc/ARC_sparql_parser.php \ARC_sparql_parser::parse_AdditiveExpression()
  3. 6 arc/ARC_sparql_parser.php \ARC_sparql_parser::parse_AdditiveExpression()
1 call to ARC_sparql_parser::parse_AdditiveExpression()
ARC_sparql_parser::parse_NumericExpression in arc/ARC_sparql_parser.php

File

arc/ARC_sparql_parser.php, line 1245

Class

ARC_sparql_parser

Code

function parse_AdditiveExpression($val = "") {
  if ($sub_result = $this
    ->parse_MultiplicativeExpression($val)) {
    $val = $sub_result["unparsed_val"];
    $entries = array(
      $sub_result,
    );
    do {
      $proceed = false;
      if (preg_match("/^(\\+|\\-)/", $val, $matches)) {
        $operator = $matches[1];
        $val = trim(substr($val, 1));
        if ($sub_sub_result = $this
          ->parse_MultiplicativeExpression($val)) {
          $proceed = true;
          $val = $sub_sub_result["unparsed_val"];
          unset($sub_sub_result["unparsed_val"]);
          $sub_sub_result["operator"] = $operator;
          $entries[] = $sub_sub_result;
        }
      }
    } while ($proceed);
    if (count($entries) == 1) {
      return $sub_result;
    }
    else {
      unset($entries[0]["unparsed_val"]);
      return array(
        "type" => "expression",
        "sub_type" => "additive",
        "entries" => $entries,
        "unparsed_val" => $val,
      );
    }
  }
  return false;
}