* This is a really big change.  Most has to do with the removal of   ambiguity, which is described in the latest change to   Parser/AbstractParser.php.  (7ad472e8cfb045a81b9180ecd4471d5a06aa8108)
* This is a really big change.  Most has to do with the removal of
  ambiguity, which is described in the latest change to
  Parser/AbstractParser.php.  (7ad472e8cfb045a81b9180ecd4471d5a06aa8108)

* new properties: private $shifts, private $processed.

* __construct(): new optional parameter $rule.  In case of a closure,
  shift, or reduce the corresponding rule is added to the new state.

* When shifting or reducing, a *new* state has to be build.
  Therefore, we need to *clone* it.  __clone() is implemented, which
  calls private function copyArray(array $array) (renamed from
  __myClone()).

* new methods: public getProcessed(), public setProcessed(), private
  addShift(ParserState $state), public getShifts().  The latter
  returns the array of appended shifts and clears(!!!!!!) it.

* closure(), shift(), reduce(): $rule is appended to the constructor
  of the new ParserState

* new method: string public getHistory(), which returns a string
  representation of the parse tree of this element.

* new method: array public getRank().  return value is described in
  7ad472e8cfb045a81b9180ecd4471d5a06aa8108.  First, precedence and
  associativity are stored in an array.  It then gets the parent
  elements of a symbol, where only the first and last are of any
  interest.  If there are none of these, an empty array is returned.
  Otherwise, it calls itself recursively on -- depending on the
  associativity -- the first (assoc == left) or the last (assoc ==
  right) element and appends the result to the array, which is
  returned.

* new method: int protected countParserTokens(): counts all terminal
  symbols in the history of an ParserState.

* new method: bool public equal(ParserRule $rule): returns if the
  state fulfills the given rule, starting from 0 (used to check if the
  state is in the grammar, and the only reasonable ParserRule to pass
  here is the start rule).

oliverheins/PHPSimpleLexYacc