public function testParse() { $lexer = new Lexer(); $stream = $lexer->tokenize(" ClassName < BaseClass << Traversable > The Test Class\n" . "> Comment \n" . "+ prop1:integer[set get is bind] > The property 1\n" . "# prop2[set get] > The property 2\n" . "> Comment for prop2\n" . "- prop3:ArrayObject\n" . "\n" . "+ method1(name:string obj:object options:array):boolean > The method 1\n" . "# method2(type:int) > The method 2\n" . "- method3():IteratorAggrigate\n"); $parser = new TokenParser(); $nodeStream = $parser->parse($stream); $this->assertInstanceOf('KzykHys\\ClassGenerator\\Node\\NodeStream', $nodeStream); }
/** * Generate a PHP class from .pcg content * * @param string $document * * @return ClassGenerator */ public function generate($document) { $lexer = new Lexer(); $tokenStream = $lexer->tokenize($document); $tokenParser = new TokenParser(); $nodeStream = $tokenParser->parse($tokenStream); $nodeParser = new NodeParser(); $this->classBuilder = $nodeParser->parse($nodeStream); $compiler = new Compiler($this->options); $this->streamWriter = $compiler->compile($this->classBuilder); return $this; }