# HTML Version of ABNF for `<mockup_bnf.txt>`

This HTML version of ABNF is automatically generated using the abnf2html $Revision: 1.4 $ tool provided by Inet Technologies, Inc. written by Brian Bidulock. The protocol syntax is presented in ABNF according to RFC 2234 and RFC 822. This version of ABNF is for informational purposes only. It is intended as a tool to help read the ABNF. Errors may have been introduced in translating to HTML.

This ABNF browser was generated from file <mockup_bnf.txt> on Tue Jul 20 17:07:27 CEDT 2004 .

This file consists of:

- ABNF Specification,
- Symbol Cross Reference Table, and,
- General Directions.

## ABNF Specification

The productions for the ABNF specification are provided below.

ABNF Productions
Rule Name | Production or Comment
--- | ---
TTCN3Module | = | TTCN3ModuleKeyword TTCN3ModuleId BeginChar [ModuleDefinitionsPart] [ModuleControlPart] EndChar [WithStatement] [SemiColon]
TTCN3ModuleKeyword | = | "module"
TTCN3ModuleId | = | ModuleIdentifier [DefinitiveIdentifier]
ModuleIdentifier | = | Identifier
DefinitiveIdentifier | = | Dot ObjectIdentifierKeyword "{" DefinitiveObjIdComponentList "}"
DefinitiveObjIdComponentList | = | 1*DefinitiveObjIdComponent
DefinitiveObjIdComponent | = | NameForm | DefinitiveNumberForm | DefinitiveNameAndNumberForm
DefinitiveNumberForm | = | Number
DefinitiveNameAndNumberForm | = | Identifier "(" DefinitiveNumberForm ")"
ModuleDefinitionsPart | = | ModuleDefinitionsList
ModuleDefinitionsList | = | 1*( ModuleDefinition ) [SemiColon]
ModuleDefinition | = | ( TypeDef | ConstDef | TemplateDef | ModuleParDef | FunctionDef | SignatureDef | TestcaseDef | AltstepDef | 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
| ; STATIC SEMANTICS - FormalValuePar shall resolve to an in parameter
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"
SetstateDef | = | PortKeyword . SetstateKeyword ( SingleExpression "," [ FreeText | TemplateInstance
SetstateKeyword | = | "setstate"
RecordOfDef | = | RecordKeyword [StringLength] OfKeyword StructOfDefBody
OfKeyword | = | "of"
StructOfDefBody | = | Type ( StructTypeIdentifier | AddressKeyword ) [SubTypeSpec]
SetOfDef | = | SetKeyword [StringLength] OfKeyword StructOfDefBody
EnumDef | = | EnumKeyword ( EnumTypeIdentifier | AddressKeyword ) BeginChar EnumerationList EndChar
EnumKeyword | = | "enumerated"
EnumTypeIdentifier | = | Identifier
EnumerationList | = | Enumeration *( "," Enumeration )
Enumeration | = | EnumerationIdentifier ["(" [Minus] Number ")"]
EnumerationIdentifier | = | Identifier
SubTypeDef | = | Type ( SubTypeIdentifier | AddressKeyword ) [ArrayDef] [SubTypeSpec]
SubTypeIdentifier | = | Identifier
SubTypeSpec | = | AllowedValues | StringLength
| ; STATIC SEMANTICS - AllowedValues shall be of the same type as the field being subtyped
AllowedValues | = | "(" ValueOrRange *( "," ValueOrRange ) ")"
ValueOrRange | = | RangeDef | ConstantExpression
| ; STATIC SEMANTICS - RangeDef production shall only be used with integer, charstring, universal charstring or float based types
| ; STATIC SEMANTICS - When subtyping charstring or universal charstring range and values shall not be mixed in the same SubTypeSpec
RangeDef | = | LowerBound ".." UpperBound
StringLength | = | LengthKeyword "(" SingleConstExpression [".." UpperBound] ")"
| ; STATIC SEMANTICS - StringLength shall only be used with String types or to limit set of and record of. SingleConstExpression and UpperBound shall evaluate to non-negative integer values (in case of UpperBound including infinity)
LengthKeyword | = | "length"
PortType | = | [GlobalModuleId Dot] PortTypeIdentifier
PortDef | = | PortKeyword PortDefBody
PortDefBody | = | PortTypeIdentifier PortDefAttribs
PortKeyword | = | "port"
PortTypeIdentifier | = | Identifier
PortDefAttribs | = | MessageAttribs | ProcedureAttribs | MixedAttribs
MessageAttribs | = | MessageKeyword BeginChar 1*( MessageList [SemiColon] ) EndChar
MessageList | = | Direction AllOrTypeList
Direction | = | InParKeyword | OutParKeyword | InOutParKeyword
MessageKeyword | = | "message"
AllOrTypeList | = | AllKeyword | TypeList
AllKeyword | = | "all"
TypeList | = | Type *( "," Type )
ProcedureAttribs | = | ProcedureKeyword BeginChar 1*( ProcedureList [SemiColon] ) EndChar
ProcedureKeyword | = | "procedure"
ProcedureList | = | Direction AllOrSignatureList
AllOrSignatureList | = | AllKeyword | SignatureList
SignatureList | = | Signature *( "," Signature )
MixedAttribs | = | MixedKeyword BeginChar 1*( 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]
| ; STATIC SEMANTICS - The Value of ArrayDef must be a one-dimensional array index, if present
PortIdentifier | = | Identifier
ConstDef | = | ConstKeyword Type ConstList
ConstList | = | SingleConstDef *( "," SingleConstDef )
SingleConstDef | = | ConstIdentifier [ArrayDef] AssignmentChar ConstantExpression
| ; STATIC SEMANTICS - The Value of the ConstantExpression shall be of the same type as the stated type for the constants
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
| ; STATIC SEMANTICS - FormalValuePar shall resolve to an in parameter
TemplateBody | = | SimpleSpec | FieldSpecList | ArrayValueOrAttrib
| ; STATIC SEMANTICS - Within TeplateBody the ArrayValueOrAttrib can be used for array, record, record of and set of types.
SimpleSpec | = | SingleValueOrAttrib
FieldSpecList | = | "{" [FieldSpec *( "," FieldSpec )] "}"
FieldSpec | = | FieldReference AssignmentChar TemplateBody
FieldReference | = | StructFieldRef | ArrayOrBitRef | ParRef
| ; STATIC SEMANTICS - Within FieldReference ArrayOrBitRef can be used in modified templates only
StructFieldRef | = | StructFieldIdentifier | PredefinedType | TypeReference
| ; STATIC SEMANTICS - PredefinedType and TypeReference shall be used for anytype value notation only. PredefinedType shall not be AnyTypeKeyword.
ParRef | = | SignatureParIdentifier
| ; OPERATIONAL SEMANTICS - SignatureParIdentifier shall be a formal parameter Identifier from the associated signature definition
SignatureParIdentifier | = | ValueParIdentifier
ArrayOrBitRef | = | "[" FieldOrBitNumber "]"
| ; STATIC SEMANTICS - ArrayRef shall be optionally used for array types and ASN.1 SET OF and SEQUENCE OF and TTCN-3 record of and set of. The same notation can be used for a Bit reference inside an ASN.1 or TTCN-3 bitstring type
FieldOrBitNumber | = | SingleExpression
| ; STATIC SEMANTICS - SingleExpression will resolve to a value of integer type
SingleValueOrAttrib | = | MatchingSymbol [ExtraMatchingAttributes] | SingleExpression [ExtraMatchingAttributes] | TemplateRefWithParList
| ; STATIC SEMANTIC - VariableIdentifier (accessed via singleExpression) may only be used in in-line template definitions to reference variables in the current scope
ArrayValueOrAttrib | = | "{" ArrayElementSpecList "}"
ArrayElementSpecList | = | ArrayElementSpec *( "," ArrayElementSpec )
ArrayElementSpec | = | NotUsedSymbol | TemplateBody
NotUsedSymbol | = | Dash
MatchingSymbol | = | Complement | AnyValue | AnyOrOmit | ValueOrAttribList | Range | BitStringMatch | HexStringMatch | OctetStringMatch | CharStringMatch | SubsetMatch | SupersetMatch | PermutationMatch
PermutationMatch | = | PermutationKeyword ValueList
PermutationKeyword | = | "permutation"
ExtraMatchingAttributes | = | LengthMatch | IfPresentMatch | 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 Cstring
PatternKeyword | = | "pattern"
Complement | = | ComplementKeyword ValueList
ComplementKeyword | = | "complement"
ValueList | = | "(" ConstantExpression *( "," ConstantExpression ) ")"
SubsetMatch | = | SubsetKeyword ValueList
| ; STATIC SEMANTIC - Subset matching shall only be used with the set of type
SubsetKeyword | = | "subset"
SupersetMatch | = | SupersetKeyword ValueList
| ; STATIC SEMANTIC - Superset matching shall only be used with the set of type
SupersetKeyword | = | "superset"
AnyValue | = | "?"
AnyOrOmit | = | "*"
ValueOrAttribList | = | "(" TemplateBody 1*( "," TemplateBody ) ")"
LengthMatch | = | StringLength
IfPresentMatch | = | IfPresentKeyword
IfPresentKeyword | = | "ifpresent"
Range | = | "(" LowerBound ".." UpperBound ")"
LowerBound | = | SingleConstExpression | Minus InfinityKeyword
UpperBound | = | SingleConstExpression | InfinityKeyword
| ; STATIC SEMANTICS - LowerBound and UpperBound shall evaluate to types integer, charstring, universal charstring or float. In case LowerBound or UpperBound evaluates to types charstring or universal charstring, only SingleConstExpression may be present and the string length shall be 1
InfinityKeyword | = | "infinity"
TemplateInstance | = | InLineTemplate
TemplateRefWithParList | = | [GlobalModuleId Dot] TemplateIdentifier [TemplateActualParList] | TemplateParIdentifier
TemplateRef | = | [GlobalModuleId Dot] TemplateIdentifier | TemplateParIdentifier
InLineTemplate | = | [( Type | Signature ) Colon] [DerivedRefWithParList AssignmentChar] TemplateBody
| ; STATIC SEMANTICS - The type field may only be omitted when the type is implicitly unambigous
DerivedRefWithParList | = | ModifiesKeyword TemplateRefWithParList
TemplateActualParList | = | "(" TemplateActualPar *( "," TemplateActualPar ) ")"
TemplateActualPar | = | TemplateInstance
| ; STATIC SEMANTICS - When the corresponding formal parameter is not of template type the TemplateInstance production shall resolve to one or more SingleExpressions
TemplateOps | = | MatchOp | ValueofOp
MatchOp | = | MatchKeyword "(" Expression "," TemplateInstance ")"
| ; STATIC SEMANTICS - The type of the value returned by the expression must be the same as the template type and each field of the template shall resolve to a single value
MatchKeyword | = | "match"
ValueofOp | = | ValueofKeyword "(" TemplateInstance ")"
ValueofKeyword | = | "valueof"
FunctionDef | = | FunctionKeyword FunctionIdentifier "(" [FunctionFormalParList] ")" [RunsOnSpec] [ReturnType] StatementBlock
FunctionKeyword | = | "function"
FunctionIdentifier | = | Identifier
FunctionFormalParList | = | FunctionFormalPar *( "," FunctionFormalPar )
FunctionFormalPar | = | FormalValuePar | FormalTimerPar | FormalTemplatePar | FormalPortPar
ReturnType | = | ReturnKeyword Type
ReturnKeyword | = | "return"
RunsOnSpec | = | RunsKeyword OnKeyword ComponentType
RunsKeyword | = | "runs"
OnKeyword | = | "on"
MTCKeyword | = | "mtc"
StatementBlock | = | BeginChar [FunctionStatementOrDefList] EndChar
FunctionStatementOrDefList | = | 1*( 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 | ExtFunctionIdentifier ) | PreDefFunctionIdentifier
PreDefFunctionIdentifier | = | Identifier
| ; STATIC SEMANTICS - The Identifier will be one of the pre-defined TTCN-3 Function Identifiers from Annex C of this document
FunctionActualParList | = | FunctionActualPar *( "," FunctionActualPar )
FunctionActualPar | = | TimerRef | TemplateInstance | Port | ComponentRef
| ; STATIC SEMANTICS - When the corresponding formal parameter is not of template type the TemplateInstance production shall resolve to one or more SingleExpressions i.e., equivalent to the Expression production
SignatureDef | = | SignatureKeyword SignatureIdentifier "(" [SignatureFormalParList] ")" [ReturnType | NoBlockKeyword] [ExceptionSpec]
SignatureKeyword | = | "signature"
SignatureIdentifier | = | Identifier
SignatureFormalParList | = | SignatureFormalPar *( "," SignatureFormalPar )
SignatureFormalPar | = | FormalValuePar
ExceptionSpec | = | ExceptionKeyword "(" ExceptionTypeList ")"
ExceptionKeyword | = | "exception"
ExceptionTypeList | = | Type *( "," Type )
NoBlockKeyword | = | "noblock"
Signature | = | [GlobalModuleId Dot] SignatureIdentifier
TestcaseDef | = | TestcaseKeyword TestcaseIdentifier "(" [TestcaseFormalParList] ")" ConfigSpec StatementBlock
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
| ; STATIC SEMANTICS - When the corresponding formal parameter is not of template type the TemplateInstance production shall resolve to one or more SingleExpressions i.e., equivalent to the Expression production
AltstepDef | = | AltstepKeyword AltstepIdentifier "(" [AltstepFormalParList] ")" [RunsOnSpec] BeginChar AltstepLocalDefList AltGuardList EndChar
AltstepKeyword | = | "altstep"
AltstepIdentifier | = | Identifier
AltstepFormalParList | = | FunctionFormalParList
| ; STATIC SEMANTICS - altsteps that are activated as defaults shall only have in parameters, port parameters, or timer parameters
| ; STATIC SEMANTICS -altsteps that are only invoked as an alternative in an alt statement or as stand-alone statement in a TTCN-3 behaviour description may have in, out and inout parameters.
AltstepLocalDefList | = | *( AltstepLocalDef [SemiColon] )
AltstepLocalDef | = | VarInstance | TimerInstance | ConstDef
AltstepInstance | = | AltstepRef "(" [FunctionActualParList] ")"
| ; STATIC SEMANTICS - all timer instances in FunctionActualParList shall be declared as component local timers (see also production ComponentElementDef)
AltstepRef | = | [GlobalModuleId Dot] AltstepIdentifier
ImportDef | = | ImportKeyword ImportFromSpec ( AllWithExcepts | ( BeginChar ImportSpec EndChar ) )
ImportKeyword | = | "import"
AllWithExcepts | = | AllKeyword [ExceptsDef]
ExceptsDef | = | ExceptKeyword BeginChar ExceptSpec EndChar
ExceptKeyword | = | "except"
ExceptSpec | = | *( ExceptElement [SemiColon] )
| ; STATIC SEMANTICS: Any of the production components (ExceptGroupSpec, ExceptTypeDefSpec etc.) may be present only once in the ExceptSpec production
ExceptElement | = | ExceptGroupSpec | ExceptTypeDefSpec | ExceptTemplateSpec | ExceptConstSpec | ExceptTestcaseSpec | ExceptAltstepSpec | ExceptFunctionSpec | ExceptSignatureSpec | ExceptModuleParSpec
ExceptGroupSpec | = | GroupKeyword ( ExceptGroupRefList | AllKeyword )
ExceptTypeDefSpec | = | TypeDefKeyword ( TypeRefList | AllKeyword )
ExceptTemplateSpec | = | TemplateKeyword ( TemplateRefList | AllKeyword )
ExceptConstSpec | = | ConstKeyword ( ConstRefList | AllKeyword )
ExceptTestcaseSpec | = | TestcaseKeyword ( TestcaseRefList | AllKeyword )
ExceptAltstepSpec | = | AltstepKeyword ( AltstepRefList | AllKeyword )
ExceptFunctionSpec | = | FunctionKeyword ( FunctionRefList | AllKeyword )
ExceptSignatureSpec | = | SignatureKeyword ( SignatureRefList | AllKeyword )
ExceptModuleParSpec | = | ModuleParKeyword ( ModuleParRefList | AllKeyword )
ImportSpec | = | *( ImportElement [SemiColon] )
ImportElement | = | ImportGroupSpec | ImportTypeDefSpec | ImportTemplateSpec | ImportConstSpec | ImportTestcaseSpec | ImportAltstepSpec | ImportFunctionSpec | ImportSignatureSpec | ImportModuleParSpec
ImportFromSpec | = | FromKeyword ModuleId [RecursiveKeyword]
ModuleId | = | GlobalModuleId [LanguageSpec]
| ; STATIC SEMANTICS - LanguageSpec may only be omitted if the referenced module contains TTCN-3 notation
LanguageKeyword | = | "language"
LanguageSpec | = | LanguageKeyword FreeText
GlobalModuleId | = | ModuleIdentifier [Dot ObjectIdentifierValue]
RecursiveKeyword | = | "recursive"
ImportGroupSpec | = | GroupKeyword ( GroupRefListWithExcept | AllGroupsWithExcept )
GroupRefList | = | FullGroupIdentifier *( "," FullGroupIdentifier )
GroupRefListWithExcept | = | FullGroupIdentifierWithExcept *( "," FullGroupIdentifierWithExcept )
AllGroupsWithExcept | = | AllKeyword [ExceptKeyword GroupRefList]
FullGroupIdentifier | = | GroupIdentifier *( Dot GroupIdentifier )
FullGroupIdentifierWithExcept | = | GroupIdentifier *( Dot GroupIdentifier ) [ExceptsDef]
ExceptGroupRefList | = | ExceptFullGroupIdentifier *( "," ExceptFullGroupIdentifier )
ExceptFullGroupIdentifier | = | GroupIdentifier *( Dot GroupIdentifier )
ImportTypeDefSpec | = | TypeDefKeyword ( TypeRefList | AllTypesWithExcept )
TypeRefList | = | TypeDefIdentifier *( "," TypeDefIdentifier )
AllTypesWithExcept | = | AllKeyword [ExceptKeyword TypeRefList]
TypeDefIdentifier | = | StructTypeIdentifier | EnumTypeIdentifier | PortTypeIdentifier | ComponentTypeIdentifier | SubTypeIdentifier
ImportTemplateSpec | = | TemplateKeyword ( TemplateRefList | AllTemplsWithExcept )
TemplateRefList | = | TemplateIdentifier *( "," TemplateIdentifier )
AllTemplsWithExcept | = | AllKeyword [ExceptKeyword TemplateRefList]
ImportConstSpec | = | ConstKeyword ( ConstRefList | AllConstsWithExcept )
ConstRefList | = | ConstIdentifier *( "," ConstIdentifier )
AllConstsWithExcept | = | AllKeyword [ExceptKeyword ConstRefList]
ImportAltstepSpec | = | AltstepKeyword ( AltstepRefList | AllAltstepsWithExcept )
AltstepRefList | = | AltstepIdentifier *( "," AltstepIdentifier )
AllAltstepsWithExcept | = | AllKeyword [ExceptKeyword AltstepRefList]
ImportTestcaseSpec | = | TestcaseKeyword ( TestcaseRefList | AllTestcasesWithExcept )
TestcaseRefList | = | TestcaseIdentifier *( "," TestcaseIdentifier )
AllTestcasesWithExcept | = | AllKeyword [ExceptKeyword TestcaseRefList]
ImportFunctionSpec | = | FunctionKeyword ( FunctionRefList | AllFunctionsWithExcept )
FunctionRefList | = | FunctionIdentifier *( "," FunctionIdentifier )
AllFunctionsWithExcept | = | AllKeyword [ExceptKeyword FunctionRefList]
ImportSignatureSpec | = | SignatureKeyword ( SignatureRefList | AllSignaturesWithExcept )
SignatureRefList | = | SignatureIdentifier *( "," SignatureIdentifier )
AllSignaturesWithExcept | = | AllKeyword [ExceptKeyword SignatureRefList]
ImportModuleParSpec | = | ModuleParKeyword ( ModuleParRefList | AllModuleParWithExcept )
ModuleParRefList | = | ModuleParIdentifier *( "," ModuleParIdentifier )
AllModuleParWithExcept | = | AllKeyword [ExceptKeyword ModuleParRefList]
GroupDef | = | GroupKeyword GroupIdentifier BeginChar [ModuleDefinitionsPart] EndChar
GroupKeyword | = | "group"
GroupIdentifier | = | Identifier
ExtFunctionDef | = | ExtKeyword FunctionKeyword ExtFunctionIdentifier "(" [FunctionFormalParList] ")" [ReturnType]
ExtKeyword | = | "external"
ExtFunctionIdentifier | = | Identifier
ExtConstDef | = | ExtKeyword ConstKeyword Type ExtConstIdentifier
ExtConstIdentifier | = | Identifier
ModuleParDef | = | ModuleParKeyword "{" ModuleParList "}"
ModuleParKeyword | = | "modulepar"
ModuleParList | = | ModulePar *( SemiColon ModulePar )
ModulePar | = | ModuleParType ModuleParIdentifier [AssignmentChar ConstantExpression] *( "," ModuleParIdentifier [AssignmentChar ConstantExpression] )
| ; STATIC SEMANTICS - The Value of the ConstantExpression shall be of the same type as the stated type for the Parameter
ModuleParType | = | Type
| ; STATIC SEMANTICS - Type shall not be of component, default or any types. Type shall only resolve to address type if a definition for the address type is defined within the module
ModuleParIdentifier | = | Identifier
ModuleControlPart | = | ControlKeyword BeginChar ModuleControlBody EndChar [WithStatement] [SemiColon]
ControlKeyword | = | "control"
ModuleControlBody | = | [ControlStatementOrDefList]
ControlStatementOrDefList | = | 1*( 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 TimerList
TimerList | = | SingleTimerInstance *( "," SingleTimerInstance )
SingleTimerInstance | = | TimerIdentifier [ArrayDef] [AssignmentChar TimerValue]
TimerKeyword | = | "timer"
TimerIdentifier | = | Identifier
TimerValue | = | Expression
| ; STATIC SEMANTICS - When Expression resolves to SingleExpression it must resolve to a value of type float. Expression shall only resolves to CompoundExpression in the initialiation in default timer value assignment for timer arrays
TimerRef | = | TimerIdentifier [ArrayOrBitRef] | TimerParIdentifier [ArrayOrBitRef]
ConfigurationStatements | = | ConnectStatement | MapStatement | DisconnectStatement | UnmapStatement | DoneStatement | StartTCStatement | StopTCStatement
ConfigurationOps | = | CreateOp | SelfOp | SystemOp | MTCOp | RunningOp
CreateOp | = | ComponentType Dot CreateKeyword
SystemOp | = | SystemKeyword
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 ")"
| ; STATIC SEMANTICS the Function instance may only have in parameters
| ; STATIC SEMANTICS the Function instance shall not have timer parameters
StartKeyword | = | "start"
StopTCStatement | = | StopKeyword | ComponentIdentifierOrLiteral Dot StopKeyword | AllKeyword ComponentKeyword Dot StopKeyword
ComponentIdentifierOrLiteral | = | ComponentIdentifier | MTCOp | SelfOp
ComponentIdentifier | = | VariableRef | FunctionInstance
| ; STATIC SEMANTICS the variable associated with VariableRef or the Return type associated with FunctionInstance must be of component type
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
| ; STATIC SEMANTICS - VariableRef and FunctionInstance return must be of address or component type
CallStatement | = | Port Dot PortCallOp [PortCallBody]
PortCallOp | = | CallOpKeyword "(" CallParameters ")" [ToClause]
CallOpKeyword | = | "call"
CallParameters | = | TemplateInstance ["," CallTimerValue]
| ; STATIC SEMANTICS only out parameters may be omited or specified with a matching attribute
CallTimerValue | = | TimerValue | NowaitKeyword
| ; STATIC SEMANTICS Value must be of type float
NowaitKeyword | = | "nowait"
PortCallBody | = | BeginChar CallBodyStatementList EndChar
CallBodyStatementList | = | 1*( 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]
| ; STATIC SEMANTICS: the PortRedirect option may only be present if the ReceiveParameter option is also present
ReceiveOpKeyword | = | "receive"
ReceiveParameter | = | TemplateInstance
FromClause | = | FromKeyword AddressRef
FromKeyword | = | "from"
PortRedirect | = | PortRedirectSymbol ( ValueSpec [SenderSpec] | SenderSpec )
PortRedirectSymbol | = | "->"
ValueSpec | = | ValueKeyword VariableRef
ValueKeyword | = | "value"
SenderSpec | = | SenderKeyword VariableRef
| ; STATIC SEMANTIC Variable ref must be of address or component type
SenderKeyword | = | "sender"
TriggerStatement | = | PortOrAny Dot PortTriggerOp
PortTriggerOp | = | TriggerOpKeyword ["(" ReceiveParameter ")"] [FromClause] [PortRedirect]
| ; STATIC SEMANTICS: the PortRedirect option may only be present if the ReceiveParameter option is also present
TriggerOpKeyword | = | "trigger"
GetCallStatement | = | PortOrAny Dot PortGetCallOp
PortGetCallOp | = | GetCallOpKeyword ["(" ReceiveParameter ")"] [FromClause] [PortRedirectWithParam]
| ; STATIC SEMANTICS: the PortRedirectWithParam option may only be present if the ReceiveParameter option is also present
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
| ; STATIC SEMANTICS: the parameterIdentifiers must be from the corresponding signature definition
ParameterIdentifier | = | ValueParIdentifier | TimerParIdentifier | TemplateParIdentifier | PortParIdentifier
VariableList | = | VariableEntry *( "," VariableEntry )
VariableEntry | = | VariableRef | NotUsedSymbol
GetReplyStatement | = | PortOrAny Dot PortGetReplyOp
PortGetReplyOp | = | GetReplyOpKeyword ["(" ReceiveParameter [ValueMatchSpec] ")"] [FromClause] [PortRedirectWithParam]
| ; STATIC SEMANTICS: the PortRedirectWithParam option may only be present if the ReceiveParameter option is also present
GetReplyOpKeyword | = | "getreply"
ValueMatchSpec | = | ValueKeyword TemplateInstance
CheckStatement | = | PortOrAny Dot PortCheckOp
PortCheckOp | = | CheckOpKeyword ["(" CheckParameter ")"]
CheckOpKeyword | = | "check"
CheckParameter | = | CheckPortOpsPresent | FromClausePresent | RedirectPresent
FromClausePresent | = | FromClause [PortRedirectSymbol SenderSpec]
RedirectPresent | = | PortRedirectSymbol SenderSpec
CheckPortOpsPresent | = | PortReceiveOp | PortGetCallOp | PortGetReplyOp | PortCatchOp
CatchStatement | = | PortOrAny Dot PortCatchOp
PortCatchOp | = | CatchOpKeyword ["(" CatchOpParameter ")"] [FromClause] [PortRedirect]
| ; STATIC SEMANTICS: the PortRedirect option may only be present if the CatchOpParameter option is also present
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 | IntegerKeyword | OctetStringKeyword | ObjectIdentifierKeyword | HexStringKeyword | VerdictTypeKeyword | FloatKeyword | AddressKeyword | DefaultKeyword | AnyTypeKeyword
BitStringKeyword | = | "bitstring"
BooleanKeyword | = | "boolean"
IntegerKeyword | = | "integer"
OctetStringKeyword | = | "octetstring"
ObjectIdentifierKeyword | = | "objid"
HexStringKeyword | = | "hexstring"
VerdictTypeKeyword | = | "verdicttype"
FloatKeyword | = | "float"
AddressKeyword | = | "address"
DefaultKeyword | = | "default"
AnyTypeKeyword | = | "anytype"
CharStringKeyword | = | "charstring"
UniversalCharString | = | UniversalKeyword CharStringKeyword
UniversalKeyword | = | "universal"
CharKeyword | = | "char"
ReferencedType | = | [GlobalModuleId Dot] TypeReference [ExtendedFieldReference]
TypeReference | = | StructTypeIdentifier [TypeActualParList] | EnumTypeIdentifier | SubTypeIdentifier | ComponentTypeIdentifier
TypeActualParList | = | "(" TypeActualPar *( "," TypeActualPar ) ")"
TypeActualPar | = | ConstantExpression
ArrayDef | = | 1*( "[" ArrayBounds [".." ArrayBounds] "]" )
ArrayBounds | = | SingleConstExpression
| ; STATIC SEMANTICS - ArrayBounds will resolve to a non negative value of integer type
Value | = | PredefinedValue | ReferencedValue
PredefinedValue | = | BitStringValue | BooleanValue | CharStringValue | IntegerValue | OctetStringValue | ObjectIdentifierValue | HexStringValue | VerdictTypeValue | EnumeratedValue | FloatValue | AddressValue | OmitValue
BitStringValue | = | Bstring
BooleanValue | = | "true" | "false"
IntegerValue | = | Number
OctetStringValue | = | Ostring
ObjectIdentifierValue | = | ObjectIdentifierKeyword "{" ObjIdComponentList "}"
| ; ReferencedValue must be of type object Identifer
ObjIdComponentList | = | 1*( ObjIdComponent )
ObjIdComponent | = | NameForm | NumberForm | NameAndNumberForm
NumberForm | = | Number | ReferencedValue
| ; STATIC SEMANTICS - referencedValue must be of type integer and have a non negative Value
NameAndNumberForm | = | Identifier "(" NumberForm ")"
NameForm | = | Identifier
HexStringValue | = | Hstring
VerdictTypeValue | = | "pass" | "fail" | "inconc" | "none" | "error"
EnumeratedValue | = | EnumerationIdentifier
CharStringValue | = | Cstring | Quadruple
Quadruple | = | CharKeyword "(" 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 | = | 1*( 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 | = | %x01-7F
| ; REFERENCE - A character defined by the relevant CharacterString type. For charstring a character from the character set defined in ISO/IEC 646. For universal charstring a character from any character set defined in ISO/IEC 10646
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 | = | %x00-FF
| ; REFERENCE - A graphical character from the BASIC LATIN or from the LATIN-1 SUPPLEMENT character sets defined in ISO/IEC 10646 (characters from char (0,0,0,33) to char (0,0,0,126), from char (0,0,0,161) to char (0,0,0,172) and from char (0,0,0,174) to char (0,0,0,255)
FreeText | = | """ *( ExtendedAlphaNum ) """
AddressValue | = | "null"
OmitValue | = | OmitKeyword
OmitKeyword | = | "omit"
InParKeyword | = | "in"
OutParKeyword | = | "out"
InOutParKeyword | = | "inout"
FormalValuePar | = | [( InParKeyword | InOutParKeyword | OutParKeyword )] Type ValueParIdentifier
ValueParIdentifier | = | 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 | VariationKeyword | DisplayKeyword | ExtensionKeyword
EncodeKeyword | = | "encode"
VariationKeyword | = | "variant"
DisplayKeyword | = | "display"
ExtensionKeyword | = | "extension"
OverrideKeyword | = | "override"
AttribQualifier | = | "(" DefOrFieldRefList ")"
DefOrFieldRefList | = | DefOrFieldRef *( "," DefOrFieldRef )
DefOrFieldRef | = | DefinitionRef | FieldReference | AllRef | PredefinedType
| ; STATIC SEMANTICS: the DefOrFieldRef must refer to a definition or field which is within the module, group or definition to which the with statement is associated
DefinitionRef | = | StructTypeIdentifier | EnumTypeIdentifier | PortTypeIdentifier | ComponentTypeIdentifier | SubTypeIdentifier | ConstIdentifier | TemplateIdentifier | AltstepIdentifier | TestcaseIdentifier | FunctionIdentifier | SignatureIdentifier | VarIdentifier | TimerIdentifier | PortIdentifier | ModuleParIdentifier | FullGroupIdentifier

AllRef

=

( GroupKeyword AllKeyword [ExceptKeyword BeginChar GroupRefList EndChar] ) | ( TypeDefKeyword AllKeyword [ExceptKeyword BeginChar TypeRefList EndChar] ) | ( TemplateKeyword AllKeyword [ExceptKeyword BeginChar TemplateRefList EndChar] ) | ( ConstKeyword AllKeyword [ExceptKeyword BeginChar ConstRefList EndChar] ) | ( AltstepKeyword AllKeyword [ExceptKeyword BeginChar AltstepRefList EndChar] ) | ( TestcaseKeyword AllKeyword [ExceptKeyword BeginChar TestcaseRefList EndChar] ) | ( FunctionKeyword AllKeyword [ExceptKeyword BeginChar FunctionRefList EndChar] ) | ( SignatureKeyword AllKeyword [ExceptKeyword BeginChar SignatureRefList EndChar] ) | ( ModuleParKeyword AllKeyword [ExceptKeyword BeginChar ModuleParRefList EndChar] )

AttribSpec | = | FreeText
BehaviourStatements | = | TestcaseInstance | FunctionInstance | ReturnStatement | AltConstruct | InterleavedConstruct | LabelStatement | GotoStatement | BreakStatement | ContinueStatement | RepeatStatement | DeactivateStatement | AltstepInstance | ActivateOp
| ; STATIC SEMANTICS: TestcaseInstance shall not be called from within an existing executing testcase or function chain called from a testcase i.e., testcases can only be instantiated from the control part or from functions directly called from the control part
| ; STATIC SEMANTICS - ActivateOp shall not be called from within the module control part
VerdictStatements | = | SetLocalVerdict
VerdictOps | = | GetLocalVerdict
SetLocalVerdict | = | SetVerdictKeyword "(" SingleExpression ")"
| ; STATIC SEMANTICS -SingleExpression must resolve to a value of type verdict
| ; STATIC SEMANTICS - the SetLocalVerdict shall not be used to assign the Value error
SetVerdictKeyword | = | "setverdict"
GetLocalVerdict | = | "getverdict"
SUTStatements | = | ActionKeyword "(" [FreeText] ")"
ActionKeyword | = | "action"
ReturnStatement | = | ReturnKeyword [Expression]
AltConstruct | = | AltKeyword BeginChar AltGuardList EndChar
AltKeyword | = | "alt"
AltGuardList | = | *( GuardStatement [SemiColon] ) [ElseStatement [SemiColon]]
GuardStatement | = | AltGuardChar ( AltstepInstance [StatementBlock] | GuardOp StatementBlock )
ElseStatement | = | "[" ElseKeyword "]" StatementBlock
AltGuardChar | = | "[" [BooleanExpression] "]"
GuardOp | = | TimeoutStatement | ReceiveStatement | TriggerStatement | GetCallStatement | CatchStatement | CheckStatement | GetReplyStatement | DoneStatement
| ; STATIC SEMANTICS - GuardOp used within the module control part. May only contain the timeoutStatement
InterleavedConstruct | = | InterleavedKeyword BeginChar InterleavedGuardList EndChar
InterleavedKeyword | = | "interleave"
InterleavedGuardList | = | 1*( InterleavedGuardElement [SemiColon] )
InterleavedGuardElement | = | InterleavedGuard InterleavedAction
InterleavedGuard | = | "[" "]" GuardOp
InterleavedAction | = | StatementBlock
| ; STATIC SEMANTICS - the StatementBlock may not contain loop statements, goto, activate, deactivate, stop, return or calls to functions
LabelStatement | = | LabelKeyword LabelIdentifier
LabelKeyword | = | "label"
LabelIdentifier | = | Identifier
GotoStatement | = | GotoKeyword LabelIdentifier
GotoKeyword | = | "goto"
BreakStatement | = | "break"
ContinueStatement | = | "continue"
RepeatStatement | = | "repeat"
ActivateOp | = | ActivateKeyword "(" AltstepInstance ")"
ActivateKeyword | = | "activate"
DeactivateStatement | = | DeactivateKeyword ["(" Expression ")"]
| ; STATIC SEMANTICS expression shall evaluate to a value of default type
DeactivateKeyword | = | "deactivate"
BasicStatements | = | Assignment | LogStatement | LoopConstruct | ConditionalConstruct
Expression | = | SingleExpression | CompoundExpression
| ; STATIC SEMANTICS - Expression shall not contain Configuration, activate operation or verdict operations within the module control part
CompoundExpression | = | FieldExpressionList | ArrayExpression
| ; STATIC SEMANTICS - Within CompoundExpression the ArrayExpression can be used for Arrays, record, record of and set of types.
FieldExpressionList | = | "{" FieldExpressionSpec *( "," FieldExpressionSpec ) "}"
FieldExpressionSpec | = | FieldReference AssignmentChar Expression
ArrayExpression | = | "{" [ArrayElementExpressionList] "}"
ArrayElementExpressionList | = | NotUsedOrExpression *( "," NotUsedOrExpression )
NotUsedOrExpression | = | Expression | NotUsedSymbol
ConstantExpression | = | SingleConstExpression | CompoundConstExpression
SingleConstExpression | = | SingleExpression
| ; STATIC SEMANTICS - SingleConstExpression shall not contain Variables or Module parameters and shall resolve to a constant Value at compile time
BooleanExpression | = | SingleExpression
| ; STATIC SEMANTICS - BooleanExpression shall resolve to a Value of type Boolean
CompoundConstExpression | = | FieldConstExpressionList | ArrayConstExpression
| ; STATIC SEMANTICS - Within CompoundConstExpression the ArrayConstExpression can be used for Arrays, record, record of and set of types.
FieldConstExpressionList | = | "{" FieldConstExpressionSpec *( "," FieldConstExpressionSpec ) "}"
FieldConstExpressionSpec | = | FieldReference AssignmentChar ConstantExpression
ArrayConstExpression | = | "{" [ArrayElementConstExpressionList] "}"
ArrayElementConstExpressionList | = | ConstantExpression *( "," ConstantExpression )
Assignment | = | VariableRef AssignmentChar Expression
| ; OPERATIONAL SEMANTICS - The Expression on the RHS of Assignment shall evaluate to an explicit Value of the type of the LHS.
SingleExpression | = | XorExpression *( "or" XorExpression )
| ; OPERATIONAL SEMANTICS - If more than one XorExpression exists, then the XorExpressions shall evaluate to specific values of compatible types
XorExpression | = | AndExpression *( "xor" AndExpression )
| ; OPERATIONAL SEMANTICS - If more than one AndExpression exists, then the AndExpressions shall evaluate to specific values of compatible types
AndExpression | = | NotExpression *( "and" NotExpression )
| ; OPERATIONAL SEMANTICS - If more than one NotExpression exists, then the NotExpressions shall evaluate to specific values of compatible types
NotExpression | = | ["not"] EqualExpression
| ; OPERATIONAL SEMANTICS - Operands of the not operator shall be of type boolean (TTCN or ASN.1) or derivatives of type Boolean.
EqualExpression | = | RelExpression *( EqualOp RelExpression )
| ; OPERATIONAL SEMANTICS - If more than one RelExpression exists, then the RelExpressions shall evaluate to specific values of compatible types
RelExpression | = | ShiftExpression *( RelOp ShiftExpression )
| ; OPERATIONAL SEMANTICS - If both ShiftExpressions exist, then each ShiftExpression shall evaluate to a specific integer, Enumerated or float Value (these values can either be TTCN or ASN.1 values) or derivatives of these types
ShiftExpression | = | BitOrExpression *( ShiftOp BitOrExpression )

; OPERATIONAL SEMANTICS - Each Result shall resolve to a specific Value. If more than one Result exists the right-hand operand shall be of type integer or derivatives and if the shift op is '<<' or '>>' then the left-hand operand shall resolve to either bitstring, hexstring or octetstring type or derivatives of these types. If the shift op is '<@' or '@>' then the left-hand operand shall be of type bitstring, hexstring, charstring or universal charstring or derivatives of these types

BitOrExpression | = | BitXorExpression *( "or4b" BitXorExpression )
| ; OPERATIONAL SEMANTICS - If more than one BitXorExpression exists, then the BitXorExpressions shall evaluate to specific values of compatible types
BitXorExpression | = | BitAndExpression *( "xor4b" BitAndExpression )
| ; OPERATIONAL SEMANTICS - If more than one BitAndExpression exists, then the BitAndExpressions shall evaluate to specific values of compatible types
BitAndExpression | = | BitNotExpression *( "and4b" BitNotExpression )
| ; OPERATIONAL SEMANTICS - If more than one BitNotExpression exists, then the BitNotExpressions shall evaluate to specific values of compatible types
BitNotExpression | = | ["not4b"] AddExpression
| ; OPERATIONAL SEMANTICS - If the not4b operator exists, the operand shall be of type bitstring, octetstring or hexstring or derivatives of these types.
AddExpression | = | MulExpression *( AddOp MulExpression )

; OPERATIONAL SEMANTICS - Each MulExpression shall resolve to a specific Value. If more than one MulExpression exists and the AddOp resolves to StringOp then the MulExpressions shall resolve to same type which shall be of bitstring, hexstring, octetstring, charstring or universal charstring or derivatives of these types. If more than one MulExpression exists and the AddOp does not resolve to StringOp then the MulExpression shall both resolve to type integer or float or derivatives of these types.

MulExpression | = | UnaryExpression *( MultiplyOp UnaryExpression )
| ; OPERATIONAL SEMANTICS - Each UnaryExpression shall resolve to a specific Value. If more than one UnaryExpression exists then the UnaryExpressions shall resolve to type integer or float or derivatives of these types.
UnaryExpression | = | [UnaryOp] Primary
| ; OPERATIONAL SEMANTICS - Primary shall resolve to a specific Value of type integer or float or derivatives of these types
Primary | = | OpCall | Value | "(" SingleExpression ")"
ExtendedFieldReference | = | 1*( ( Dot ( StructFieldIdentifier | ArrayOrBitRef | TypeDefIdentifier ) ) | ArrayOrBitRef )
| ; OPERATIONAL SEMANTIC: The TypeDefIdentifier shall be used only if the type of the VarInstance or ReferencedValue in wich the ExtendedFieldReference is used is anytype.
OpCall | = | ConfigurationOps | VerdictOps | TimerOps | TestcaseInstance | FunctionInstance | TemplateOps | ActivateOp
AddOp | = | "+" | "-" | StringOp
| ; OPERATIONAL SEMANTICS - Operands of the "+" or "-" operators shall be of type integer or float(i.e., TTCN-3 or ASN.1 predefined) or derivations of integer or float (i.e., subrange)
MultiplyOp | = | "*" | "/" | "mod" | "rem"
| ; OPERATIONAL SEMANTICS - Operands of the "*", "/", rem or mod operators shall be of type integer or float(i.e., TTCN-3 or ASN.1 predefined) or derivations of integer or float (i.e., subrange).
UnaryOp | = | "+" | "-"
| ; OPERATIONAL SEMANTICS - Operands of the "+" or "-" operators shall be of type integer or float(i.e., TTCN-3 or ASN.1 predefined) or derivations of integer or float (i.e., subrange).
RelOp | = | "<" | ">" | ">=" | "<="
| ; OPERATIONAL SEMANTICS - the precedence of the operators is defined in Table 7
EqualOp | = | "==" | "!="
StringOp | = | "&"
| ; OPERATIONAL SEMANTICS - Operands of the string operator shall be bitstring, hexstring, octetstring or character string
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 | = | ";"
Colon | = | ":"
Underscore | = | "_"
BeginChar | = | "{"
EndChar | = | "}"
AssignmentChar | = | ":="

## Symbol Cross Reference List

Following is a cross-reference list for the ABNF. On the left are references to productions, on the right are links to the rules in which those productions are referenced.

Symbol Cross-Reference Table
Reference | Productions which Reference this Symbol
--- | ---
ActionKeyword | SUTStatements
ActivateKeyword | ActivateOp
ActivateOp | BehaviourStatements, OpCall
AddExpression | BitNotExpression
AddOp | AddExpression
AddressKeyword | StructDefBody, UnionDefBody, StructOfDefBody, EnumDef, SubTypeDef, PredefinedType
AddressRef | ToClause, FromClause
AddressValue | PredefinedValue
AllAltstepsWithExcept | ImportAltstepSpec
AllConstsWithExcept | ImportConstSpec
AllFunctionsWithExcept | ImportFunctionSpec
AllGroupsWithExcept | ImportGroupSpec

AllKeyword

AllOrTypeList, AllOrSignatureList, ProcOrTypeList, AllWithExcepts, ExceptGroupSpec, ExceptTypeDefSpec, ExceptTemplateSpec, ExceptConstSpec, ExceptTestcaseSpec, ExceptAltstepSpec, ExceptFunctionSpec, ExceptSignatureSpec, ExceptModuleParSpec, AllGroupsWithExcept, AllTypesWithExcept, AllTemplsWithExcept, AllConstsWithExcept, AllAltstepsWithExcept, AllTestcasesWithExcept, AllFunctionsWithExcept, AllSignaturesWithExcept, AllModuleParWithExcept, ComponentId, StopTCStatement, PortOrAll, TimerRefOrAll, AllRef, AllRef, AllRef, AllRef, AllRef, AllRef, AllRef, AllRef, AllRef

AllModuleParWithExcept | ImportModuleParSpec
AllOrSignatureList | ProcedureList
AllOrTypeList | MessageList
AllRef | DefOrFieldRef
AllSignaturesWithExcept | ImportSignatureSpec
AllTemplsWithExcept | ImportTemplateSpec
AllTestcasesWithExcept | ImportTestcaseSpec
AllTypesWithExcept | ImportTypeDefSpec
AllWithExcepts | ImportDef
AllowedValues | SubTypeSpec
Alpha | Identifier, AlphaNum
AlphaNum | Identifier
AltConstruct | BehaviourStatements
AltGuardChar | CallBodyGuard, GuardStatement
AltGuardList | AltstepDef, AltConstruct
AltKeyword | AltConstruct
AltstepDef | ModuleDefinition
AltstepFormalParList | AltstepDef
AltstepIdentifier | AltstepDef, AltstepRef, AltstepRefList, AltstepRefList, DefinitionRef
AltstepInstance | BehaviourStatements, GuardStatement, ActivateOp
AltstepKeyword | AltstepDef, ExceptAltstepSpec, ImportAltstepSpec, AllRef
AltstepLocalDef | AltstepLocalDefList
AltstepLocalDefList | AltstepDef
AltstepRef | AltstepInstance
AltstepRefList | ExceptAltstepSpec, ImportAltstepSpec, AllAltstepsWithExcept, AllRef
AndExpression | XorExpression, XorExpression
AnyKeyword | ComponentId, PortOrAny, TimerRefOrAny
AnyOrOmit | MatchingSymbol, BinOrMatch, HexOrMatch, OctOrMatch
AnyTypeKeyword | PredefinedType
AnyValue | MatchingSymbol, BinOrMatch, HexOrMatch, OctOrMatch
ArrayBounds | ArrayDef, ArrayDef
ArrayConstExpression | CompoundConstExpression
ArrayDef | StructFieldDef, UnionFieldDef, SubTypeDef, PortElement, SingleConstDef, SingleVarInstance, SingleTimerInstance
ArrayElementConstExpressionList | ArrayConstExpression
ArrayElementExpressionList | ArrayExpression
ArrayElementSpec | ArrayElementSpecList, ArrayElementSpecList
ArrayElementSpecList | ArrayValueOrAttrib
ArrayExpression | CompoundExpression
ArrayOrBitRef | FieldReference, TimerRef, TimerRef, Port, ExtendedFieldReference, ExtendedFieldReference
ArrayValueOrAttrib | TemplateBody
Assignment | BasicStatements, Initial, Step
AssignmentChar | SingleConstDef, TemplateDef, FieldSpec, InLineTemplate, ModulePar, ModulePar, SingleVarInstance, SingleTimerInstance, VariableAssignment, FieldExpressionSpec, FieldConstExpressionSpec, Assignment
AssignmentList | ParaAssignmentList
AttribKeyword | SingleWithAttrib
AttribQualifier | SingleWithAttrib
AttribSpec | SingleWithAttrib
BaseTemplate | TemplateDef
BasicStatements | FunctionStatement, ControlStatement
BeginChar | TTCN3Module, StructDefBody, UnionDefBody, EnumDef, MessageAttribs, ProcedureAttribs, MixedAttribs, ComponentDef, StatementBlock, AltstepDef, ImportDef, ExceptsDef, GroupDef, ModuleControlPart, PortCallBody, AllRef, AllRef, AllRef, AllRef, AllRef, AllRef, AllRef, AllRef, AllRef, AltConstruct, InterleavedConstruct
BehaviourStatements | FunctionStatement, ControlStatement
Bin | BinOrMatch, Bstring
BinOrMatch | BitStringMatch
BitAndExpression | BitXorExpression, BitXorExpression
BitNotExpression | BitAndExpression, BitAndExpression
BitOrExpression | ShiftExpression, ShiftExpression
BitStringKeyword | PredefinedType
BitStringMatch | MatchingSymbol
BitStringValue | PredefinedValue
BitXorExpression | BitOrExpression, BitOrExpression
BooleanExpression | AltGuardChar, Final, WhileStatement, DoWhileStatement, ConditionalConstruct, ElseIfClause
BooleanKeyword | PredefinedType
BooleanValue | PredefinedValue
BreakStatement | BehaviourStatements
Bstring | BitStringValue
CallBodyGuard | CallBodyStatement
CallBodyOps | CallBodyGuard
CallBodyStatement | CallBodyStatementList
CallBodyStatementList | PortCallBody
CallOpKeyword | PortCallOp
CallParameters | PortCallOp
CallStatement | CommunicationStatements
CallTimerValue | CallParameters
CatchOpKeyword | PortCatchOp
CatchOpParameter | PortCatchOp
CatchStatement | CommunicationStatements, CallBodyOps, GuardOp
Cell | Quadruple
Char | Cstring
CharKeyword | Quadruple
CharStringKeyword | PredefinedType, UniversalCharString
CharStringMatch | MatchingSymbol
CharStringValue | PredefinedValue
CheckOpKeyword | PortCheckOp
CheckParameter | PortCheckOp
CheckPortOpsPresent | CheckParameter
CheckStatement | CommunicationStatements, GuardOp
ClearOpKeyword | PortClearOp
ClearStatement | CommunicationStatements
Colon | InLineTemplate, PortRef
CommunicationStatements | FunctionStatement
Complement | MatchingSymbol
ComplementKeyword | Complement
ComponentDef | StructuredTypeDef
ComponentDefList | ComponentDef
ComponentElementDef | ComponentDefList
ComponentId | DoneStatement, RunningOp
ComponentIdentifier | ComponentId, ComponentRef, StartTCStatement, ComponentIdentifierOrLiteral
ComponentIdentifierOrLiteral | StopTCStatement
ComponentKeyword | ComponentDef, ComponentId, StopTCStatement
ComponentRef | FunctionActualPar, PortRef
ComponentType | RunsOnSpec, SystemSpec, CreateOp
ComponentTypeIdentifier | ComponentDef, ComponentType, TypeDefIdentifier, TypeReference, DefinitionRef
CompoundConstExpression | ConstantExpression
CompoundExpression | Expression
ConditionalConstruct | BasicStatements
ConfigSpec | TestcaseDef
ConfigurationOps | OpCall
ConfigurationStatements | FunctionStatement
ConnectKeyword | ConnectStatement
ConnectStatement | ConfigurationStatements
ConstDef | ModuleDefinition, ComponentElementDef, FunctionLocalDef, AltstepLocalDef
ConstIdentifier | SingleConstDef, ConstRefList, ConstRefList, ValueReference, DefinitionRef
ConstKeyword | ConstDef, ExceptConstSpec, ImportConstSpec, ExtConstDef, AllRef
ConstList | ConstDef
ConstRefList | ExceptConstSpec, ImportConstSpec, AllConstsWithExcept, AllRef
ConstantExpression | ValueOrRange, SingleConstDef, ValueList, ValueList, ModulePar, ModulePar, TypeActualPar, FieldConstExpressionSpec, ArrayElementConstExpressionList, ArrayElementConstExpressionList
ContinueStatement | BehaviourStatements
ControlKeyword | ModuleControlPart
ControlStatement | ControlStatementOrDef
ControlStatementOrDef | ControlStatementOrDefList
ControlStatementOrDefList | ModuleControlBody
CreateKeyword | CreateOp
CreateOp | ConfigurationOps
Cstring | CharStringMatch, CharStringValue
Dash | NotUsedSymbol, Minus
DeactivateKeyword | DeactivateStatement
DeactivateStatement | BehaviourStatements
DecimalNumber | FloatDotNotation, FloatENotation
DefOrFieldRef | DefOrFieldRefList, DefOrFieldRefList
DefOrFieldRefList | AttribQualifier
DefaultKeyword | PredefinedType
DefinitionRef | DefOrFieldRef
DefinitiveIdentifier | TTCN3ModuleId
DefinitiveNameAndNumberForm | DefinitiveObjIdComponent
DefinitiveNumberForm | DefinitiveObjIdComponent, DefinitiveNameAndNumberForm
DefinitiveObjIdComponent | DefinitiveObjIdComponentList
DefinitiveObjIdComponentList | DefinitiveIdentifier
DerivedDef | TemplateDef
DerivedRefWithParList | InLineTemplate
Direction | MessageList, ProcedureList, MixedList
DisconnectKeyword | DisconnectStatement
DisconnectStatement | ConfigurationStatements
DisplayKeyword | AttribKeyword
DoKeyword | DoWhileStatement
DoWhileStatement | LoopConstruct
DoneKeyword | DoneStatement
DoneStatement | ConfigurationStatements, GuardOp

Dot

DefinitiveIdentifier, PortType, ComponentType, TemplateRefWithParList, TemplateRef, FunctionRef, Signature, TestcaseRef, AltstepRef, GlobalModuleId, FullGroupIdentifier, FullGroupIdentifierWithExcept, ExceptFullGroupIdentifier, CreateOp, DoneStatement, RunningOp, StartTCStatement, StopTCStatement, StopTCStatement, SendStatement, CallStatement, ReplyStatement, RaiseStatement, ReceiveStatement, TriggerStatement, GetCallStatement, GetReplyStatement, CheckStatement, CatchStatement, ClearStatement, StartStatement, StopStatement, StartTimerStatement, StopTimerStatement, ReadTimerOp, RunningTimerOp, TimeoutStatement, ReferencedType, FloatDotNotation, FloatENotation, ValueReference, ExtendedFieldReference

ElseClause | ConditionalConstruct
ElseIfClause | ConditionalConstruct
ElseKeyword | ElseStatement, ElseIfClause, ElseClause
ElseStatement | AltGuardList
EncodeKeyword | AttribKeyword
EndChar | TTCN3Module, StructDefBody, UnionDefBody, EnumDef, MessageAttribs, ProcedureAttribs, MixedAttribs, ComponentDef, StatementBlock, AltstepDef, ImportDef, ExceptsDef, GroupDef, ModuleControlPart, PortCallBody, AllRef, AllRef, AllRef, AllRef, AllRef, AllRef, AllRef, AllRef, AllRef, AltConstruct, InterleavedConstruct
EnumDef | StructuredTypeDef
EnumKeyword | EnumDef
EnumTypeIdentifier | EnumDef, TypeDefIdentifier, TypeReference, DefinitionRef
EnumeratedValue | PredefinedValue
Enumeration | EnumerationList, EnumerationList
EnumerationIdentifier | Enumeration, EnumeratedValue
EnumerationList | EnumDef
EqualExpression | NotExpression
EqualOp | EqualExpression
ExceptAltstepSpec | ExceptElement
ExceptConstSpec | ExceptElement
ExceptElement | ExceptSpec
ExceptFullGroupIdentifier | ExceptGroupRefList, ExceptGroupRefList
ExceptFunctionSpec | ExceptElement
ExceptGroupRefList | ExceptGroupSpec
ExceptGroupSpec | ExceptElement
ExceptKeyword | ExceptsDef, AllGroupsWithExcept, AllTypesWithExcept, AllTemplsWithExcept, AllConstsWithExcept, AllAltstepsWithExcept, AllTestcasesWithExcept, AllFunctionsWithExcept, AllSignaturesWithExcept, AllModuleParWithExcept, AllRef, AllRef, AllRef, AllRef, AllRef, AllRef, AllRef, AllRef, AllRef
ExceptModuleParSpec | ExceptElement
ExceptSignatureSpec | ExceptElement
ExceptSpec | ExceptsDef
ExceptTemplateSpec | ExceptElement
ExceptTestcaseSpec | ExceptElement
ExceptTypeDefSpec | ExceptElement
ExceptionKeyword | ExceptionSpec
ExceptionSpec | SignatureDef
ExceptionTypeList | ExceptionSpec
ExceptsDef | AllWithExcepts, FullGroupIdentifierWithExcept
ExecuteKeyword | TestcaseInstance
Exponential | FloatENotation
Expression | MatchOp, VarInitialValue, TimerValue, ReplyValue, ReturnStatement, DeactivateStatement, FieldExpressionSpec, NotUsedOrExpression, Assignment
ExtConstDef | ModuleDefinition
ExtConstIdentifier | ExtConstDef, ValueReference
ExtFunctionDef | ModuleDefinition
ExtFunctionIdentifier | FunctionRef, ExtFunctionDef
ExtKeyword | ExtFunctionDef, ExtConstDef
ExtendedAlphaNum | FreeText
ExtendedFieldReference | VariableRef, ReferencedType, ReferencedValue
ExtensionKeyword | AttribKeyword
ExtraMatchingAttributes | SingleValueOrAttrib, SingleValueOrAttrib
FieldConstExpressionList | CompoundConstExpression
FieldConstExpressionSpec | FieldConstExpressionList, FieldConstExpressionList
FieldExpressionList | CompoundExpression
FieldExpressionSpec | FieldExpressionList, FieldExpressionList
FieldOrBitNumber | ArrayOrBitRef
FieldReference | FieldSpec, DefOrFieldRef, FieldExpressionSpec, FieldConstExpressionSpec
FieldSpec | FieldSpecList, FieldSpecList
FieldSpecList | TemplateBody
Final | ForStatement
FloatDotNotation | FloatValue
FloatENotation | FloatValue
FloatKeyword | PredefinedType
FloatValue | PredefinedValue
ForKeyword | ForStatement
ForStatement | LoopConstruct
FormalPortPar | FunctionFormalPar
FormalTemplatePar | TemplateFormalPar, FunctionFormalPar, TestcaseFormalPar
FormalTimerPar | FunctionFormalPar
FormalValuePar | StructDefFormalPar, TemplateFormalPar, FunctionFormalPar, SignatureFormalPar, TestcaseFormalPar
FreeText | LanguageSpec, AttribSpec, SUTStatements, LogStatement, SetstateDef
FromClause | PortReceiveOp, PortTriggerOp, PortGetCallOp, PortGetReplyOp, FromClausePresent, PortCatchOp
FromClausePresent | CheckParameter
FromKeyword | ImportFromSpec, FromClause
FullGroupIdentifier | GroupRefList, GroupRefList, DefinitionRef
FullGroupIdentifierWithExcept | GroupRefListWithExcept, GroupRefListWithExcept
FunctionActualPar | FunctionActualParList, FunctionActualParList
FunctionActualParList | FunctionInstance, AltstepInstance
FunctionDef | ModuleDefinition
FunctionFormalPar | FunctionFormalParList, FunctionFormalParList
FunctionFormalParList | FunctionDef, AltstepFormalParList, ExtFunctionDef
FunctionIdentifier | FunctionDef, FunctionRef, FunctionRefList, FunctionRefList, DefinitionRef
FunctionInstance | StartTCStatement, ComponentIdentifier, AddressRef, BehaviourStatements, OpCall
FunctionKeyword | FunctionDef, ExceptFunctionSpec, ImportFunctionSpec, ExtFunctionDef, AllRef
FunctionLocalDef | FunctionStatementOrDef, ControlStatementOrDef
FunctionLocalInst | FunctionStatementOrDef, ControlStatementOrDef
FunctionRef | FunctionInstance
FunctionRefList | ExceptFunctionSpec, ImportFunctionSpec, AllFunctionsWithExcept, AllRef
FunctionStatement | FunctionStatementOrDef
FunctionStatementOrDef | FunctionStatementOrDefList
FunctionStatementOrDefList | StatementBlock
GetCallOpKeyword | PortGetCallOp
GetCallStatement | CommunicationStatements, GuardOp
GetLocalVerdict | VerdictOps
GetReplyOpKeyword | PortGetReplyOp
GetReplyStatement | CommunicationStatements, CallBodyOps, GuardOp
GlobalModuleId | PortType, ComponentType, TemplateRefWithParList, TemplateRef, FunctionRef, Signature, TestcaseRef, AltstepRef, ModuleId, ReferencedType, ValueReference
GotoKeyword | GotoStatement
GotoStatement | BehaviourStatements
Group | Quadruple
GroupDef | ModuleDefinition
GroupIdentifier | FullGroupIdentifier, FullGroupIdentifier, FullGroupIdentifierWithExcept, FullGroupIdentifierWithExcept, ExceptFullGroupIdentifier, ExceptFullGroupIdentifier, GroupDef
GroupKeyword | ExceptGroupSpec, ImportGroupSpec, GroupDef, AllRef
GroupRefList | AllGroupsWithExcept, AllRef
GroupRefListWithExcept | ImportGroupSpec
GuardOp | GuardStatement, InterleavedGuard
GuardStatement | AltGuardList
Hex | HexOrMatch, Hstring, Oct, Oct
HexOrMatch | HexStringMatch
HexStringKeyword | PredefinedType
HexStringMatch | MatchingSymbol
HexStringValue | PredefinedValue
Hstring | HexStringValue

Identifier

ModuleIdentifier, DefinitiveNameAndNumberForm, StructTypeIdentifier, StructFieldIdentifier, EnumTypeIdentifier, EnumerationIdentifier, SubTypeIdentifier, PortTypeIdentifier, ComponentTypeIdentifier, PortIdentifier, ConstIdentifier, TemplateIdentifier, FunctionIdentifier, PreDefFunctionIdentifier, SignatureIdentifier, TestcaseIdentifier, AltstepIdentifier, GroupIdentifier, ExtFunctionIdentifier, ExtConstIdentifier, ModuleParIdentifier, VarIdentifier, TimerIdentifier, NameAndNumberForm, NameForm, ValueParIdentifier, PortParIdentifier, TimerParIdentifier, TemplateParIdentifier, LabelIdentifier

IfKeyword | ConditionalConstruct, ElseIfClause
IfPresentKeyword | IfPresentMatch
IfPresentMatch | ExtraMatchingAttributes, ExtraMatchingAttributes
ImportAltstepSpec | ImportElement
ImportConstSpec | ImportElement
ImportDef | ModuleDefinition
ImportElement | ImportSpec
ImportFromSpec | ImportDef
ImportFunctionSpec | ImportElement
ImportGroupSpec | ImportElement
ImportKeyword | ImportDef
ImportModuleParSpec | ImportElement
ImportSignatureSpec | ImportElement
ImportSpec | ImportDef
ImportTemplateSpec | ImportElement
ImportTestcaseSpec | ImportElement
ImportTypeDefSpec | ImportElement
InLineTemplate | TemplateInstance
InOutParKeyword | Direction, FormalValuePar, FormalPortPar, FormalTimerPar
InParKeyword | Direction, FormalValuePar, FormalTemplatePar
InfinityKeyword | LowerBound, UpperBound
Initial | ForStatement
IntegerKeyword | PredefinedType
IntegerValue | PredefinedValue
InterleavedAction | InterleavedGuardElement
InterleavedConstruct | BehaviourStatements
InterleavedGuard | InterleavedGuardElement
InterleavedGuardElement | InterleavedGuardList
InterleavedGuardList | InterleavedConstruct
InterleavedKeyword | InterleavedConstruct
LabelIdentifier | LabelStatement, GotoStatement
LabelKeyword | LabelStatement
LabelStatement | BehaviourStatements
LanguageKeyword | LanguageSpec
LanguageSpec | ModuleId
LengthKeyword | StringLength
LengthMatch | ExtraMatchingAttributes, ExtraMatchingAttributes
LogKeyword | LogStatement
LogStatement | BasicStatements
LoopConstruct | BasicStatements
LowerAlpha | Alpha
LowerBound | RangeDef, Range
MTCKeyword | MTCOp
MTCOp | ConfigurationOps, ComponentRef, ComponentIdentifierOrLiteral
MapKeyword | MapStatement
MapStatement | ConfigurationStatements
MatchKeyword | MatchOp
MatchOp | TemplateOps
MatchingSymbol | SingleValueOrAttrib
MessageAttribs | PortDefAttribs
MessageKeyword | MessageAttribs
MessageList | MessageAttribs
Minus | Enumeration, LowerBound, FloatENotation
MixedAttribs | PortDefAttribs
MixedKeyword | MixedAttribs
MixedList | MixedAttribs
ModifiesKeyword | DerivedDef, DerivedRefWithParList
ModuleControlBody | ModuleControlPart
ModuleControlPart | TTCN3Module
ModuleDefinition | ModuleDefinitionsList
ModuleDefinitionsList | ModuleDefinitionsPart
ModuleDefinitionsPart | TTCN3Module, GroupDef
ModuleId | ImportFromSpec
ModuleIdentifier | TTCN3ModuleId, GlobalModuleId
ModulePar | ModuleParList, ModuleParList
ModuleParDef | ModuleDefinition
ModuleParIdentifier | ModuleParRefList, ModuleParRefList, ModulePar, ModulePar, ValueReference, DefinitionRef
ModuleParKeyword | ExceptModuleParSpec, ImportModuleParSpec, ModuleParDef, AllRef
ModuleParList | ModuleParDef
ModuleParRefList | ExceptModuleParSpec, ImportModuleParSpec, AllModuleParWithExcept, AllRef
ModuleParType | ModulePar
MulExpression | AddExpression, AddExpression
MultiWithAttrib | WithAttribList
MultiplyOp | MulExpression
NameAndNumberForm | ObjIdComponent
NameForm | DefinitiveObjIdComponent, ObjIdComponent
NoBlockKeyword | SignatureDef
NonZeroNum | Number, Num
NotExpression | AndExpression, AndExpression
NotUsedOrExpression | ArrayElementExpressionList, ArrayElementExpressionList
NotUsedSymbol | ArrayElementSpec, VariableEntry, NotUsedOrExpression
NowaitKeyword | CallTimerValue
Num | Number, DecimalNumber, Hex, AlphaNum
Number | DefinitiveNumberForm, Enumeration, IntegerValue, NumberForm, Group, Plane, Row, Cell, FloatDotNotation, FloatENotation, FloatENotation
NumberForm | ObjIdComponent, NameAndNumberForm
ObjIdComponent | ObjIdComponentList
ObjIdComponentList | ObjectIdentifierValue
ObjectIdentifierKeyword | DefinitiveIdentifier, PredefinedType, ObjectIdentifierValue
ObjectIdentifierValue | GlobalModuleId, PredefinedValue
Oct | OctOrMatch, Ostring
OctOrMatch | OctetStringMatch
OctetStringKeyword | PredefinedType
OctetStringMatch | MatchingSymbol
OctetStringValue | PredefinedValue
OfKeyword | RecordOfDef, SetOfDef
OmitKeyword | OmitValue
OmitValue | PredefinedValue
OnKeyword | RunsOnSpec
OpCall | Primary
OptionalKeyword | StructFieldDef
Ostring | OctetStringValue
OutParKeyword | Direction, FormalValuePar
OverrideKeyword | SingleWithAttrib
ParRef | FieldReference
ParaAssignmentList | ParaSpec
ParaKeyword | ParaSpec
ParaSpec | RedirectSpec, RedirectSpec
ParameterIdentifier | VariableAssignment
PatternKeyword | CharStringMatch
PermutationKeyword | PermutationMatch
PermutationMatch | MatchingSymbol
Plane | Quadruple
Port | FunctionActualPar, PortRef, SendStatement, CallStatement, ReplyStatement, RaiseStatement, PortOrAny, PortOrAll
PortCallBody | CallStatement
PortCallOp | CallStatement
PortCatchOp | CheckPortOpsPresent, CatchStatement
PortCheckOp | CheckStatement
PortClearOp | ClearStatement
PortDef | StructuredTypeDef
PortDefAttribs | PortDefBody
PortDefBody | PortDef
PortElement | PortInstance, PortInstance
PortGetCallOp | GetCallStatement, CheckPortOpsPresent
PortGetReplyOp | GetReplyStatement, CheckPortOpsPresent
PortIdentifier | PortElement, Port, DefinitionRef
PortInstance | ComponentElementDef
PortKeyword | PortDef, PortInstance, PortOrAny, PortOrAll, SetstateDef
PortOrAll | ClearStatement, StartStatement, StopStatement
PortOrAny | ReceiveStatement, TriggerStatement, GetCallStatement, GetReplyStatement, CheckStatement, CatchStatement
PortParIdentifier | Port, ParameterIdentifier, FormalPortPar
PortRaiseOp | RaiseStatement
PortReceiveOp | ReceiveStatement, CheckPortOpsPresent
PortRedirect | PortReceiveOp, PortTriggerOp, PortCatchOp
PortRedirectSymbol | PortRedirect, PortRedirectWithParam, FromClausePresent, RedirectPresent
PortRedirectWithParam | PortGetCallOp, PortGetReplyOp
PortRef | PortSpec, PortSpec
PortReplyOp | ReplyStatement
PortSendOp | SendStatement
PortSpec | ConnectStatement, DisconnectStatement, MapStatement, UnmapStatement
PortStartOp | StartStatement
PortStopOp | StopStatement
PortTriggerOp | TriggerStatement
PortType | PortInstance
PortTypeIdentifier | PortType, PortDefBody, TypeDefIdentifier, FormalPortPar, DefinitionRef
PreDefFunctionIdentifier | FunctionRef
PredefinedType | StructFieldRef, Type, DefOrFieldRef
PredefinedValue | Value
Primary | UnaryExpression
ProcOrType | ProcOrTypeList, ProcOrTypeList
ProcOrTypeList | MixedList
ProcedureAttribs | PortDefAttribs
ProcedureKeyword | ProcedureAttribs
ProcedureList | ProcedureAttribs
Quadruple | CharStringValue
RaiseKeyword | PortRaiseOp
RaiseStatement | CommunicationStatements
Range | MatchingSymbol
RangeDef | ValueOrRange
ReadKeyword | ReadTimerOp
ReadTimerOp | TimerOps
ReceiveOpKeyword | PortReceiveOp
ReceiveParameter | PortReceiveOp, PortTriggerOp, PortGetCallOp, PortGetReplyOp
ReceiveStatement | CommunicationStatements, GuardOp
RecordDef | StructuredTypeDef
RecordKeyword | RecordDef, RecordOfDef
RecordOfDef | StructuredTypeDef
RecursiveKeyword | ImportFromSpec
RedirectPresent | CheckParameter
RedirectSpec | PortRedirectWithParam
ReferencedType | Type
ReferencedValue | Value, NumberForm
RelExpression | EqualExpression, EqualExpression
RelOp | RelExpression
RepeatStatement | BehaviourStatements
ReplyKeyword | PortReplyOp
ReplyStatement | CommunicationStatements
ReplyValue | PortReplyOp
ReturnKeyword | ReturnType, ReturnStatement
ReturnStatement | BehaviourStatements
ReturnType | FunctionDef, SignatureDef, ExtFunctionDef
Row | Quadruple
RunningKeyword | RunningOp, RunningTimerOp
RunningOp | ConfigurationOps
RunningTimerOp | TimerOps
RunsKeyword | RunsOnSpec
RunsOnSpec | FunctionDef, ConfigSpec, AltstepDef
SUTStatements | FunctionStatement, ControlStatement
SelfOp | ConfigurationOps, ComponentRef, ComponentIdentifierOrLiteral
SemiColon | TTCN3Module, ModuleDefinitionsList, MessageAttribs, ProcedureAttribs, MixedAttribs, ComponentDefList, FunctionStatementOrDefList, AltstepLocalDefList, ExceptSpec, ImportSpec, ModuleParList, ModuleControlPart, ControlStatementOrDefList, CallBodyStatementList, MultiWithAttrib, AltGuardList, AltGuardList, InterleavedGuardList, ForStatement, ForStatement
SendOpKeyword | PortSendOp
SendParameter | PortSendOp
SendStatement | CommunicationStatements
SenderKeyword | SenderSpec
SenderSpec | PortRedirect, PortRedirect, RedirectSpec, RedirectSpec, RedirectSpec, FromClausePresent, RedirectPresent
SetDef | StructuredTypeDef
SetKeyword | SetDef, SetOfDef
SetLocalVerdict | VerdictStatements
SetOfDef | StructuredTypeDef
SetstateKeyword | SetstateDef
SetVerdictKeyword | SetLocalVerdict
ShiftExpression | RelExpression, RelExpression
ShiftOp | ShiftExpression
Signature | SignatureList, SignatureList, ProcOrType, BaseTemplate, InLineTemplate, PortRaiseOp, CatchOpParameter
SignatureDef | ModuleDefinition
SignatureFormalPar | SignatureFormalParList, SignatureFormalParList
SignatureFormalParList | SignatureDef
SignatureIdentifier | SignatureDef, Signature, SignatureRefList, SignatureRefList, DefinitionRef
SignatureKeyword | SignatureDef, ExceptSignatureSpec, ImportSignatureSpec, AllRef
SignatureList | AllOrSignatureList
SignatureParIdentifier | ParRef
SignatureRefList | ExceptSignatureSpec, ImportSignatureSpec, AllSignaturesWithExcept, AllRef
SimpleSpec | TemplateBody
SingleConstDef | ConstList, ConstList
SingleConstExpression | StringLength, LowerBound, UpperBound, ArrayBounds, ConstantExpression
SingleExpression | FieldOrBitNumber, SingleValueOrAttrib, SetLocalVerdict, Expression, SingleConstExpression, BooleanExpression, Primary, SetstateDef
SingleTimerInstance | TimerList, TimerList
SingleValueOrAttrib | SimpleSpec
SingleVarInstance | VarList, VarList
SingleWithAttrib | MultiWithAttrib
StartKeyword | StartTCStatement, PortStartOp, StartTimerStatement
StartStatement | CommunicationStatements
StartTCStatement | ConfigurationStatements
StartTimerStatement | TimerStatements
StatementBlock | FunctionDef, TestcaseDef, CallBodyStatement, GuardStatement, GuardStatement, ElseStatement, InterleavedAction, ForStatement, WhileStatement, DoWhileStatement, ConditionalConstruct, ElseIfClause, ElseClause
Step | ForStatement
StopKeyword | StopTCStatement, StopTCStatement, StopTCStatement, PortStopOp, StopTimerStatement
StopStatement | CommunicationStatements
StopTCStatement | ConfigurationStatements
StopTimerStatement | TimerStatements
StringLength | RecordOfDef, SetOfDef, SubTypeSpec, LengthMatch
StringOp | AddOp
StructDefBody | RecordDef, SetDef
StructDefFormalPar | StructDefFormalParList, StructDefFormalParList
StructDefFormalParList | StructDefBody, UnionDefBody
StructFieldDef | StructDefBody, StructDefBody
StructFieldIdentifier | StructFieldDef, UnionFieldDef, StructFieldRef, ExtendedFieldReference
StructFieldRef | FieldReference
StructOfDefBody | RecordOfDef, SetOfDef
StructTypeIdentifier | StructDefBody, UnionDefBody, StructOfDefBody, TypeDefIdentifier, TypeReference, DefinitionRef
StructuredTypeDef | TypeDefBody
SubTypeDef | TypeDefBody
SubTypeIdentifier | SubTypeDef, TypeDefIdentifier, TypeReference, DefinitionRef
SubTypeSpec | StructFieldDef, UnionFieldDef, StructOfDefBody, SubTypeDef
SubsetKeyword | SubsetMatch
SubsetMatch | MatchingSymbol
SupersetKeyword | SupersetMatch
SupersetMatch | MatchingSymbol
SystemKeyword | SystemSpec, SystemOp
SystemOp | ConfigurationOps, ComponentRef
SystemSpec | ConfigSpec
TTCN3Module | (No references!)
TTCN3ModuleId | TTCN3Module
TTCN3ModuleKeyword | TTCN3Module
TemplateActualPar | TemplateActualParList, TemplateActualParList
TemplateActualParList | TemplateRefWithParList
TemplateBody | TemplateDef, FieldSpec, ArrayElementSpec, ValueOrAttribList, ValueOrAttribList, InLineTemplate
TemplateDef | ModuleDefinition
TemplateFormalPar | TemplateFormalParList, TemplateFormalParList
TemplateFormalParList | BaseTemplate
TemplateIdentifier | BaseTemplate, TemplateRefWithParList, TemplateRef, TemplateRefList, TemplateRefList, DefinitionRef
TemplateInstance | TemplateActualPar, MatchOp, ValueofOp, FunctionActualPar, TestcaseActualPar, SendParameter, CallParameters, PortReplyOp, PortRaiseOp, ReceiveParameter, ValueMatchSpec, CatchOpParameter, SetstateDef
TemplateKeyword | TemplateDef, ExceptTemplateSpec, ImportTemplateSpec, FormalTemplatePar, AllRef
TemplateOps | OpCall
TemplateParIdentifier | TemplateRefWithParList, TemplateRef, ParameterIdentifier, FormalTemplatePar
TemplateRef | DerivedDef
TemplateRefList | ExceptTemplateSpec, ImportTemplateSpec, AllTemplsWithExcept, AllRef
TemplateRefWithParList | SingleValueOrAttrib, DerivedRefWithParList
TestcaseActualPar | TestcaseActualParList, TestcaseActualParList
TestcaseActualParList | TestcaseInstance
TestcaseDef | ModuleDefinition
TestcaseFormalPar | TestcaseFormalParList, TestcaseFormalParList
TestcaseFormalParList | TestcaseDef
TestcaseIdentifier | TestcaseDef, TestcaseRef, TestcaseRefList, TestcaseRefList, DefinitionRef
TestcaseInstance | BehaviourStatements, OpCall
TestcaseKeyword | TestcaseDef, ExceptTestcaseSpec, ImportTestcaseSpec, AllRef
TestcaseRef | TestcaseInstance
TestcaseRefList | ExceptTestcaseSpec, ImportTestcaseSpec, AllTestcasesWithExcept, AllRef
TimeoutKeyword | CatchOpParameter, TimeoutStatement
TimeoutStatement | TimerStatements, GuardOp
TimerIdentifier | SingleTimerInstance, TimerRef, DefinitionRef
TimerInstance | ComponentElementDef, FunctionLocalInst, AltstepLocalDef
TimerKeyword | TimerInstance, TimerRefOrAll, TimerRefOrAny, FormalTimerPar
TimerList | TimerInstance
TimerOps | OpCall
TimerParIdentifier | TimerRef, ParameterIdentifier, FormalTimerPar
TimerRef | FunctionActualPar, StartTimerStatement, TimerRefOrAll, ReadTimerOp, TimerRefOrAny
TimerRefOrAll | StopTimerStatement
TimerRefOrAny | RunningTimerOp, TimeoutStatement
TimerStatements | FunctionStatement, ControlStatement
TimerValue | TestcaseInstance, SingleTimerInstance, CallTimerValue, StartTimerStatement
ToClause | PortSendOp, PortCallOp, PortReplyOp, PortRaiseOp
ToKeyword | ToClause
TriggerOpKeyword | PortTriggerOp
TriggerStatement | CommunicationStatements, GuardOp
Type | StructFieldDef, UnionFieldDef, StructOfDefBody, SubTypeDef, TypeList, TypeList, ProcOrType, ConstDef, BaseTemplate, InLineTemplate, ReturnType, ExceptionTypeList, ExceptionTypeList, ExtConstDef, ModuleParType, VarInstance, FormalValuePar, FormalTemplatePar
TypeActualPar | TypeActualParList, TypeActualParList
TypeActualParList | TypeReference
TypeDef | ModuleDefinition
TypeDefBody | TypeDef
TypeDefIdentifier | TypeRefList, TypeRefList, ExtendedFieldReference
TypeDefKeyword | TypeDef, ExceptTypeDefSpec, ImportTypeDefSpec, AllRef
TypeList | AllOrTypeList
TypeRefList | ExceptTypeDefSpec, ImportTypeDefSpec, AllTypesWithExcept, AllRef
TypeReference | StructFieldRef, ReferencedType
UnaryExpression | MulExpression, MulExpression
UnaryOp | UnaryExpression
Underscore | Identifier
UnionDef | StructuredTypeDef
UnionDefBody | UnionDef
UnionFieldDef | UnionDefBody, UnionDefBody
UnionKeyword | UnionDef
UniversalCharString | PredefinedType
UniversalKeyword | UniversalCharString
UnmapKeyword | UnmapStatement
UnmapStatement | ConfigurationStatements
UpperAlpha | Alpha
UpperBound | RangeDef, StringLength, Range
Value | Primary
ValueKeyword | ReplyValue, ValueSpec, ValueMatchSpec
ValueList | PermutationMatch, Complement, SubsetMatch, SupersetMatch
ValueMatchSpec | PortGetReplyOp
ValueOrAttribList | MatchingSymbol
ValueOrRange | AllowedValues, AllowedValues
ValueParIdentifier | SignatureParIdentifier, VariableRef, ParameterIdentifier, ValueReference, FormalValuePar
ValueReference | ReferencedValue
ValueSpec | PortRedirect, RedirectSpec
ValueofKeyword | ValueofOp
ValueofOp | TemplateOps
VarIdentifier | SingleVarInstance, VariableRef, ValueReference, DefinitionRef
VarInitialValue | SingleVarInstance
VarInstance | ComponentElementDef, FunctionLocalInst, AltstepLocalDef, Initial
VarKeyword | VarInstance
VarList | VarInstance
VariableAssignment | AssignmentList, AssignmentList
VariableEntry | VariableList, VariableList
VariableList | ParaAssignmentList
VariableRef | ComponentIdentifier, AddressRef, ValueSpec, SenderSpec, VariableAssignment, VariableEntry, Assignment
VariationKeyword | AttribKeyword
VerdictOps | OpCall
VerdictStatements | FunctionStatement
VerdictTypeKeyword | PredefinedType
VerdictTypeValue | PredefinedValue
WhileKeyword | WhileStatement, DoWhileStatement
WhileStatement | LoopConstruct
WithAttribList | WithStatement
WithKeyword | WithStatement
WithStatement | TTCN3Module, ModuleDefinition, ModuleControlPart
XorExpression | SingleExpression, SingleExpression

## General Directions

#### Rule-Names

- Clicking on the rule-name will move you to the list of references to the selected rule-name.
- Rule-names which are shown in red cannot be selected because they are never referenced in the specification. If a rule-name other than the root rule-name is shown in red, the specification is not in error, but there are unreferenced (redundant) productions in the specification.

#### References

- Clicking on references in the production will move you to the production with the rule-name selected.
- References which are shown in red cannot be selected because they are never defined in the specification. If there are references shown in red then the specification is either incomplete or in error.