• 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:
      • samples
      • Events
    • 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: e
        • uri: "urn:x-etl:samples:events"
      • 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: Events
            • 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: events
              • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                • name: events
                • operator: +=
                • expression:
                  • BlockRef{http://etl.sf.net/etl/grammar/0.2.1}:
                    • context: DefList
          • Statement{http://etl.sf.net/etl/grammar/0.2.1}:
            • name: ResetEvents
            • 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: resetEvents
              • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                • name: events
                • operator: +=
                • expression:
                  • BlockRef{http://etl.sf.net/etl/grammar/0.2.1}:
                    • context: ResetEventList
          • Statement{http://etl.sf.net/etl/grammar/0.2.1}:
            • name: Commands
            • 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: commands
              • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                • name: commands
                • operator: +=
                • expression:
                  • BlockRef{http://etl.sf.net/etl/grammar/0.2.1}:
                    • context: DefList
          • Statement{http://etl.sf.net/etl/grammar/0.2.1}:
            • name: State
            • 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: state
              • 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: StateContext
        • Context{http://etl.sf.net/etl/grammar/0.2.1}:
          • name: ResetEventList
          • content:
            • Statement{http://etl.sf.net/etl/grammar/0.2.1}:
              • name: ResetEvent
              • syntax:
                • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                  • name: name
                  • operator: =
                  • expression:
                    • IdentifierOp{http://etl.sf.net/etl/grammar/0.2.1}:
          • Context{http://etl.sf.net/etl/grammar/0.2.1}:
            • name: DefList
            • content:
              • Statement{http://etl.sf.net/etl/grammar/0.2.1}:
                • name: Def
                • syntax:
                  • 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: code
                      • operator: =
                      • expression:
                        • IdentifierOp{http://etl.sf.net/etl/grammar/0.2.1}:
              • Context{http://etl.sf.net/etl/grammar/0.2.1}:
                • name: StateContext
                • content:
                  • Statement{http://etl.sf.net/etl/grammar/0.2.1}:
                    • name: Actions
                    • 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: actions
                      • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                        • name: commands
                        • operator: =
                        • expression:
                          • BlockRef{http://etl.sf.net/etl/grammar/0.2.1}:
                            • context: ActionContext
                  • Statement{http://etl.sf.net/etl/grammar/0.2.1}:
                    • name: Transtion
                    • 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: on
                      • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                        • name: event
                        • 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: target
                          • operator: =
                          • expression:
                            • IdentifierOp{http://etl.sf.net/etl/grammar/0.2.1}:
                  • Context{http://etl.sf.net/etl/grammar/0.2.1}:
                    • name: ActionContext
                    • content:
                      • Statement{http://etl.sf.net/etl/grammar/0.2.1}:
                        • name: Action
                        • syntax:
                          • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                            • name: name
                            • 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: grammar samples.Events {
                     4: 	namespace default e = "urn:x-etl:samples:events";
                     5: 	context default TopLevel {
                     6: 		statement Events {
                     7: 			% events;
                     8: 			@ events += block(DefList);
                     9: 		};
                    10: 		statement ResetEvents {
                    11: 			% resetEvents;
                    12: 			@ events += block(ResetEventList);
                    13: 		};
                    14: 		statement Commands {
                    15: 			% commands;
                    16: 			@ commands += block(DefList);
                    17: 		};
                    18: 		statement State {
                    19: 			% state;
                    20: 			@ name = identifier;
                    21: 			@ contents += block(StateContext);
                    22: 		};
                    23: 	};
                    24: 
                    25: 	context ResetEventList {
                    26: 		statement ResetEvent {
                    27: 			@ name = identifier;
                    28: 		};
                    29: 	};
                    30: 
                    31: 	context DefList {
                    32: 		statement Def {
                    33: 			@ name = identifier;
                    34: 			@ code = identifier;
                    35: 		};
                    36: 	};
                    37: 
                    38: 	context StateContext {
                    39: 		statement Actions {
                    40: 			% actions;
                    41: 			@ commands = block(ActionContext);
                    42: 		};
                    43: 		statement Transtion {
                    44: 			% on;
                    45: 			@ event = identifier;
                    46: 			% =>;
                    47: 			@ target = identifier; 
                    48: 		};
                    49: 	};
                    50: 
                    51: 	context ActionContext {
                    52: 		statement Action {
                    53: 			@ name = identifier;
                    54: 		};
                    55: 	};
                    56: };