<?php
-
/**
* @author Niklas Laxström, Tim Starling
*
* for the level 4 operators, since they return boolean and don't accept
* boolean inputs.
*/
- static $precedence = array(
+ private static $precedence = array(
'or' => 2,
'and' => 3,
'is' => 4,
*/
public static function convert( $rule ) {
$parser = new self( $rule );
+
return $parser->doConvert();
}
if ( $length !== 0 ) {
$token = $this->newNumber( substr( $this->rule, $this->pos, $length ), $this->pos );
$this->pos += $length;
+
return $token;
}
if ( $op2 === '..' || $op2 === '!=' ) {
$token = $this->newOperator( $op2, $this->pos, 2 );
$this->pos += 2;
+
return $token;
}
$op1 = $this->rule[$this->pos];
if ( $op1 === ',' || $op1 === '=' || $op1 === '%' ) {
$token = $this->newOperator( $op1, $this->pos, 1 );
- $this->pos ++;
+ $this->pos++;
+
return $token;
}
if ( isset( self::$precedence[$bothWords] ) ) {
$token = $this->newOperator( $bothWords, $this->pos, $nextTokenPos - $this->pos );
$this->pos = $nextTokenPos;
+
return $token;
}
}
if ( isset( self::$precedence[$word1] ) ) {
$token = $this->newOperator( $word1, $this->pos, strlen( $word1 ) );
$this->pos += strlen( $word1 );
+
return $token;
}
// The single-character operand symbols
if ( strpos( self::OPERAND_SYMBOLS, $word1 ) !== false ) {
$token = $this->newNumber( $word1, $this->pos );
- $this->pos ++;
+ $this->pos++;
+
return $token;
}
// Samples are like comments, they have no effect on rule evaluation.
// They run from the first sample indicator to the end of the string.
$this->pos = $this->end;
+
return false;
}