• DoctypeDeclaration{http://etl.sf.net/etl/doctype/0.2.1}:
    • publicId: "-//IDN etl.sf.net//ETL//Grammar 0.2.1"
  • Grammar{http://etl.sf.net/etl/grammar/0.2.1}:
    • name:
      • calculator
      • CalculatorArith
    • content:
      • GrammarInclude{http://etl.sf.net/etl/grammar/0.2.1}:
        • systemId: "calculator-basic-0_2_1.g.etl"
      • Namespace{http://etl.sf.net/etl/grammar/0.2.1}:
        • prefix: t
        • uri: "http://etl.sf.net/samples/calculator"
      • Namespace{http://etl.sf.net/etl/grammar/0.2.1}:
        • defaultModifier:
          • Modifier{http://etl.sf.net/etl/grammar/0.2.1}:
            • value: default
        • prefix: a
        • uri: "http://etl.sf.net/samples/calculator/arith"
      • Context{http://etl.sf.net/etl/grammar/0.2.1}:
        • defaultModifier:
          • Modifier{http://etl.sf.net/etl/grammar/0.2.1}:
            • value: default
        • name: Expressions
        • content:
          • OperatorDefinition{http://etl.sf.net/etl/grammar/0.2.1}:
            • isComposite:
              • Modifier{http://etl.sf.net/etl/grammar/0.2.1}:
                • value: composite
            • name: Identity
            • associativity: f
            • syntax:
              • ExpressionStatement{http://etl.sf.net/etl/grammar/0.2.1}:
                • syntax:
                  • ObjectOp{http://etl.sf.net/etl/grammar/0.2.1}:
                    • name:
                      • ObjectName{http://etl.sf.net/etl/grammar/0.2.1}:
                        • prefix: t
                        • name: Identity
                    • syntax:
                      • Sequence{http://etl.sf.net/etl/grammar/0.2.1}:
                        • syntax:
                          • ExpressionStatement{http://etl.sf.net/etl/grammar/0.2.1}:
                            • syntax:
                              • Sequence{http://etl.sf.net/etl/grammar/0.2.1}:
                                • syntax:
                                  • KeywordStatement{http://etl.sf.net/etl/grammar/0.2.1}:
                                    • text: (
                          • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                            • name: value
                            • operator: =
                            • expression:
                              • ExpressionRef{http://etl.sf.net/etl/grammar/0.2.1}:
                            • ExpressionStatement{http://etl.sf.net/etl/grammar/0.2.1}:
                              • syntax:
                                • Sequence{http://etl.sf.net/etl/grammar/0.2.1}:
                                  • syntax:
                                    • KeywordStatement{http://etl.sf.net/etl/grammar/0.2.1}:
                                      • text: )
            • OperatorDefinition{http://etl.sf.net/etl/grammar/0.2.1}:
              • name: UnaryMinus
              • associativity: fy
              • precedence: 200
              • text: -
              • syntax:
                • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                  • name: value
                  • operator: =
                  • expression:
                    • OperandOp{http://etl.sf.net/etl/grammar/0.2.1}:
                      • position: right
            • OperatorDefinition{http://etl.sf.net/etl/grammar/0.2.1}:
              • name: UnaryPlus
              • associativity: fy
              • precedence: 200
              • text: +
              • syntax:
                • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                  • name: value
                  • operator: =
                  • expression:
                    • OperandOp{http://etl.sf.net/etl/grammar/0.2.1}:
                      • position: right
            • OperatorDefinition{http://etl.sf.net/etl/grammar/0.2.1}:
              • name: Power
              • associativity: xfy
              • precedence: 300
              • text: **
              • syntax:
                • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                  • name: first
                  • operator: =
                  • expression:
                    • OperandOp{http://etl.sf.net/etl/grammar/0.2.1}:
                      • position: left
                • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                  • name: second
                  • operator: =
                  • expression:
                    • OperandOp{http://etl.sf.net/etl/grammar/0.2.1}:
                      • position: right
            • OperatorDefinition{http://etl.sf.net/etl/grammar/0.2.1}:
              • name: Multiply
              • associativity: yfx
              • precedence: 400
              • text: *
              • syntax:
                • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                  • name: first
                  • operator: =
                  • expression:
                    • OperandOp{http://etl.sf.net/etl/grammar/0.2.1}:
                      • position: left
                • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                  • name: second
                  • operator: =
                  • expression:
                    • OperandOp{http://etl.sf.net/etl/grammar/0.2.1}:
                      • position: right
            • OperatorDefinition{http://etl.sf.net/etl/grammar/0.2.1}:
              • name: Divide
              • associativity: yfx
              • precedence: 400
              • text: /
              • syntax:
                • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                  • name: first
                  • operator: =
                  • expression:
                    • OperandOp{http://etl.sf.net/etl/grammar/0.2.1}:
                      • position: left
                • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                  • name: second
                  • operator: =
                  • expression:
                    • OperandOp{http://etl.sf.net/etl/grammar/0.2.1}:
                      • position: right
            • OperatorDefinition{http://etl.sf.net/etl/grammar/0.2.1}:
              • name: Remainder
              • associativity: yfx
              • precedence: 400
              • text: %
              • syntax:
                • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                  • name: first
                  • operator: =
                  • expression:
                    • OperandOp{http://etl.sf.net/etl/grammar/0.2.1}:
                      • position: left
                • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                  • name: second
                  • operator: =
                  • expression:
                    • OperandOp{http://etl.sf.net/etl/grammar/0.2.1}:
                      • position: right
            • OperatorDefinition{http://etl.sf.net/etl/grammar/0.2.1}:
              • name: Plus
              • associativity: yfx
              • precedence: 500
              • text: +
              • syntax:
                • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                  • name: first
                  • operator: =
                  • expression:
                    • OperandOp{http://etl.sf.net/etl/grammar/0.2.1}:
                      • position: left
                • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                  • name: second
                  • operator: =
                  • expression:
                    • OperandOp{http://etl.sf.net/etl/grammar/0.2.1}:
                      • position: right
            • OperatorDefinition{http://etl.sf.net/etl/grammar/0.2.1}:
              • name: Minus
              • associativity: yfx
              • precedence: 500
              • text: -
              • syntax:
                • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                  • name: first
                  • operator: =
                  • expression:
                    • OperandOp{http://etl.sf.net/etl/grammar/0.2.1}:
                      • position: left
                • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                  • name: second
                  • operator: =
                  • expression:
                    • OperandOp{http://etl.sf.net/etl/grammar/0.2.1}:
                      • position: right
         1: doctype public "-//IDN etl.sf.net//ETL//Grammar 0.2.1";
         2: grammar calculator.CalculatorArith {
         3:     include "calculator-basic-0_2_1.g.etl";
         4:     namespace t = "http://etl.sf.net/samples/calculator";
         5:     namespace default a = "http://etl.sf.net/samples/calculator/arith";
         6:     context default Expressions {
         7:         op composite Identity(f) {
         8:             ^t:Identity {
         9:                 % (;
        10:                 @ value = expression;
        11:                 % );
        12:             };
        13:         };
        14:         op UnaryMinus(fy, 200, -) {
        15:             @ value = right;
        16:         };
        17:         op UnaryPlus(fy, 200, +) {
        18:             @ value = right;
        19:         };
        20:         op Power(xfy, 300, **) {
        21:             @ first = left;
        22:             @ second = right;
        23:         };
        24:         op Multiply(yfx, 400, *) {
        25:             @ first = left;
        26:             @ second = right;
        27:         };
        28:         op Divide(yfx, 400, /) {
        29:             @ first = left;
        30:             @ second = right;
        31:         };
        32:         op Remainder(yfx, 400, %) {
        33:             @ first = left;
        34:             @ second = right;
        35:         };
        36:         op Plus(yfx, 500, +) {
        37:             @ first = left;
        38:             @ second = right;
        39:         };
        40:         op Minus(yfx, 500, -) {
        41:             @ first = left;
        42:             @ second = right;
        43:         };
        44:     };
        45: };