C++ Parser
This parser is a LL(k) parser with ad hoc rules such as backtracking.
<name>() is the grammer rule for a non-terminal <name>. opt_<name>() is the grammer rule for an optional non-terminal <name>. is_<name>() looks ahead and returns true if the next symbol is <name>.
Error is used to cache parse errors encountered during the execution of the parse method.
Return the origin of the given pointer (filename and line number)
Error is used to cache parse errors encountered during the execution of the parse method.
Return the origin of the given pointer (filename and line number)
A StatusGuard manages a tentative parse. All actions invoked after its instantiation will be rolled back in the destructor unless 'commit' has been called before.
template-parameter-list:
type-parameter:
GNU extension: extern-template-decl:
condition:
parameter-declaration:
base-clause:
base-specifier-list:
base-specifier:
assignment-expression:
conditional-expression:
logical-or-expression:
logical-and-expression:
inclusive-or-expression:
exclusive-or-expression:
and-expression:
equality-expression:
relational-expression:
shift-expression:
additive-expression:
multiplicative-expression:
pm-expression:
unary-expression:
unary-operator:
compound-statement:
if-statement:
try-block:
handler-seq:
handler:
exception-declaration:
Record whether the current scope is valid. This allows the parser to continue parsing even after it was unable to enter a scope (such as in a function definition with a qualified name that wasn't declared before).
If true, > is interpreted as ther greater-than operator. If false, it marks the end of a template-id or template-parameter-list.