Example #1
0
 public function testTokens()
 {
     $input = new ParseInput(array(array('int', 5), array('op', '+'), array('int', 2)));
     $this->assertTrue($input->acceptToken('int', $token));
     $this->assertEquals(5, $token[1]);
     $this->assertFalse($input->acceptToken('int'));
     $this->assertThrows('Jivoo\\Core\\Parse\\ParseException', function () use($input) {
         $input->expectToken('int');
     });
     $token = $input->expectToken('op');
     $this->assertEquals('op', $token[0]);
     $this->assertEquals('+', $token[1]);
 }
Example #2
0
 public static function parseColumn(ParseInput $input)
 {
     if ($input->acceptToken('model', $mToken)) {
         $input->expectToken('dot');
         if (!$input->acceptToken('field', $fToken)) {
             $fToken = $input->expectToken('name');
         }
         return new FieldAccess($fToken[1], $mToken[1]);
     }
     if (!$input->acceptToken('field', $first)) {
         $first = $input->expectToken('name');
     }
     if ($input->acceptToken('dot')) {
         if (!$input->acceptToken('field', $fToken)) {
             $fToken = $input->expectToken('name');
         }
         return new FieldAccess($fToken[1], $first[1]);
     }
     return new FieldAccess($first[1]);
 }
Example #3
0
 /**
  * @param ParseInput $input
  * @return string
  */
 public static function parseInt(ParseInput $input)
 {
     while (is_numeric($input->peek())) {
         $int .= $input->pop();
     }
     if ($int == '') {
         return null;
     }
     return $int;
 }