TTCN-3 BNF v1.1.2

TTCN3Module   ::=   TTCN3ModuleKeyword TTCN3ModuleId [ ModuleParList ] BeginChar [ ModuleDefinitionsPart ] [ ModuleControlPart ] EndChar [ WithStatement ] [ SemiColon ]
TTCN3ModuleKeyword   ::=   "module"
TTCN3ModuleId   ::=   ModuleIdentifier [ DefinitiveIdentifier ]
ModuleIdentifier   ::=   Identifier
DefinitiveIdentifier   ::=   Dot ObjectIdentifierKeyword "{" DefinitiveObjIdComponentList "}"
DefinitiveObjIdComponentList   ::=   { DefinitiveObjIdComponent }+
DefinitiveObjIdComponent   ::=   NameForm | DefinitiveNumberForm | DefinitiveNameAndNumberForm
DefinitiveNumberForm   ::=   Number
DefinitiveNameAndNumberForm   ::=   Identifier "(" DefinitiveNumberForm ")"
ModuleParList   ::=   "(" ModulePar { "," ModulePar } ")"
ModulePar   ::=   [ InParKeyword ] ModuleParType ModuleParIdentifier [ AssignmentChar ConstantExpression ]
ModuleParType   ::=   Type
ModuleParIdentifier   ::=   Identifier
ModuleDefinitionsPart   ::=   ModuleDefinitionsList
ModuleDefinitionsList   ::=   { ModuleDefinition [ SemiColon ] }+
ModuleDefinition   ::=   ( TypeDef | ConstDef | TemplateDef | FunctionDef | SignatureDef | TestcaseDef | NamedAltDef | ImportDef | GroupDef | ExtFunctionDef | ExtConstDef ) [ WithStatement ]
TypeDef   ::=   TypeDefKeyword TypeDefBody
TypeDefBody   ::=   StructuredTypeDef | SubTypeDef
TypeDefKeyword   ::=   "type"
StructuredTypeDef   ::=   RecordDef | UnionDef | SetDef | RecordOfDef | SetOfDef | EnumDef | PortDef | ComponentDef
RecordDef   ::=   RecordKeyword StructDefBody
RecordKeyword   ::=   "record"
StructDefBody   ::=   ( StructTypeIdentifier [ StructDefFormalParList ] | AddressKeyword ) BeginChar [ StructFieldDef { "," StructFieldDef } ] EndChar
StructTypeIdentifier   ::=   Identifier
StructDefFormalParList   ::=   "(" StructDefFormalPar { "," StructDefFormalPar } ")"
StructDefFormalPar   ::=   FormalValuePar | FormalTypePar
StructFieldDef   ::=   Type StructFieldIdentifier [ ArrayDef ] [ SubTypeSpec ] [ OptionalKeyword ]
StructFieldIdentifier   ::=   Identifier
OptionalKeyword   ::=   "optional"
UnionDef   ::=   UnionKeyword UnionDefBody
UnionKeyword   ::=   "union"
UnionDefBody   ::=   ( StructTypeIdentifier [ StructDefFormalParList ] | AddressKeyword ) BeginChar UnionFieldDef { "," UnionFieldDef } EndChar
UnionFieldDef   ::=   Type StructFieldIdentifier [ ArrayDef ] [ SubTypeSpec ]
SetDef   ::=   SetKeyword StructDefBody
SetKeyword   ::=   "set"
RecordOfDef   ::=   RecordKeyword OfKeyword [ StringLength ] StructOfDefBody
OfKeyword   ::=   "of"
StructOfDefBody   ::=   Type ( StructTypeIdentifier | AddressKeyword ) [ SubTypeSpec ]
SetOfDef   ::=   SetKeyword OfKeyword [ StringLength ] StructOfDefBody
EnumDef   ::=   EnumKeyword ( EnumTypeIdentifier | AddressKeyword ) BeginChar NamedValueList EndChar
EnumKeyword   ::=   "enumerated"
EnumTypeIdentifier   ::=   Identifier
NamedValueList   ::=   NamedValue { "," NamedValue }
NamedValue   ::=   NamedValueIdentifier [ "(" Number ")" ]
NamedValueIdentifier   ::=   Identifier
SubTypeDef   ::=   Type ( SubTypeIdentifier | AddressKeyword ) [ ArrayDef ] [ SubTypeSpec ]
SubTypeIdentifier   ::=   Identifier
SubTypeSpec   ::=   AllowedValues | StringLength
AllowedValues   ::=   "(" ValueOrRange { "," ValueOrRange } ")"
ValueOrRange   ::=   IntegerRangeDef | SingleConstExpression
IntegerRangeDef   ::=   LowerBound ".." UpperBound
StringLength   ::=   LengthKeyword "(" SingleConstExpression [ ".." UpperBound ] ")"
LengthKeyword   ::=   "length"
PortType   ::=   [ GlobalModuleId Dot ] PortTypeIdentifier
PortDef   ::=   PortKeyword PortDefBody
PortDefBody   ::=   PortTypeIdentifier PortDefAttribs
PortKeyword   ::=   "port"
PortTypeIdentifier   ::=   Identifier
PortDefAttribs   ::=   MessageAttribs | ProcedureAttribs | MixedAttribs
MessageAttribs   ::=   MessageKeyword BeginChar { MessageList [ SemiColon ] }+ EndChar
MessageList   ::=   Direction AllOrTypeList
Direction   ::=   InParKeyword | OutParKeyword | InOutParKeyword
MessageKeyword   ::=   "message"
AllOrTypeList   ::=   AllKeyword | TypeList
AllKeyword   ::=   "all"
TypeList   ::=   Type { "," Type }
ProcedureAttribs   ::=   ProcedureKeyword BeginChar { ProcedureList [ SemiColon ] }+ EndChar
ProcedureKeyword   ::=   "procedure"
ProcedureList   ::=   Direction AllOrSignatureList
AllOrSignatureList   ::=   AllKeyword | SignatureList
SignatureList   ::=   Signature { "," Signature }
MixedAttribs   ::=   MixedKeyword BeginChar { MixedList [ SemiColon ] }+ EndChar
MixedKeyword   ::=   "mixed"
MixedList   ::=   Direction ProcOrTypeList
ProcOrTypeList   ::=   AllKeyword | ( ProcOrType { "," ProcOrType } )
ProcOrType   ::=   Signature | Type
ComponentDef   ::=   ComponentKeyword ComponentTypeIdentifier BeginChar [ ComponentDefList ] EndChar
ComponentKeyword   ::=   "component"
ComponentType   ::=   [ GlobalModuleId Dot ] ComponentTypeIdentifier
ComponentTypeIdentifier   ::=   Identifier
ComponentDefList   ::=   { ComponentElementDef [ SemiColon ] }+
ComponentElementDef   ::=   PortInstance | VarInstance | TimerInstance | ConstDef
PortInstance   ::=   PortKeyword PortType PortElement { "," PortElement }
PortElement   ::=   PortIdentifier [ ArrayDef ]
PortIdentifier   ::=   Identifier
ConstDef   ::=   ConstKeyword Type ConstList
ConstList   ::=   SingleConstDef { "," SingleConstDef }
SingleConstDef   ::=   ConstIdentifier [ ArrayDef ] AssignmentChar ConstantExpression
ConstKeyword   ::=   "const"
ConstIdentifier   ::=   Identifier
TemplateDef   ::=   TemplateKeyword BaseTemplate [ DerivedDef ] AssignmentChar TemplateBody
BaseTemplate   ::=   ( Type | Signature ) TemplateIdentifier [ "(" TemplateFormalParList ")" ]
TemplateKeyword   ::=   "template"
TemplateIdentifier   ::=   Identifier
DerivedDef   ::=   ModifiesKeyword TemplateRef
ModifiesKeyword   ::=   "modifies"
TemplateFormalParList   ::=   TemplateFormalPar { "," TemplateFormalPar }
TemplateFormalPar   ::=   FormalValuePar | FormalTemplatePar
TemplateBody   ::=   SimpleSpec | FieldSpecList | ArrayValueOrAttrib
SimpleSpec   ::=   SingleValueOrAttrib
FieldSpecList   ::=   "{" [ FieldSpec { "," FieldSpec } ] "}"
FieldSpec   ::=   FieldReference AssignmentChar TemplateBody
FieldReference   ::=   RecordRef | ArrayOrBitRef | ParRef
RecordRef   ::=   StructFieldIdentifier
ParRef   ::=   SignatureParIdentifier
SignatureParIdentifier   ::=   ValueParIdentifier
ArrayOrBitRef   ::=   "[" FieldOrBitNumber "]"
FieldOrBitNumber   ::=   SingleExpression
SingleValueOrAttrib   ::=   MatchingSymbol [ ExtraMatchingAttributes ] | SingleExpression [ ExtraMatchingAttributes ] | TemplateRefWithParList
ArrayValueOrAttrib   ::=   "{" ArrayElementSpecList "}"
ArrayElementSpecList   ::=   ArrayElementSpec { "," ArrayElementSpec }
ArrayElementSpec   ::=   NotUsedSymbol | TemplateBody
NotUsedSymbol   ::=   Dash
MatchingSymbol   ::=   Complement | Omit | AnyValue | AnyOrOmit | ValueList | IntegerRange | BitStringMatch | HexStringMatch | OctetStringMatch | CharStringMatch
ExtraMatchingAttributes   ::=   LengthMatch | IfPresentMatch
BitStringMatch   ::=   "'" { BinOrMatch } "'" B
BinOrMatch   ::=   Bin | AnyValue | AnyOrOmit
HexStringMatch   ::=   "'" { HexOrMatch } "'" H
HexOrMatch   ::=   Hex | AnyValue | AnyOrOmit
OctetStringMatch   ::=   "'" { OctOrMatch } "'" O
OctOrMatch   ::=   Oct | AnyValue | AnyOrOmit
CharStringMatch   ::=   PatternKeyword CharStringPattern { StringOp CharStringPattern }
CharStringPattern   ::=   CharStringValue | TemplateRefWithParList
PatternKeyword   ::=   "pattern"
Complement   ::=   ComplementKeyword ( SingleConstExpression | ValueList )
ComplementKeyword   ::=   "complement"
Omit   ::=   OmitKeyword
OmitKeyword   ::=   "omit"
AnyValue   ::=   "?"
AnyOrOmit   ::=   "*"
ValueList   ::=   "(" SingleConstExpression { "," SingleConstExpression }+ ")"
LengthMatch   ::=   StringLength
IfPresentMatch   ::=   IfPresentKeyword
IfPresentKeyword   ::=   "ifpresent"
IntegerRange   ::=   "(" LowerBound ".." UpperBound ")"
LowerBound   ::=   SingleConstExpression | Minus InfinityKeyword
UpperBound   ::=   SingleConstExpression | InfinityKeyword
InfinityKeyword   ::=   "infinity"
TemplateInstance   ::=   InLineTemplate
TemplateRefWithParList   ::=   [ GlobalModuleId Dot ] TemplateIdentifier [ TemplateActualParList ] | TemplateParIdentifier
TemplateRef   ::=   [ GlobalModuleId Dot ] TemplateIdentifier | TemplateParIdentifier
InLineTemplate   ::=   [ ( Type | Signature ) Colon ] [ DerivedDef AssignmentChar ] TemplateBody
TemplateActualParList   ::=   "(" TemplateActualPar { "," TemplateActualPar } ")"
TemplateActualPar   ::=   TemplateInstance
TemplateOps   ::=   MatchOp | ValueofOp
MatchOp   ::=   MatchKeyword "(" Expression "," TemplateInstance ")"
MatchKeyword   ::=   "match"
ValueofOp   ::=   ValueofKeyword "(" TemplateInstance ")"
ValueofKeyword   ::=   "valueof"
FunctionDef   ::=   FunctionKeyword FunctionIdentifier "(" [ FunctionFormalParList ] ")" [ RunsOnSpec ] [ ReturnType ] BeginChar FunctionBody EndChar
FunctionKeyword   ::=   "function"
FunctionIdentifier   ::=   Identifier
FunctionFormalParList   ::=   FunctionFormalPar { "," FunctionFormalPar }
FunctionFormalPar   ::=   FormalValuePar | FormalTimerPar | FormalTemplatePar | FormalPortPar
ReturnType   ::=   ReturnKeyword Type
ReturnKeyword   ::=   "return"
RunsOnSpec   ::=   RunsKeyword OnKeyword ( ComponentType | MTCKeyword )
RunsKeyword   ::=   "runs"
OnKeyword   ::=   "on"
MTCKeyword   ::=   "mtc"
FunctionBody   ::=   [ FunctionStatementOrDefList ]
FunctionStatementOrDefList   ::=   { FunctionStatementOrDef [ SemiColon ] }+
FunctionStatementOrDef   ::=   FunctionLocalDef | FunctionLocalInst | FunctionStatement
FunctionLocalInst   ::=   VarInstance | TimerInstance
FunctionLocalDef   ::=   ConstDef
FunctionStatement   ::=   ConfigurationStatements | TimerStatements | CommunicationStatements | BasicStatements | BehaviourStatements | VerdictStatements | SUTStatements
FunctionInstance   ::=   FunctionRef "(" [ FunctionActualParList ] ")"
FunctionRef   ::=   [ GlobalModuleId Dot ] FunctionIdentifier
FunctionActualParList   ::=   FunctionActualPar { "," FunctionActualPar }
FunctionActualPar   ::=   TimerRef | TemplateInstance | Port | ComponentRef
SignatureDef   ::=   SignatureKeyword SignatureIdentifier "(" [ SignatureFormalParList ] ")" [ ReturnType ] [ ExceptionSpec ]
SignatureKeyword   ::=   "signature"
SignatureIdentifier   ::=   Identifier
SignatureFormalParList   ::=   SignatureFormalPar { "," SignatureFormalPar }
SignatureFormalPar   ::=   FormalValuePar
ExceptionSpec   ::=   ExceptionKeyword "(" ExceptionTypeList ")"
ExceptionKeyword   ::=   "exception"
ExceptionTypeList   ::=   Type { "," Type }
Signature   ::=   [ GlobalModuleId Dot ] SignatureIdentifier
TestcaseDef   ::=   TestcaseKeyword TestcaseIdentifier "(" [ TestcaseFormalParList ] ")" ConfigSpec BeginChar FunctionBody EndChar
TestcaseKeyword   ::=   "testcase"
TestcaseIdentifier   ::=   Identifier
TestcaseFormalParList   ::=   TestcaseFormalPar { "," TestcaseFormalPar }
TestcaseFormalPar   ::=   FormalValuePar | FormalTemplatePar
ConfigSpec   ::=   RunsOnSpec [ SystemSpec ]
SystemSpec   ::=   SystemKeyword ComponentType
SystemKeyword   ::=   "system"
TestcaseInstance   ::=   ExecuteKeyword "(" TestcaseRef "(" [ TestcaseActualParList ] ")" [ "," TimerValue ] ")"
ExecuteKeyword   ::=   "execute"
TestcaseRef   ::=   [ GlobalModuleId Dot ] TestcaseIdentifier
TestcaseActualParList   ::=   TestcaseActualPar { "," TestcaseActualPar }
TestcaseActualPar   ::=   TemplateInstance
NamedAltDef   ::=   NamedKeyword AltKeyword NamedAltIdentifier "(" [ NamedAltFormalParList ] ")" BeginChar AltGuardList EndChar
NamedKeyword   ::=   "named"
NamedAltIdentifier   ::=   Identifier
NamedAltFormalParList   ::=   NamedAltFormalPar { "," NamedAltFormalPar }
NamedAltFormalPar   ::=   FormalValuePar | FormalTimerPar | FormalTemplatePar | FormalPortPar
NamedAltInstance   ::=   NamedAltRef "(" [ NamedAltActualParList ] ")"
NamedAltRef   ::=   [ GlobalModuleId Dot ] NamedAltIdentifier
NamedAltActualParList   ::=   NamedAltActualPar { "," NamedAltActualPar }
NamedAltActualPar   ::=   TimerRef | TemplateInstance | Port | ComponentRef
ImportDef   ::=   ImportKeyword ImportSpec
ImportKeyword   ::=   "import"
ImportSpec   ::=   ImportAllSpec | ImportGroupSpec | ImportTypeDefSpec | ImportTemplateSpec | ImportConstSpec | ImportTestcaseSpec | ImportNamedAltSpec | ImportFunctionSpec | ImportSignatureSpec
ImportAllSpec   ::=   AllKeyword [ DefKeyword ] ImportFromSpec
ImportFromSpec   ::=   FromKeyword ModuleId [ NonRecursiveKeyword ]
ModuleId   ::=   GlobalModuleId [ LanguageSpec ]
LanguageKeyword   ::=   "language"
LanguageSpec   ::=   LanguageKeyword FreeText
GlobalModuleId   ::=   ModuleIdentifier [ Dot ObjectIdentifierValue ]
DefKeyword   ::=   TypeDefKeyword | ConstKeyword | TemplateKeyword | TestcaseKeyword | FunctionKeyword | SignatureKeyword | NamedKeyword AltKeyword
NonRecursiveKeyword   ::=   "nonrecursive"
ImportGroupSpec   ::=   GroupKeyword GroupIdentifier { "," GroupIdentifier } ImportFromSpec
ImportTypeDefSpec   ::=   TypeDefKeyword TypeDefIdentifier { "," TypeDefIdentifier } ImportFromSpec
TypeDefIdentifier   ::=   StructTypeIdentifier | EnumTypeIdentifier | PortTypeIdentifier | ComponentTypeIdentifier | SubTypeIdentifier
ImportTemplateSpec   ::=   TemplateKeyword TemplateIdentifier { "," TemplateIdentifier } ImportFromSpec
ImportConstSpec   ::=   ConstKeyword ConstIdentifier { "," ConstIdentifier } ImportFromSpec
ImportTestcaseSpec   ::=   TestcaseKeyword TestcaseIdentifier { "," TestcaseIdentifier } ImportFromSpec
ImportFunctionSpec   ::=   FunctionKeyword FunctionIdentifier { "," FunctionIdentifier } ImportFromSpec
ImportSignatureSpec   ::=   SignatureKeyword SignatureIdentifier { "," SignatureIdentifier } ImportFromSpec
ImportNamedAltSpec   ::=   NamedKeyword AltKeyword NamedAltIdentifier { "," NamedAltIdentifier } ImportFromSpec
GroupDef   ::=   GroupKeyword GroupIdentifier BeginChar [ ModuleDefinitionsPart ] EndGroupChar
GroupKeyword   ::=   "group"
EndGroupChar   ::=   "}"
GroupIdentifier   ::=   Identifier
ExtFunctionDef   ::=   ExtKeyword FunctionKeyword ExtFunctionIdentifier "(" [ FunctionFormalParList ] ")" [ ReturnType ]
ExtKeyword   ::=   "external"
ExtFunctionIdentifier   ::=   Identifier
ExtConstDef   ::=   ExtKeyword ConstKeyword Type ExtConstIdentifier
ExtConstIdentifier   ::=   Identifier
ModuleControlPart   ::=   ControlKeyword BeginChar ModuleControlBody EndChar [ WithStatement ] [ SemiColon ]
ControlKeyword   ::=   "control"
ModuleControlBody   ::=   [ ControlStatementOrDefList ]
ControlStatementOrDefList   ::=   { ControlStatementOrDef [ SemiColon ] }+
ControlStatementOrDef   ::=   FunctionLocalInst | ControlStatement | FunctionLocalDef
ControlStatement   ::=   TimerStatements | BasicStatements | BehaviourStatements | SUTStatements
VarInstance   ::=   VarKeyword Type VarList
VarList   ::=   SingleVarInstance { "," SingleVarInstance }
SingleVarInstance   ::=   VarIdentifier [ ArrayDef ] [ AssignmentChar VarInitialValue ]
VarInitialValue   ::=   Expression
VarKeyword   ::=   "var"
VarIdentifier   ::=   Identifier
VariableRef   ::=   ( VarIdentifier | ValueParIdentifier ) [ ExtendedFieldReference ]
TimerInstance   ::=   TimerKeyword TimerIdentifier [ ArrayDef ] [ AssignmentChar TimerValue ]
TimerKeyword   ::=   "timer"
TimerIdentifier   ::=   Identifier
TimerValue   ::=   SingleExpression
TimerRef   ::=   TimerIdentifier [ ArrayOrBitRef ] | TimerParIdentifier [ ArrayOrBitRef ]
ConfigurationStatements   ::=   ConnectStatement | MapStatement | DisconnectStatement | UnmapStatement | DoneStatement | StartTCStatement | StopTCStatement
ConfigurationOps   ::=   CreateOp | SelfOp | SystemOp | MTCOp | RunningOp
CreateOp   ::=   ComponentType Dot CreateKeyword
SystemOp   ::=   "system"
SelfOp   ::=   "self"
MTCOp   ::=   MTCKeyword
DoneStatement   ::=   ComponentId Dot DoneKeyword
ComponentId   ::=   ComponentIdentifier | ( AnyKeyword | AllKeyword ) ComponentKeyword
DoneKeyword   ::=   "done"
RunningOp   ::=   ComponentId Dot RunningKeyword
RunningKeyword   ::=   "running"
CreateKeyword   ::=   "create"
ConnectStatement   ::=   ConnectKeyword PortSpec
ConnectKeyword   ::=   "connect"
PortSpec   ::=   "(" PortRef "," PortRef ")"
PortRef   ::=   ComponentRef Colon Port
ComponentRef   ::=   ComponentIdentifier | SystemOp | SelfOp | MTCOp
DisconnectStatement   ::=   DisconnectKeyword PortSpec
DisconnectKeyword   ::=   "disconnect"
MapStatement   ::=   MapKeyword PortSpec
MapKeyword   ::=   "map"
UnmapStatement   ::=   UnmapKeyword PortSpec
UnmapKeyword   ::=   "unmap"
StartTCStatement   ::=   ComponentIdentifier Dot StartKeyword "(" FunctionInstance ")"
StartKeyword   ::=   "start"
StopTCStatement   ::=   StopKeyword
ComponentIdentifier   ::=   VariableRef | FunctionInstance
Port   ::=   ( PortIdentifier | PortParIdentifier ) [ ArrayOrBitRef ]
CommunicationStatements   ::=   SendStatement | CallStatement | ReplyStatement | RaiseStatement | ReceiveStatement | TriggerStatement | GetCallStatement | GetReplyStatement | CatchStatement | CheckStatement | ClearStatement | StartStatement | StopStatement
SendStatement   ::=   Port Dot PortSendOp
PortSendOp   ::=   SendOpKeyword "(" SendParameter ")" [ ToClause ]
SendOpKeyword   ::=   "send"
SendParameter   ::=   TemplateInstance
ToClause   ::=   ToKeyword AddressRef
ToKeyword   ::=   "to"
AddressRef   ::=   VariableRef | FunctionInstance
CallStatement   ::=   Port Dot PortCallOp [ PortCallBody ]
PortCallOp   ::=   CallOpKeyword "(" CallParameters ")" [ ToClause ]
CallOpKeyword   ::=   "call"
CallParameters   ::=   TemplateInstance [ "," CallTimerValue ]
CallTimerValue   ::=   TimerValue | NowaitKeyword
NowaitKeyword   ::=   "nowait"
PortCallBody   ::=   BeginChar CallBodyStatementList EndChar
CallBodyStatementList   ::=   { CallBodyStatement [ SemiColon ] }+
CallBodyStatement   ::=   CallBodyGuard StatementBlock
CallBodyGuard   ::=   AltGuardChar CallBodyOps
CallBodyOps   ::=   GetReplyStatement | CatchStatement
ReplyStatement   ::=   Port Dot PortReplyOp
PortReplyOp   ::=   ReplyKeyword "(" TemplateInstance [ ReplyValue ] ")" [ ToClause ]
ReplyKeyword   ::=   "reply"
ReplyValue   ::=   ValueKeyword Expression
RaiseStatement   ::=   Port Dot PortRaiseOp
PortRaiseOp   ::=   RaiseKeyword "(" Signature "," TemplateInstance ")" [ ToClause ]
RaiseKeyword   ::=   "raise"
ReceiveStatement   ::=   PortOrAny Dot PortReceiveOp
PortOrAny   ::=   Port | AnyKeyword PortKeyword
PortReceiveOp   ::=   ReceiveOpKeyword [ "(" ReceiveParameter ")" ] [ FromClause ] [ PortRedirect ]
ReceiveOpKeyword   ::=   "receive"
ReceiveParameter   ::=   TemplateInstance
FromClause   ::=   FromKeyword AddressRef
FromKeyword   ::=   "from"
PortRedirect   ::=   PortRedirectSymbol ( ValueSpec [ SenderSpec ] | SenderSpec )
PortRedirectSymbol   ::=   "->"
ValueSpec   ::=   ValueKeyword VariableRef
ValueKeyword   ::=   "value"
SenderSpec   ::=   SenderKeyword VariableRef
SenderKeyword   ::=   "sender"
TriggerStatement   ::=   PortOrAny Dot PortTriggerOp
PortTriggerOp   ::=   TriggerOpKeyword [ "(" ReceiveParameter ")" ] [ FromClause ] [ PortRedirect ]
TriggerOpKeyword   ::=   "trigger"
GetCallStatement   ::=   PortOrAny Dot PortGetCallOp
PortGetCallOp   ::=   GetCallOpKeyword [ "(" ReceiveParameter ")" ] [ FromClause ] [ PortRedirectWithParam ]
GetCallOpKeyword   ::=   "getcall"
PortRedirectWithParam   ::=   PortRedirectSymbol RedirectSpec
RedirectSpec   ::=   ValueSpec [ ParaSpec ] [ SenderSpec ] | ParaSpec [ SenderSpec ] | SenderSpec
ParaSpec   ::=   ParaKeyword ParaAssignmentList
ParaKeyword   ::=   "param"
ParaAssignmentList   ::=   "(" ( AssignmentList | VariableList ) ")"
AssignmentList   ::=   VariableAssignment { "," VariableAssignment }
VariableAssignment   ::=   VariableRef AssignmentChar ParameterIdentifier
ParameterIdentifier   ::=   ValueParIdentifier | TimerParIdentifier | TemplateParIdentifier | PortParIdentifier
VariableList   ::=   VariableEntry { "," VariableEntry }
VariableEntry   ::=   VariableRef | NotUsedSymbol
GetReplyStatement   ::=   PortOrAny Dot PortGetReplyOp
PortGetReplyOp   ::=   GetReplyOpKeyword [ "(" ReceiveParameter [ ValueMatchSpec ] ")" ] [ FromClause ] [ PortRedirectWithParam ]
GetReplyOpKeyword   ::=   "getreply"
ValueMatchSpec   ::=   ValueKeyword TemplateInstance
CheckStatement   ::=   PortOrAny Dot PortCheckOp
PortCheckOp   ::=   CheckOpKeyword [ "(" CheckParameter ")" ]
CheckOpKeyword   ::=   "check"
CheckParameter   ::=   PortReceiveOp | PortGetCallOp | PortGetReplyOp | PortCatchOp | [ FromClause ] [ PortRedirectSymbol SenderSpec ]
CatchStatement   ::=   PortOrAny Dot PortCatchOp
PortCatchOp   ::=   CatchOpKeyword [ "(" CatchOpParameter ")" ] [ FromClause ] [ PortRedirect ]
CatchOpKeyword   ::=   "catch"
CatchOpParameter   ::=   Signature "," TemplateInstance | TimeoutKeyword
ClearStatement   ::=   PortOrAll Dot PortClearOp
PortOrAll   ::=   Port | AllKeyword PortKeyword
PortClearOp   ::=   ClearOpKeyword
ClearOpKeyword   ::=   "clear"
StartStatement   ::=   PortOrAll Dot PortStartOp
PortStartOp   ::=   StartKeyword
StopStatement   ::=   PortOrAll Dot PortStopOp
PortStopOp   ::=   StopKeyword
StopKeyword   ::=   "stop"
AnyKeyword   ::=   "any"
TimerStatements   ::=   StartTimerStatement | StopTimerStatement | TimeoutStatement
TimerOps   ::=   ReadTimerOp | RunningTimerOp
StartTimerStatement   ::=   TimerRef Dot StartKeyword [ "(" TimerValue ")" ]
StopTimerStatement   ::=   TimerRefOrAll Dot StopKeyword
TimerRefOrAll   ::=   TimerRef | AllKeyword TimerKeyword
ReadTimerOp   ::=   TimerRef Dot ReadKeyword
ReadKeyword   ::=   "read"
RunningTimerOp   ::=   TimerRefOrAny Dot RunningKeyword
TimeoutStatement   ::=   TimerRefOrAny Dot TimeoutKeyword
TimerRefOrAny   ::=   TimerRef | AnyKeyword TimerKeyword
TimeoutKeyword   ::=   "timeout"
Type   ::=   PredefinedType | ReferencedType
PredefinedType   ::=   BitStringKeyword | BooleanKeyword | CharStringKeyword | UniversalCharString | CharKeyword | UniversalChar | IntegerKeyword | OctetStringKeyword | ObjectIdentifierKeyword | HexStringKeyword | VerdictKeyword | FloatKeyword | AddressKeyword
BitStringKeyword   ::=   "bitstring"
BooleanKeyword   ::=   "boolean"
IntegerKeyword   ::=   "integer"
OctetStringKeyword   ::=   "octetstring"
ObjectIdentifierKeyword   ::=   "objid"
HexStringKeyword   ::=   "hexstring"
VerdictKeyword   ::=   "verdict"
FloatKeyword   ::=   "float"
AddressKeyword   ::=   "address"
CharStringKeyword   ::=   "charstring"
UniversalCharString   ::=   UniversalKeyword CharStringKeyword
UniversalKeyword   ::=   "universal"
CharKeyword   ::=   "char"
UniversalChar   ::=   UniversalKeyword CharKeyword
ReferencedType   ::=   [ GlobalModuleId Dot ] TypeReference [ ExtendedFieldReference ]
TypeReference   ::=   StructTypeIdentifier [ TypeActualParList ] | EnumTypeIdentifier | SubTypeIdentifier | TypeParIdentifier | ComponentTypeIdentifier
TypeActualParList   ::=   "(" TypeActualPar { "," TypeActualPar } ")"
TypeActualPar   ::=   SingleConstExpression | Type
ArrayDef   ::=   { "[" ArrayBounds [ ".." ArrayBounds ] "]" }+
ArrayBounds   ::=   SingleConstExpression
Value   ::=   PredefinedValue | ReferencedValue
PredefinedValue   ::=   BitStringValue | BooleanValue | CharStringValue | IntegerValue | OctetStringValue | ObjectIdentifierValue | HexStringValue | VerdictValue | EnumeratedValue | FloatValue | AddressValue
BitStringValue   ::=   Bstring
BooleanValue   ::=   "true" | false
IntegerValue   ::=   Number
OctetStringValue   ::=   Ostring
ObjectIdentifierValue   ::=   ObjectIdentifierKeyword "{" ObjIdComponentList "}"
ObjIdComponentList   ::=   { ObjIdComponent }+
ObjIdComponent   ::=   NameForm | NumberForm | NameAndNumberForm
NumberForm   ::=   Number | ReferencedValue
NameAndNumberForm   ::=   Identifier NumberForm
NameForm   ::=   Identifier
HexStringValue   ::=   Hstring
VerdictValue   ::=   "pass" | fail | inconc | none | error
EnumeratedValue   ::=   NamedValueIdentifier
CharStringValue   ::=   Cstring | Quadruple | ReferencedValue
Quadruple   ::=   "(" Group "," Plane "," Row "," Cell ")"
Group   ::=   Number
Plane   ::=   Number
Row   ::=   Number
Cell   ::=   Number
FloatValue   ::=   FloatDotNotation | FloatENotation
FloatDotNotation   ::=   Number Dot DecimalNumber
FloatENotation   ::=   Number [ Dot DecimalNumber ] Exponential [ Minus ] Number
Exponential   ::=   E
ReferencedValue   ::=   ValueReference [ ExtendedFieldReference ]
ValueReference   ::=   [ GlobalModuleId Dot ] ConstIdentifier | ExtConstIdentifier | ValueParIdentifier | ModuleParIdentifier | VarIdentifier
Number   ::=   ( NonZeroNum { Num } ) | 0
NonZeroNum   ::=   1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
DecimalNumber   ::=   { Num }
Num   ::=   0 | NonZeroNum
Bstring   ::=   "'" { Bin } "'" B
Bin   ::=   0 | 1
Hstring   ::=   "'" { Hex } "'" H
Hex   ::=   Num | A | B | C | D | E | F | a | b | c | d | e | f
Ostring   ::=   "'" { Oct } "'" O
Oct   ::=   Hex Hex
Cstring   ::=   """ { Char } """
Char   ::=  
Identifier   ::=   Alpha { AlphaNum | Underscore }
Alpha   ::=   UpperAlpha | LowerAlpha
AlphaNum   ::=   Alpha | Num
UpperAlpha   ::=   A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z
LowerAlpha   ::=   a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z
ExtendedAlphaNum   ::=  
FreeText   ::=   """ { ExtendedAlphaNum } """
AddressValue   ::=   "null"
InParKeyword   ::=   "in"
OutParKeyword   ::=   "out"
InOutParKeyword   ::=   "inout"
FormalValuePar   ::=   [ ( InParKeyword | InOutParKeyword | OutParKeyword ) ] Type ValueParIdentifier
ValueParIdentifier   ::=   Identifier
FormalTypePar   ::=   [ InParKeyword ] TypeParIdentifier
TypeParIdentifier   ::=   Identifier
FormalPortPar   ::=   [ InOutParKeyword ] PortTypeIdentifier PortParIdentifier
PortParIdentifier   ::=   Identifier
FormalTimerPar   ::=   [ InOutParKeyword ] TimerKeyword TimerParIdentifier
TimerParIdentifier   ::=   Identifier
FormalTemplatePar   ::=   [ InParKeyword ] TemplateKeyword Type TemplateParIdentifier
TemplateParIdentifier   ::=   Identifier
WithStatement   ::=   WithKeyword WithAttribList
WithKeyword   ::=   "with"
WithAttribList   ::=   "{" MultiWithAttrib "}"
MultiWithAttrib   ::=   { SingleWithAttrib [ SemiColon ] }+
SingleWithAttrib   ::=   AttribKeyword [ OverrideKeyword ] [ AttribQualifier ] AttribSpec
AttribKeyword   ::=   EncodeKeyword | DisplayKeyword | ExtensionKeyword
EncodeKeyword   ::=   "encode"
DisplayKeyword   ::=   "display"
ExtensionKeyword   ::=   "extension"
OverrideKeyword   ::=   "override"
AttribQualifier   ::=   "(" DefOrFieldRefList ")"
DefOrFieldRefList   ::=   DefOrFieldRef { "," DefOrFieldRef }
DefOrFieldRef   ::=   DefinitionRef | FieldReference
DefinitionRef   ::=   StructTypeIdentifier | EnumTypeIdentifier | PortTypeIdentifier | ComponentTypeIdentifier | SubTypeIdentifier | ConstIdentifier | TemplateIdentifier | NamedAltIdentifier | TestcaseIdentifier | FunctionIdentifier | SignatureIdentifier
AttribSpec   ::=   FreeText
BehaviourStatements   ::=   TestcaseInstance | FunctionInstance | ReturnStatement | AltConstruct | InterleavedConstruct | LabelStatement | GotoStatement | ActivateStatement | DeactivateStatement | NamedAltInstance
VerdictStatements   ::=   SetLocalVerdict
VerdictOps   ::=   GetLocalVerdict
SetLocalVerdict   ::=   SetVerdictKeyword "(" SingleExpression ")"
SetVerdictKeyword   ::=   VerdictKeyword Dot SetKeyword
GetLocalVerdict   ::=   VerdictKeyword Dot GetKeyword
GetKeyword   ::=   "get"
SUTStatements   ::=   SUTAction "(" ( FreeText | TemplateRefWithParList ) ")"
SUTAction   ::=   SUTKeyword Dot ActionKeyword
SUTKeyword   ::=   "sut"
ActionKeyword   ::=   "action"
ReturnStatement   ::=   ReturnKeyword [ Expression ]
AltConstruct   ::=   AltKeyword BeginChar AltGuardList EndChar
AltKeyword   ::=   "alt"
AltGuardList   ::=   { AltGuardElement [ SemiColon ] }+ [ ElseStatement [ SemiColon ] ]
AltGuardElement   ::=   GuardStatement | ExpandStatement
GuardStatement   ::=   AltGuardChar GuardOp StatementBlock
ExpandStatement   ::=   "[" ExpandKeyword "]" NamedAltInstance
ElseStatement   ::=   "[" ElseKeyword "]" StatementBlock
ExpandKeyword   ::=   "expand"
AltGuardChar   ::=   "[" [ BooleanExpression ] "]"
GuardOp   ::=   TimeoutStatement | ReceiveStatement | TriggerStatement | GetCallStatement | CatchStatement | CheckStatement | GetReplyStatement | DoneStatement
StatementBlock   ::=   BeginChar [ FunctionStatementOrDefList ] EndChar
InterleavedConstruct   ::=   InterleavedKeyword BeginChar InterleavedGuardList EndChar
InterleavedKeyword   ::=   "interleave"
InterleavedGuardList   ::=   { InterleavedGuardElement [ SemiColon ] }+
InterleavedGuardElement   ::=   InterleavedGuard InterleavedAction
InterleavedGuard   ::=   "[" "]" GuardOp
InterleavedAction   ::=   StatementBlock
LabelStatement   ::=   LabelKeyword LabelIdentifier
LabelKeyword   ::=   "label"
LabelIdentifier   ::=   Identifier
GotoStatement   ::=   GotoKeyword ( LabelIdentifier | AltKeyword )
GotoKeyword   ::=   "goto"
ActivateStatement   ::=   ActivateKeyword "(" NamedAltList ")"
ActivateKeyword   ::=   "activate"
NamedAltList   ::=   NamedAltInstance { "," NamedAltInstance }
DeactivateStatement   ::=   DeactivateKeyword [ "(" NamedAltRefList ")" ]
DeactivateKeyword   ::=   "deactivate"
NamedAltRefList   ::=   NamedAltRef { "," NamedAltRef }
BasicStatements   ::=   Assignment | LogStatement | LoopConstruct | ConditionalConstruct
Expression   ::=   SingleExpression | CompoundExpression
CompoundExpression   ::=   FieldExpressionList | ArrayExpression
FieldExpressionList   ::=   "{" FieldExpressionSpec { "," FieldExpressionSpec } "}"
FieldExpressionSpec   ::=   FieldReference AssignmentChar Expression
ArrayExpression   ::=   "{" [ ArrayElementExpressionList ] "}"
ArrayElementExpressionList   ::=   NotUsedOrExpression { "," NotUsedOrExpression }
NotUsedOrExpression   ::=   Expression | NotUsedSymbol
ConstantExpression   ::=   SingleConstExpression | CompoundConstExpression
SingleConstExpression   ::=   SingleExpression
BooleanExpression   ::=   SingleExpression
CompoundConstExpression   ::=   FieldConstExpressionList | ArrayConstExpression
FieldConstExpressionList   ::=   "{" FieldConstExpressionSpec { "," FieldConstExpressionSpec } "}"
FieldConstExpressionSpec   ::=   FieldReference AssignmentChar ConstantExpression
ArrayConstExpression   ::=   "{" [ ArrayElementConstExpressionList ] "}"
ArrayElementConstExpressionList   ::=   ConstantExpression { "," ConstantExpression }
Assignment   ::=   VariableRef ":=" Expression
SingleExpression   ::=   SimpleExpression { BitOp SimpleExpression }
SimpleExpression   ::=   SubExpression [ RelOp SubExpression ]
SubExpression   ::=   Product [ ShiftOp Product ]
Product   ::=   Term { AddOp Term }
Term   ::=   Factor { MultiplyOp Factor }
Factor   ::=   [ UnaryOp ] Primary
Primary   ::=   OpCall | Value | "(" SingleExpression ")"
ExtendedFieldReference   ::=   { ( Dot StructFieldIdentifier | ArrayOrBitRef ) }+
OpCall   ::=   ConfigurationOps | VerdictOps | TimerOps | TestcaseInstance | FunctionInstance | TemplateOps
AddOp   ::=   "+" | "-"
MultiplyOp   ::=   "*" | "/" | mod | rem
UnaryOp   ::=   "+" | "-" | not | not4b
RelOp   ::=   "==" | "<" | ">" | "!=" | ">=" | "<="
BitOp   ::=   "and4b" | xor4b | or4b | and | xor | or | StringOp
StringOp   ::=   "&"
ShiftOp   ::=   "<<" | ">>" | "<@" | "@>"
LogStatement   ::=   LogKeyword "(" [ FreeText ] ")"
LogKeyword   ::=   "log"
LoopConstruct   ::=   ForStatement | WhileStatement | DoWhileStatement
ForStatement   ::=   ForKeyword "(" Initial [ SemiColon ] Final [ SemiColon ] Step ")" StatementBlock
ForKeyword   ::=   "for"
Initial   ::=   VarInstance | Assignment
Final   ::=   BooleanExpression
Step   ::=   Assignment
WhileStatement   ::=   WhileKeyword "(" BooleanExpression ")" StatementBlock
WhileKeyword   ::=   "while"
DoWhileStatement   ::=   DoKeyword StatementBlock WhileKeyword "(" BooleanExpression ")"
DoKeyword   ::=   "do"
ConditionalConstruct   ::=   IfKeyword "(" BooleanExpression ")" StatementBlock { ElseIfClause } [ ElseClause ]
IfKeyword   ::=   "if"
ElseIfClause   ::=   ElseKeyword IfKeyword "(" BooleanExpression ")" StatementBlock
ElseKeyword   ::=   "else"
ElseClause   ::=   ElseKeyword StatementBlock
Dot   ::=   "."
Dash   ::=   "-"
Minus   ::=   Dash
SemiColon   ::=   ";"