parse() public static method

public static parse ( $program, $asArray = false )
Esempio n. 1
0
 function testParse()
 {
     $expected = array(new Lisphp_Literal('this is a docstring'), new Lisphp_List(array(Lisphp_Symbol::get('define'), new Lisphp_List(array(Lisphp_Symbol::get('add'), Lisphp_Symbol::get('a'), Lisphp_Symbol::get('b'))), new Lisphp_List(array(Lisphp_Symbol::get('+'), Lisphp_Symbol::get('a'), Lisphp_Symbol::get('b'))))), new Lisphp_List(array(Lisphp_Symbol::get('define'), new Lisphp_List(array(Lisphp_Symbol::get('sub'), Lisphp_Symbol::get('a'), Lisphp_Symbol::get('b'))), new Lisphp_List(array(Lisphp_Symbol::get('-'), Lisphp_Symbol::get('a'), Lisphp_Symbol::get('b'))))));
     $program = '
         "this is a docstring"
         (define (add a b) (+ a b))
         (define (sub a b) (- a b))
     ';
     $this->assertEquals($expected, Lisphp_Parser::parse($program, true));
     $this->assertType('Lisphp_Program', Lisphp_Parser::parse($program));
     try {
         Lisphp_Parser::parse($code = '
             (correct form)
             (incorrect form}
             (correct form)
         ', true);
         $this->fail();
     } catch (Lisphp_ParsingException $e) {
         $this->assertEquals($code, $e->code);
         $this->assertEquals(63, $e->offset);
     }
 }
Esempio n. 2
0
 public function testParse()
 {
     $this->markTestIncomplete('Somebody please debug this, I have no clue what is going on.');
     // todo
     $expected = array(new Lisphp_Literal('this is a docstring'), new Lisphp_List(array(Lisphp_Symbol::get('define'), new Lisphp_List(array(Lisphp_Symbol::get('add'), Lisphp_Symbol::get('a'), Lisphp_Symbol::get('b'))), new Lisphp_List(array(Lisphp_Symbol::get('+'), Lisphp_Symbol::get('a'), Lisphp_Symbol::get('b'))))), new Lisphp_List(array(Lisphp_Symbol::get('define'), new Lisphp_List(array(Lisphp_Symbol::get('sub'), Lisphp_Symbol::get('a'), Lisphp_Symbol::get('b'))), new Lisphp_List(array(Lisphp_Symbol::get('-'), Lisphp_Symbol::get('a'), Lisphp_Symbol::get('b'))))));
     $program = '
         "this is a docstring"
         (define (add a b) (+ a b))
         (define (sub a b) (- a b))
     ';
     $this->assertEquals($expected, Lisphp_Parser::parse($program, true));
     $this->assertType('Lisphp_Program', Lisphp_Parser::parse($program));
     try {
         Lisphp_Parser::parse($code = '
             (correct form)
             (incorrect form}
             (correct form)
         ', true);
         $this->fail();
     } catch (Lisphp_ParsingException $e) {
         $this->assertEquals($code, $e->code);
         $this->assertEquals(63, $e->offset);
     }
 }
Esempio n. 3
0
 /**
  * @param $program
  * @throws Lisphp_ParsingException
  */
 public function __construct($program)
 {
     $this->forms = Lisphp_Parser::parse($program, true);
 }