3.3 Language parsed
Entries are stream parsers improved. Each precedence level can be seen
as an independent extensible stream parser.
In a precedence level, the rules are factorized, i.e. several rules
can start with the same symbols, and the parser is represented by a
tree of symbols where leaves are either semantic actions, or dead
ends.
When an extension is done, the new rules are inserted in the
precedence level tree. The system does not check whether the entry
precedence level will ``work'', nor whether it would work together
with the other levels and the other entries.
This insertion is generally done at the end of the rules list. The
special cases are for symbols of type token, which are always inserted
before the other symbols (non terminals, lists, options, etc),
tokens with parameters before tokens without parameters (parameter is
the empty string).
There is no factorization of rules between different levels nor, a fortiori,
with other entries.
While parsing an entry, the system tries the first precedence
level. Then, if it fails, it tries the second one, etc. If the last
one fails, the entry fails and the caller of this entry resumes,
either by raising a parse error (the parsing is then stopped), or
by trying other rules.