• 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
      • Plans
    • content:
      • GrammarImport{http://etl.sf.net/etl/grammar/0.2.1}:
        • name: accounting
        • systemId: "accounting.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: p
        • uri: "http://etl.sf.net/2008/samples/plans"
      • Context{http://etl.sf.net/etl/grammar/0.2.1}:
        • defaultModifier:
          • Modifier{http://etl.sf.net/etl/grammar/0.2.1}:
            • value: default
        • name: TopLevel
        • content:
          • Statement{http://etl.sf.net/etl/grammar/0.2.1}:
            • name: Plan
            • 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: plan
              • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                • name: name
                • operator: =
                • expression:
                  • IdentifierOp{http://etl.sf.net/etl/grammar/0.2.1}:
                • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                  • name: contents
                  • operator: +=
                  • expression:
                    • BlockRef{http://etl.sf.net/etl/grammar/0.2.1}:
                      • context: PlanMembers
        • Context{http://etl.sf.net/etl/grammar/0.2.1}:
          • name: PlanMembers
          • content:
            • Statement{http://etl.sf.net/etl/grammar/0.2.1}:
              • name: Value
              • 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: value
                • 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: type
                    • operator: =
                    • expression:
                      • IdentifierOp{http://etl.sf.net/etl/grammar/0.2.1}:
                    • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                      • name: value
                      • operator: +=
                      • expression:
                        • BlockRef{http://etl.sf.net/etl/grammar/0.2.1}:
                          • context: TimedExpressions
                • Statement{http://etl.sf.net/etl/grammar/0.2.1}:
                  • name: Event
                  • 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: event
                    • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                      • name: name
                      • operator: =
                      • expression:
                        • IdentifierOp{http://etl.sf.net/etl/grammar/0.2.1}:
                      • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                        • name: value
                        • operator: +=
                        • expression:
                          • BlockRef{http://etl.sf.net/etl/grammar/0.2.1}:
                            • context: TimedExpressions
              • Context{http://etl.sf.net/etl/grammar/0.2.1}:
                • name: TimedExpressions
                • content:
                  • ContextImport{http://etl.sf.net/etl/grammar/0.2.1}:
                    • localName: expressions
                    • contextName: Expressions
                    • grammarName: accounting
                  • Def{http://etl.sf.net/etl/grammar/0.2.1}:
                    • name: MappingPart
                    • 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}:
                            • context: expressions
                  • Statement{http://etl.sf.net/etl/grammar/0.2.1}:
                    • name: After
                    • 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: after
                      • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                        • name: date
                        • operator: =
                        • expression:
                          • ObjectOp{http://etl.sf.net/etl/grammar/0.2.1}:
                            • name:
                              • ObjectName{http://etl.sf.net/etl/grammar/0.2.1}:
                                • prefix: p
                                • name: Date
                            • syntax:
                              • Sequence{http://etl.sf.net/etl/grammar/0.2.1}:
                                • syntax:
                                  • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                                    • name: year
                                    • operator: =
                                    • expression:
                                      • IntegerOp{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: month
                                      • operator: =
                                      • expression:
                                        • IntegerOp{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: day
                                        • operator: =
                                        • expression:
                                          • IntegerOp{http://etl.sf.net/etl/grammar/0.2.1}:
                            • ExpressionStatement{http://etl.sf.net/etl/grammar/0.2.1}:
                              • syntax:
                                • RefOp{http://etl.sf.net/etl/grammar/0.2.1}:
                                  • name: MappingPart
                        • Statement{http://etl.sf.net/etl/grammar/0.2.1}:
                          • name: Past
                          • 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: past
                            • ExpressionStatement{http://etl.sf.net/etl/grammar/0.2.1}:
                              • syntax:
                                • RefOp{http://etl.sf.net/etl/grammar/0.2.1}:
                                  • name: MappingPart
                     1: doctype public "-//IDN etl.sf.net//ETL//Grammar 0.2.1";
                     2: 
                     3: grammar net.sf.etl.samples.Plans {
                     4: 	import accounting="accounting.g.etl";
                     5: 	namespace default p = "http://etl.sf.net/2008/samples/plans";
                     6: 
                     7: 	context default TopLevel {
                     8: 		statement Plan {
                     9: 			% plan;
                    10: 			@ name = identifier;
                    11: 			@ contents += block(PlanMembers);
                    12: 		};
                    13: 	};
                    14: 
                    15: 	context PlanMembers {
                    16: 		statement Value {
                    17: 			% value;
                    18: 			@ name = identifier;
                    19: 			% : ;
                    20: 			@ type = identifier;
                    21: 			@ value += block(TimedExpressions);
                    22: 		};
                    23: 
                    24: 		statement Event {
                    25: 			% event;
                    26: 			@ name = identifier;
                    27: 			@ value += block(TimedExpressions);
                    28: 		};
                    29: 	};
                    30: 
                    31: 	context TimedExpressions {
                    32: 		import expressions = Expressions from accounting;
                    33: 		def MappingPart {
                    34: 			% =>;
                    35: 			@ value = expression(expressions);
                    36: 		};
                    37: 		statement After {
                    38: 			% after;
                    39: 			@ date = ^ p:Date {
                    40: 				@ year = integer;
                    41: 				% -;
                    42: 				@ month = integer;
                    43: 				% -;
                    44: 				@ day = integer;
                    45: 			};
                    46: 			ref(MappingPart);
                    47: 		};
                    48: 		statement Past {
                    49: 			% past;
                    50: 			ref(MappingPart);
                    51: 		};
                    52: 	};
                    53: };