/** * Parse * * @param text.parser.generic.AbstractLexer lexer * @return var result of the last reduction, if any. * @throws text.parser.generic.ParseException if an exception occurs during parsing. */ public function parse(AbstractLexer $lexer) { $this->messages = array(self::ERROR => [], self::WARNING => []); try { $result = $this->yyparse($lexer); } catch (Throwable $e) { throw new ParseException($e->getMessage(), $e); } if (!empty($this->messages[self::ERROR])) { $p = new ParseException(sizeof($this->messages[self::ERROR]) . ' parse error(s) occurred.', null, $this->messages[self::ERROR]); $p->setCause(new FormatException("[\n" . $p->formattedErrors() . ']')); throw $p; } return $result; }
/** * Called when parsing fails * * @param xp.compiler.io.Source src * @param text.parser.generic.ParseException reason */ public function parsingFailed(Source $src, \text\parser\generic\ParseException $reason) { $this->writer->writeLine('*** @', $src, ':'); $this->writer->writeLine($reason->compoundMessage()); }
/** * Called when parsing fails * * @param xp.compiler.io.Source src * @param text.parser.generic.ParseException reason */ public function parsingFailed(Source $src, \text\parser\generic\ParseException $reason) { $this->writer->writeLine($src, ': ', $reason->compoundMessage()); $reason->printStackTrace(); }
/** * Called when parsing fails * * @param xp.compiler.io.Source src * @param text.parser.generic.ParseException reason */ public function parsingFailed(Source $src, \text\parser\generic\ParseException $reason) { $this->writer->write('P'); $this->failed++; $this->messages[$src->getURI()] = $reason->getCause()->compoundMessage(); }