• 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 grammar defines asynchronous extensions for EJ language.
      • DocumentationLine{http://etl.sf.net/etl/grammar/0.2.1}:
        • text: /// These extensions are inspired by E programming language
      • DocumentationLine{http://etl.sf.net/etl/grammar/0.2.1}:
        • text: /// (see http://www.erights.org for more details).
      • DocumentationLine{http://etl.sf.net/etl/grammar/0.2.1}:
        • text: ///
      • DocumentationLine{http://etl.sf.net/etl/grammar/0.2.1}:
        • text: /// This grammar demonstrate how to plug into existing grammar.
      • DocumentationLine{http://etl.sf.net/etl/grammar/0.2.1}:
        • text: /// This situation is different from reuse of existing modules.
    • name:
      • net
      • sf
      • etl
      • samples
      • ej
      • AsyncEJ
    • content:
      • GrammarInclude{http://etl.sf.net/etl/grammar/0.2.1}:
        • systemId: "EJ.g.etl"
      • Namespace{http://etl.sf.net/etl/grammar/0.2.1}:
        • prefix: ej
        • uri: "http://etl.sf.net/2006/samples/ej/0.1"
      • Namespace{http://etl.sf.net/etl/grammar/0.2.1}:
        • prefix: aej
        • uri: "http://etl.sf.net/2006/samples/ej/AsyncEJ/0.1"
      • Context{http://etl.sf.net/etl/grammar/0.2.1}:
        • abstractModifier:
          • Modifier{http://etl.sf.net/etl/grammar/0.2.1}:
            • value: abstract
        • name: ClassifierContent
      • Context{http://etl.sf.net/etl/grammar/0.2.1}:
        • name: InterfaceContents
        • content:
          • Statement{http://etl.sf.net/etl/grammar/0.2.1}:
            • documentation:
              • DocumentationLine{http://etl.sf.net/etl/grammar/0.2.1}:
                • text: /// on statement. It expands to for oneway messages
              • DocumentationLine{http://etl.sf.net/etl/grammar/0.2.1}:
                • text: /// send$name(<parameters>). For other messages it expands
              • DocumentationLine{http://etl.sf.net/etl/grammar/0.2.1}:
                • text: /// to send$name(Resolver<RT> r, <parameters>)
            • name: EventualMethodStatement
            • syntax:
              • ExpressionStatement{http://etl.sf.net/etl/grammar/0.2.1}:
                • syntax:
                  • ObjectOp{http://etl.sf.net/etl/grammar/0.2.1}:
                    • name:
                      • ObjectName{http://etl.sf.net/etl/grammar/0.2.1}:
                        • prefix: aej
                        • name: EventualMethodStatement
                    • syntax:
                      • Sequence{http://etl.sf.net/etl/grammar/0.2.1}:
                        • 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
                                  • ExpressionStatement{http://etl.sf.net/etl/grammar/0.2.1}:
                                    • syntax:
                                      • OptionalOp{http://etl.sf.net/etl/grammar/0.2.1}:
                                        • syntax:
                                          • RefOp{http://etl.sf.net/etl/grammar/0.2.1}:
                                            • name: TemplateParameters
                                  • ExpressionStatement{http://etl.sf.net/etl/grammar/0.2.1}:
                                    • syntax:
                                      • ModifiersOp{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: ej
                                                • name: Modifier
                                            • property: value
                                        • modifiers:
                                          • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                                            • name: publicModifier
                                            • operator: =
                                            • expression:
                                              • ModifierOp{http://etl.sf.net/etl/grammar/0.2.1}:
                                                • value: public
                                          • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                                            • name: abstractModifier
                                            • operator: =
                                            • expression:
                                              • ModifierOp{http://etl.sf.net/etl/grammar/0.2.1}:
                                                • value: abstract
                                          • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                                            • name: onewayModifier
                                            • operator: =
                                            • expression:
                                              • ModifierOp{http://etl.sf.net/etl/grammar/0.2.1}:
                                                • value: oneway
                                  • ExpressionStatement{http://etl.sf.net/etl/grammar/0.2.1}:
                                    • syntax:
                                      • RefOp{http://etl.sf.net/etl/grammar/0.2.1}:
                                        • name: MethodSignatureFragment
      • Context{http://etl.sf.net/etl/grammar/0.2.1}:
        • name: ClassContents
        • content:
          • Statement{http://etl.sf.net/etl/grammar/0.2.1}:
            • documentation:
              • DocumentationLine{http://etl.sf.net/etl/grammar/0.2.1}:
                • text: /// This statement declares that class supports specific
              • DocumentationLine{http://etl.sf.net/etl/grammar/0.2.1}:
                • text: /// asynchronous interface.
            • name: SupportsStatement
            • syntax:
              • ExpressionStatement{http://etl.sf.net/etl/grammar/0.2.1}:
                • syntax:
                  • ObjectOp{http://etl.sf.net/etl/grammar/0.2.1}:
                    • name:
                      • ObjectName{http://etl.sf.net/etl/grammar/0.2.1}:
                        • prefix: ej
                        • name: SupportsStatement
                    • syntax:
                      • Sequence{http://etl.sf.net/etl/grammar/0.2.1}:
                        • 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: supports
                                  • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                                    • name: supportedInterfaces
                                    • 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:
                                                  • ExpressionRef{http://etl.sf.net/etl/grammar/0.2.1}:
                                                    • context: TypeExpressions
          • Statement{http://etl.sf.net/etl/grammar/0.2.1}:
            • documentation:
              • DocumentationLine{http://etl.sf.net/etl/grammar/0.2.1}:
                • text: /// on statement. It expands to for oneway messages
              • DocumentationLine{http://etl.sf.net/etl/grammar/0.2.1}:
                • text: /// send$name(<parameters>). For other messages it expands
              • DocumentationLine{http://etl.sf.net/etl/grammar/0.2.1}:
                • text: /// to send$name(Resolver<RT> r, <parameters>). The statement
              • DocumentationLine{http://etl.sf.net/etl/grammar/0.2.1}:
                • text: /// also causes appearance of inner message class that is used
              • DocumentationLine{http://etl.sf.net/etl/grammar/0.2.1}:
                • text: /// to dispatch values.
            • name: EventualMethodStatement
            • syntax:
              • ExpressionStatement{http://etl.sf.net/etl/grammar/0.2.1}:
                • syntax:
                  • ObjectOp{http://etl.sf.net/etl/grammar/0.2.1}:
                    • name:
                      • ObjectName{http://etl.sf.net/etl/grammar/0.2.1}:
                        • prefix: aej
                        • name: EventualMethodStatement
                    • syntax:
                      • Sequence{http://etl.sf.net/etl/grammar/0.2.1}:
                        • 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
                                  • ExpressionStatement{http://etl.sf.net/etl/grammar/0.2.1}:
                                    • syntax:
                                      • OptionalOp{http://etl.sf.net/etl/grammar/0.2.1}:
                                        • syntax:
                                          • RefOp{http://etl.sf.net/etl/grammar/0.2.1}:
                                            • name: TemplateParameters
                                  • ExpressionStatement{http://etl.sf.net/etl/grammar/0.2.1}:
                                    • syntax:
                                      • ModifiersOp{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: ej
                                                • name: Modifier
                                            • property: value
                                        • modifiers:
                                          • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                                            • name: visibilityModifier
                                            • operator: =
                                            • expression:
                                              • ModifierOp{http://etl.sf.net/etl/grammar/0.2.1}:
                                                • value: public
                                          • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                                            • name: visibilityModifier
                                            • operator: =
                                            • expression:
                                              • ModifierOp{http://etl.sf.net/etl/grammar/0.2.1}:
                                                • value: protected
                                          • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                                            • name: visibilityModifier
                                            • operator: =
                                            • expression:
                                              • ModifierOp{http://etl.sf.net/etl/grammar/0.2.1}:
                                                • value: private
                                          • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                                            • name: staticModifier
                                            • operator: =
                                            • expression:
                                              • ModifierOp{http://etl.sf.net/etl/grammar/0.2.1}:
                                                • value: static
                                          • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                                            • name: strictfpModifier
                                            • operator: =
                                            • expression:
                                              • ModifierOp{http://etl.sf.net/etl/grammar/0.2.1}:
                                                • value: strictfp
                                          • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                                            • name: abstractModifier
                                            • operator: =
                                            • expression:
                                              • ModifierOp{http://etl.sf.net/etl/grammar/0.2.1}:
                                                • value: abstract
                                          • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                                            • name: finalModifier
                                            • operator: =
                                            • expression:
                                              • ModifierOp{http://etl.sf.net/etl/grammar/0.2.1}:
                                                • value: final
                                          • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                                            • name: synchronizedModifier
                                            • operator: =
                                            • expression:
                                              • ModifierOp{http://etl.sf.net/etl/grammar/0.2.1}:
                                                • value: synchronized
                                          • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                                            • name: onewayModifier
                                            • operator: =
                                            • expression:
                                              • ModifierOp{http://etl.sf.net/etl/grammar/0.2.1}:
                                                • value: oneway
                                  • ExpressionStatement{http://etl.sf.net/etl/grammar/0.2.1}:
                                    • syntax:
                                      • RefOp{http://etl.sf.net/etl/grammar/0.2.1}:
                                        • name: MethodSignatureFragment
                          • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                            • name: body
                            • operator: =
                            • expression:
                              • OptionalOp{http://etl.sf.net/etl/grammar/0.2.1}:
                                • syntax:
                                  • RefOp{http://etl.sf.net/etl/grammar/0.2.1}:
                                    • name: MethodBlockFragment
      • Context{http://etl.sf.net/etl/grammar/0.2.1}:
        • name: Expressions
        • content:
          • OperatorDefinition{http://etl.sf.net/etl/grammar/0.2.1}:
            • documentation:
              • DocumentationLine{http://etl.sf.net/etl/grammar/0.2.1}:
                • text: /// E-like eventual send
            • name: EventualSendOp
            • associativity: yfx
            • precedence: 100
            • text: <-
            • syntax:
              • ExpressionStatement{http://etl.sf.net/etl/grammar/0.2.1}:
                • syntax:
                  • ObjectOp{http://etl.sf.net/etl/grammar/0.2.1}:
                    • name:
                      • ObjectName{http://etl.sf.net/etl/grammar/0.2.1}:
                        • prefix: aej
                        • name: EventualSendOp
                    • syntax:
                      • Sequence{http://etl.sf.net/etl/grammar/0.2.1}:
                        • syntax:
                          • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                            • name: target
                            • operator: =
                            • expression:
                              • OperandOp{http://etl.sf.net/etl/grammar/0.2.1}:
                                • position: left
                          • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                            • name: message
                            • operator: =
                            • expression:
                              • OperandOp{http://etl.sf.net/etl/grammar/0.2.1}:
                                • position: right
          • OperatorDefinition{http://etl.sf.net/etl/grammar/0.2.1}:
            • documentation:
              • DocumentationLine{http://etl.sf.net/etl/grammar/0.2.1}:
                • text: /// E-like when/catch/finally operator
            • isComposite:
              • Modifier{http://etl.sf.net/etl/grammar/0.2.1}:
                • value: composite
            • name: WhenOp
            • associativity: f
            • syntax:
              • ExpressionStatement{http://etl.sf.net/etl/grammar/0.2.1}:
                • syntax:
                  • ObjectOp{http://etl.sf.net/etl/grammar/0.2.1}:
                    • name:
                      • ObjectName{http://etl.sf.net/etl/grammar/0.2.1}:
                        • prefix: aej
                        • name: WhenOp
                    • syntax:
                      • Sequence{http://etl.sf.net/etl/grammar/0.2.1}:
                        • 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: when
                                  • 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: (
                                          • ExpressionStatement{http://etl.sf.net/etl/grammar/0.2.1}:
                                            • syntax:
                                              • ChoiceOp{http://etl.sf.net/etl/grammar/0.2.1}:
                                                • options:
                                                  • Sequence{http://etl.sf.net/etl/grammar/0.2.1}:
                                                    • syntax:
                                                      • KeywordStatement{http://etl.sf.net/etl/grammar/0.2.1}:
                                                        • text: var
                                                      • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                                                        • name: parameter
                                                        • operator: =
                                                        • expression:
                                                          • RefOp{http://etl.sf.net/etl/grammar/0.2.1}:
                                                            • name: ParameterFragment
                                                      • 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}:
                                                  • options:
                                                    • Sequence{http://etl.sf.net/etl/grammar/0.2.1}:
                                                      • syntax:
                                                        • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                                                          • name: value
                                                          • operator: =
                                                          • expression:
                                                            • ExpressionRef{http://etl.sf.net/etl/grammar/0.2.1}:
                                              • KeywordStatement{http://etl.sf.net/etl/grammar/0.2.1}:
                                                • text: )
                                      • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                                        • name: body
                                        • operator: =
                                        • expression:
                                          • RefOp{http://etl.sf.net/etl/grammar/0.2.1}:
                                            • name: MethodBlockFragment
                              • ExpressionStatement{http://etl.sf.net/etl/grammar/0.2.1}:
                                • syntax:
                                  • Sequence{http://etl.sf.net/etl/grammar/0.2.1}:
                                    • syntax:
                                      • ExpressionStatement{http://etl.sf.net/etl/grammar/0.2.1}:
                                        • syntax:
                                          • ZeroOrMoreOp{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: catch
                                                  • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                                                    • name: catchPart
                                                    • operator: +=
                                                    • expression:
                                                      • ObjectOp{http://etl.sf.net/etl/grammar/0.2.1}:
                                                        • name:
                                                          • ObjectName{http://etl.sf.net/etl/grammar/0.2.1}:
                                                            • prefix: ej
                                                            • name: CatchPart
                                                        • syntax:
                                                          • Sequence{http://etl.sf.net/etl/grammar/0.2.1}:
                                                            • syntax:
                                                              • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                                                                • name: specification
                                                                • operator: =
                                                                • expression:
                                                                  • Sequence{http://etl.sf.net/etl/grammar/0.2.1}:
                                                                    • syntax:
                                                                      • KeywordStatement{http://etl.sf.net/etl/grammar/0.2.1}:
                                                                        • text: (
                                                                      • ExpressionStatement{http://etl.sf.net/etl/grammar/0.2.1}:
                                                                        • syntax:
                                                                          • RefOp{http://etl.sf.net/etl/grammar/0.2.1}:
                                                                            • name: ParameterFragment
                                                                      • KeywordStatement{http://etl.sf.net/etl/grammar/0.2.1}:
                                                                        • text: )
                                                              • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                                                                • name: body
                                                                • operator: =
                                                                • expression:
                                                                  • RefOp{http://etl.sf.net/etl/grammar/0.2.1}:
                                                                    • name: MethodBlockFragment
                                      • ExpressionStatement{http://etl.sf.net/etl/grammar/0.2.1}:
                                        • syntax:
                                          • OptionalOp{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: finally
                                                  • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                                                    • name: finallyPart
                                                    • operator: =
                                                    • expression:
                                                      • RefOp{http://etl.sf.net/etl/grammar/0.2.1}:
                                                        • name: MethodBlockFragment
          • Context{http://etl.sf.net/etl/grammar/0.2.1}:
            • name: TypeExpressions
            • content:
              • OperatorDefinition{http://etl.sf.net/etl/grammar/0.2.1}:
                • documentation:
                  • DocumentationLine{http://etl.sf.net/etl/grammar/0.2.1}:
                    • text: /// vow type
                • isComposite:
                  • Modifier{http://etl.sf.net/etl/grammar/0.2.1}:
                    • value: composite
                • name: VowType
                • associativity: f
                • syntax:
                  • ExpressionStatement{http://etl.sf.net/etl/grammar/0.2.1}:
                    • syntax:
                      • ObjectOp{http://etl.sf.net/etl/grammar/0.2.1}:
                        • name:
                          • ObjectName{http://etl.sf.net/etl/grammar/0.2.1}:
                            • prefix: aej
                            • name: PrimitiveType
                        • syntax:
                          • Sequence{http://etl.sf.net/etl/grammar/0.2.1}:
                            • syntax:
                              • Let{http://etl.sf.net/etl/grammar/0.2.1}:
                                • name: name
                                • operator: =
                                • expression:
                                  • TokenOp{http://etl.sf.net/etl/grammar/0.2.1}:
                                    • value: vow
          • Context{http://etl.sf.net/etl/grammar/0.2.1}:
            • documentation:
              • DocumentationLine{http://etl.sf.net/etl/grammar/0.2.1}:
                • text: /// Redeclare context as default
            • defaultModifier:
              • Modifier{http://etl.sf.net/etl/grammar/0.2.1}:
                • value: default
            • name: TopLevel
           1: doctype public "-//IDN etl.sf.net//ETL//Grammar 0.2.1";
           2: /// This grammar defines asynchronous extensions for EJ language.
           3: /// These extensions are inspired by E programming language 
           4: /// (see http://www.erights.org for more details).
           5: /// 
           6: /// This grammar demonstrate how to plug into existing grammar.
           7: /// This situation is different from reuse of existing modules.
           8: grammar net.sf.etl.samples.ej.AsyncEJ {
           9: 	include "EJ.g.etl";
          10: 	namespace ej = "http://etl.sf.net/2006/samples/ej/0.1";
          11: 	namespace aej = "http://etl.sf.net/2006/samples/ej/AsyncEJ/0.1";
          12: 	context abstract ClassifierContent {
          13: 	};
          14: 	context InterfaceContents {
          15: 		/// on statement. It expands to for oneway messages 
          16: 		/// send$name(<parameters>). For other messages it expands
          17: 		/// to send$name(Resolver<RT> r, <parameters>)
          18: 		statement EventualMethodStatement {
          19: 			^ aej:EventualMethodStatement {
          20: 				% on {
          21: 					ref(TemplateParameters) ?;
          22: 					modifiers wrapper ej:Modifier.value {
          23: 						@ publicModifier = modifier public;
          24: 						@ abstractModifier = modifier abstract;
          25: 						@ onewayModifier = modifier oneway;
          26: 					};
          27: 					ref(MethodSignatureFragment);
          28: 				};
          29: 			};
          30: 		};
          31: 	};
          32: 	context ClassContents {
          33: 		/// This statement declares that class supports specific
          34: 		/// asynchronous interface.
          35: 		statement SupportsStatement {
          36: 			^ ej:SupportsStatement {
          37: 				% supports {
          38: 					@ supportedInterfaces += list, {
          39: 						expression(TypeExpressions);
          40: 					};
          41: 				};
          42: 			};
          43: 		};
          44: 		/// on statement. It expands to for oneway messages 
          45: 		/// send$name(<parameters>). For other messages it expands
          46: 		/// to send$name(Resolver<RT> r, <parameters>). The statement
          47: 		/// also causes appearance of inner message class that is used 
          48: 		/// to dispatch values.
          49: 		statement EventualMethodStatement {
          50: 			^ aej:EventualMethodStatement {
          51: 				% on {
          52: 					ref(TemplateParameters) ?;
          53: 					modifiers wrapper ej:Modifier.value {
          54: 						@ visibilityModifier = modifier public;
          55: 						@ visibilityModifier = modifier protected;
          56: 						@ visibilityModifier = modifier private;
          57: 						@ staticModifier = modifier static;
          58: 						@ strictfpModifier = modifier strictfp;
          59: 						@ abstractModifier = modifier abstract;
          60: 						@ finalModifier = modifier final;
          61: 						@ synchronizedModifier = modifier synchronized;
          62: 						@ onewayModifier = modifier oneway;
          63: 					};
          64: 					ref(MethodSignatureFragment);
          65: 				};
          66: 				@ body = ref(MethodBlockFragment) ?;
          67: 			};
          68: 		};
          69: 	};
          70: 	context Expressions {
          71: 		/// E-like eventual send
          72: 		op EventualSendOp(yfx, 100, <-) {
          73: 			^ aej:EventualSendOp {
          74: 				@ target = left;
          75: 				@ message = right;
          76: 			};
          77: 		};
          78: 		/// E-like when/catch/finally operator		
          79: 		op composite WhenOp(f) {
          80: 			^ aej:WhenOp {
          81: 				% when {
          82: 					%({
          83: 						% var {
          84: 							@ parameter = ref(ParameterFragment);
          85: 							% = {
          86: 								@ value = expression;
          87: 							};
          88: 						} | {
          89: 							@ value = expression;
          90: 						};
          91: 					} %);
          92: 					@ body = ref(MethodBlockFragment);
          93: 				};
          94: 				{
          95: 					% catch {
          96: 						@ catchPart += ^ ej:CatchPart {
          97: 							@ specification = %({
          98: 								ref(ParameterFragment);
          99: 							} %);
         100: 							@ body = ref(MethodBlockFragment);
         101: 						};
         102: 					} *;
         103: 					% finally {
         104: 						@ finallyPart = ref(MethodBlockFragment);
         105: 					} ?;
         106: 				};
         107: 			};
         108: 		};
         109: 	};
         110: 	context TypeExpressions {
         111: 		/// vow type
         112: 		op composite VowType(f) {
         113: 			^ aej:PrimitiveType {
         114: 				@ name = token(vow);
         115: 			};
         116: 		};
         117: 	};
         118: 	/// Redeclare context as default
         119: 	context default TopLevel {
         120: 	};
         121: };