• 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:
                  • 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}:
                                • wrapper:
                                  • Wrapper{http://etl.sf.net/etl/grammar/0.2.1}:
                                    • object:
                                      • ObjectName{http://etl.sf.net/etl/grammar/0.2.1}:
                                        • prefix: e
                                        • name: ResetEvent
                                    • property: name
          • 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: 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:
                        • 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}:
                                      • wrapper:
                                        • Wrapper{http://etl.sf.net/etl/grammar/0.2.1}:
                                          • object:
                                            • ObjectName{http://etl.sf.net/etl/grammar/0.2.1}:
                                              • prefix: e
                                              • name: Action
                                          • property: name
                • 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}:
                 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 += list , {
                13: 				identifier wrapper e:ResetEvent.name;
                14: 			};
                15: 		};
                16: 		statement Commands {
                17: 			% commands;
                18: 			@ commands += block(DefList);
                19: 		};
                20: 		statement State {
                21: 			% state;
                22: 			@ name = identifier;
                23: 			@ contents += block(StateContext);
                24: 		};
                25: 	};
                26: 
                27: 	context DefList {
                28: 		statement Def {
                29: 			@ name = identifier;
                30: 			@ code = identifier;
                31: 		};
                32: 	};
                33: 
                34: 
                35: 	context StateContext {
                36: 		statement Actions {
                37: 			% actions;
                38: 			@ commands += list , { identifier wrapper e:Action.name;};
                39: 		};
                40: 		statement Transtion {
                41: 			% on;
                42: 			@ event = identifier;
                43: 			% =>;
                44: 			@ target = identifier; 
                45: 		};
                46: 	};
                47: };