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;
 }