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

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"

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
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
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
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
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
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

References