• 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:
      • net
      • sf
      • etl
      • samples
      • Accounting
    • content:
      • GrammarInclude{http://etl.sf.net/etl/grammar/0.2.1}:
        • systemId: "formula.g.etl"
      • 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/2008/samples/plans/accounting"
      • Context{http://etl.sf.net/etl/grammar/0.2.1}:
        • 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: Unit
            • associativity: f
            • syntax:
              • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                • name: name
                • operator: =
                • expression:
                  • ChoiceOp{http://etl.sf.net/etl/grammar/0.2.1}:
                    • options:
                      • TokenOp{http://etl.sf.net/etl/grammar/0.2.1}:
                        • value: KwH
                    • options:
                      • TokenOp{http://etl.sf.net/etl/grammar/0.2.1}:
                        • value: USD
          • OperatorDefinition{http://etl.sf.net/etl/grammar/0.2.1}:
            • name: Money
            • associativity: fx
            • precedence: 50
            • 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}:
            • isComposite:
              • Modifier{http://etl.sf.net/etl/grammar/0.2.1}:
                • value: composite
            • name: Account
            • associativity: fx
            • precedence: 1000
            • 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: account
              • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                • name: name
                • operator: =
                • expression:
                  • IdentifierOp{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: <-
                • 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
         1: doctype public "-//IDN etl.sf.net//ETL//Grammar 0.2.1";
         2: 
         3: grammar net.sf.etl.samples.Accounting {
         4: 	include "formula.g.etl";
         5: 	namespace default a = "http://etl.sf.net/2008/samples/plans/accounting";
         6: 
         7: 	context Expressions {
         8: 		op composite Unit(f) {
         9: 			@name = token(KwH) | token(USD);
        10: 		};
        11: 
        12: 		op Money(fx,50,$) {
        13: 			@value = right;
        14: 		};
        15: 
        16: 		op composite Account(fx, 1000) {
        17: 			% account;
        18: 			@ name = identifier;
        19: 			% <-;
        20: 			@ value = right;
        21: 		};
        22: 	};
        23: };