Extending Grammars and Inheritance — Parsley 1.1 documentation

### Navigation

- index
- modules |
- next |
- previous |
- Parsley 1.1 documentation »

# Extending Grammars and Inheritance

warning: | Unfinished

Another feature taken from OMeta is grammar inheritance. We can write a grammar with rules that override ones in a parent. If we load the grammar from our calculator tutorial as `Calc`, we can extend it with some constants:

    from parsley import makeGrammar
    import math
    import calc
    calcGrammarEx = """
    value = super | constant
    constant = 'pi' -> math.pi
             | 'e' -> math.e
    """
    CalcEx = makeGrammar(calcGrammar, {"math": math}, extends=calc.Calc)

Invoking the rule `super` calls the rule `value` in Calc. If it fails to match, our new `value` rule attempts to match a constant name.

### Navigation

- index
- modules |
- next |
- previous |
- Parsley 1.1 documentation »