• 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}:
    • documentation:
      • DocumentationLine{http://etl.sf.net/etl/grammar/0.2.1}:
        • text: /// This is a test grammar used to test fallback
      • DocumentationLine{http://etl.sf.net/etl/grammar/0.2.1}:
        • text: /// functionality in the parser.
    • name:
      • net
      • sf
      • etl
      • tests
      • data
      • fallbacks
      • Fallbacks
    • content:
      • Namespace{http://etl.sf.net/etl/grammar/0.2.1}:
        • defaultModifier:
          • Modifier{http://etl.sf.net/etl/grammar/0.2.1}:
            • value: default
        • prefix: t
        • uri: "http://etl.sf.net/2006/tests/fallbacks"
      • Context{http://etl.sf.net/etl/grammar/0.2.1}:
        • documentation:
          • DocumentationLine{http://etl.sf.net/etl/grammar/0.2.1}:
            • text: /// Base context. It contains definitions of documentation and attributes
          • DocumentationLine{http://etl.sf.net/etl/grammar/0.2.1}:
            • text: /// that will be used in later sections.
        • abstractModifier:
          • Modifier{http://etl.sf.net/etl/grammar/0.2.1}:
            • value: abstract
        • name: Base
        • content:
          • DocumentationSyntax{http://etl.sf.net/etl/grammar/0.2.1}:
            • documentation:
              • DocumentationLine{http://etl.sf.net/etl/grammar/0.2.1}:
                • text: /// Simple documentation production
            • name: Documentation
            • syntax:
              • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                • name: documentation
                • operator: +=
                • expression:
                  • DoclinesOp{http://etl.sf.net/etl/grammar/0.2.1}:
            • Attributes{http://etl.sf.net/etl/grammar/0.2.1}:
              • documentation:
                • DocumentationLine{http://etl.sf.net/etl/grammar/0.2.1}:
                  • text: /// Simple attributes production
              • name: Attributes
              • 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: @
                        • KeywordStatement{http://etl.sf.net/etl/grammar/0.2.1}:
                          • text: [
                        • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                          • name: attributes
                          • operator: +=
                          • expression:
                            • ListOp{http://etl.sf.net/etl/grammar/0.2.1}:
                              • separator: ,
                              • syntax:
                                • Sequence{http://etl.sf.net/etl/grammar/0.2.1}:
                                  • syntax:
                                    • ExpressionStatement{http://etl.sf.net/etl/grammar/0.2.1}:
                                      • syntax:
                                        • IdentifierOp{http://etl.sf.net/etl/grammar/0.2.1}:
                          • KeywordStatement{http://etl.sf.net/etl/grammar/0.2.1}:
                            • text: ]
          • Context{http://etl.sf.net/etl/grammar/0.2.1}:
            • documentation:
              • DocumentationLine{http://etl.sf.net/etl/grammar/0.2.1}:
                • text: /// A context with empty fallbacks
            • name: EmptyFallbacks
            • content:
              • ContextInclude{http://etl.sf.net/etl/grammar/0.2.1}:
                • contextName: Base
              • Statement{http://etl.sf.net/etl/grammar/0.2.1}:
                • documentation:
                  • DocumentationLine{http://etl.sf.net/etl/grammar/0.2.1}:
                    • text: /// This is a blank statement
                • name: BlankStatement
              • Statement{http://etl.sf.net/etl/grammar/0.2.1}:
                • documentation:
                  • DocumentationLine{http://etl.sf.net/etl/grammar/0.2.1}:
                    • text: /// Some non-empty statement
                • name: SomeStatement
                • 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: some
                          • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                            • name: value
                            • operator: =
                            • expression:
                              • IdentifierOp{http://etl.sf.net/etl/grammar/0.2.1}:
            • Context{http://etl.sf.net/etl/grammar/0.2.1}:
              • documentation:
                • DocumentationLine{http://etl.sf.net/etl/grammar/0.2.1}:
                  • text: /// A context with non-empty fallbacks
              • name: NonEmptyFallbacks
              • content:
                • ContextInclude{http://etl.sf.net/etl/grammar/0.2.1}:
                  • contextName: Base
                • Statement{http://etl.sf.net/etl/grammar/0.2.1}:
                  • documentation:
                    • DocumentationLine{http://etl.sf.net/etl/grammar/0.2.1}:
                      • text: /// Some non-empty statement that is designated as statement
                  • name: SomeStatement
                  • 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: some
                            • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                              • name: value
                              • operator: =
                              • expression:
                                • IdentifierOp{http://etl.sf.net/etl/grammar/0.2.1}:
               1: doctype public "-//IDN etl.sf.net//ETL//Grammar 0.2.1";
               2: 
               3: /// This is a test grammar used to test fallback
               4: /// functionality in the parser.
               5: grammar net.sf.etl.tests.data.fallbacks.Fallbacks {
               6: 	namespace default t = "http://etl.sf.net/2006/tests/fallbacks";
               7: 	/// Base context. It contains definitions of documentation and attributes 
               8: 	/// that will be used in later sections.
               9: 	context abstract Base {
              10: 		
              11: 		/// Simple documentation production
              12: 		documentation Documentation {
              13: 			@ documentation += doclines;
              14: 		};
              15: 		
              16: 		/// Simple attributes production
              17: 		attributes Attributes {
              18: 			% @ % [ {
              19: 				@ attributes += list , {
              20: 					identifier;
              21: 				};		
              22: 			} % ];
              23: 		};
              24: 	};
              25: 
              26: 	/// A context with empty fallbacks
              27: 	context EmptyFallbacks {
              28: 		include Base;
              29: 		
              30: 		/// This is a blank statement
              31: 		statement BlankStatement {
              32: 		};
              33: 
              34: 		/// Some non-empty statement
              35: 		statement SomeStatement {
              36: 			% some {
              37: 				@ value = identifier;
              38: 			};
              39: 		};
              40: 	};
              41: 
              42: 	/// A context with non-empty fallbacks
              43: 	context NonEmptyFallbacks {
              44: 		include Base;
              45: 		
              46: 		/// Some non-empty statement that is designated as statement
              47: 		statement SomeStatement {
              48: 			% some {
              49: 				@ value = identifier;
              50: 			};
              51: 		};
              52: 	};
              53: };