EXTEND
From Gallium
This page just holds the EXTEND syntax used for Extensible Parsers of Camlp4.
grammar-extension ::= | EXTEND <gram-name> (GLOBAL: <entry-name>*;)? <entry>* END; entry ::= | <entry-name>: <position>? [ <level> | ... | <level> ]; position ::= | FIRST | LAST | BEFORE "<level-name>" | AFTER "<level-name>" | LEVEL "<level-name>" level ::= | "<level-name>"? <associativity>? <level-rules> associativity ::= | LEFTA (* The default one *) | RIGHTA | NONA level-rules ::= | [ <rule> | ... | <rule> ] rule ::= | <symbol> ; ... ; <symbol> -> <semantic-action> semantic-action ::= | <caml-expression> symbol ::= | <simple-symbol> | `<caml-pattern> (* Match a token with an OCaml pattern, returns the token *) | <caml-identifier> = <simple-symbol> | ( <caml-ident> , ... , <caml-ident> ) = <simple-symbol> simple-symbol ::= | SELF | NEXT | <entry-name> (LEVEL "<level-name>")? | <level-rules> | "<keyword>" | OPT <simple-symbol> | LIST{0,1} <simple-symbol> (SEP <simple-symbol>)? | <token-constructor>