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); } }
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); } }
/** * @param $program * @throws Lisphp_ParsingException */ public function __construct($program) { $this->forms = Lisphp_Parser::parse($program, true); }