function parse()
 {
     $lex = new VTQL_Lexer($this->query);
     $parser = new VTQL_Parser($this->user, $lex, $this->out);
     while ($lex->yylex()) {
         $parser->doParse($lex->token, $lex->value);
     }
     $parser->doParse(0, 0);
     if ($parser->isSuccess()) {
         $this->hasError = false;
         $this->query = $parser->getQuery();
         $this->meta = $parser->getObjectMetaData();
     } else {
         $this->hasError = true;
         $this->error = $parser->getErrorMsg();
     }
     return $this->hasError;
 }
 /**
  * Output debug information to output (php://output stream)
  */
 static function PrintTrace()
 {
     self::$yyTraceFILE = fopen('php://output', 'w');
     self::$yyTracePrompt = '';
 }