| 1 | grammar ttcn3_advancedparameterization/bnf;
|
|---|
| 2 |
|
|---|
| 3 | import "ttcn3-4.2.1.bnf"/core;
|
|---|
| 4 |
|
|---|
| 5 | A.1.6.1.14 Type parameter definitions
|
|---|
| 6 |
|
|---|
| 7 | 1. FormalTypeParList ::= "<" FormalTypePar { "," FormalTypePar } ">"
|
|---|
| 8 | 2. FormalTypePar ::= [ InParKeyword ] [ Type | TypeDefKeyword ] TypeParIdentifier [ ":=" Type ]
|
|---|
| 9 | 3. TypeParIdentifier ::= Identifier
|
|---|
| 10 | 4. TypeActualParIdentifier ::= Identifier
|
|---|
| 11 | 5. TypeParAssignment ::= TypeActualParIdentifier ":=" TypeActualPar
|
|---|
| 12 | 6. ActualTypeParList ::= ( "<" ActualTypePar { "," ActualTypePar } ">" ) |
|
|---|
| 13 | ("<" ActualTypeParAssignment { "," ActualTypeParAssignment } ">")
|
|---|
| 14 | 7. ActualTypePar ::= Type | Dash
|
|---|
| 15 | 8. ActualTypeParAssignment ::= TypeActualParIdentifier ":=" ActualTypePar
|
|---|
| 16 | 9. StructDefFormalParList ::= "(" StructDefFormalPar {"," StructDefFormalPar} ")"
|
|---|
| 17 | 10. StructDefFormalPar ::= FormalValuePar
|
|---|
| 18 |
|
|---|
| 19 |
|
|---|
| 20 | // modifications
|
|---|
| 21 |
|
|---|
| 22 | 18. StructDefBody ::= (StructTypeIdentifier | AddressKeyword)
|
|---|
| 23 | [FormalTypeParList] [StructDefFormalParList]
|
|---|
| 24 | "{" [StructFieldDef {"," StructFieldDef}] "}"
|
|---|
| 25 | 34. UnionDefBody ::= (StructTypeIdentifier | AddressKeyword)
|
|---|
| 26 | [FormalTypeParList] [StructDefFormalParList]
|
|---|
| 27 | "{" UnionFieldDef {"," UnionFieldDef} "}"
|
|---|
| 28 | 40. StructOfDefBody ::= (Type | NestedTypeDef) (StructTypeIdentifier | AddressKeyword)
|
|---|
| 29 | [FormalTypeParList] [StructDefFormalParList] [SubTypeSpec]
|
|---|
| 30 | 42. EnumDef ::= EnumKeyword (EnumTypeIdentifier | AddressKeyword) [StructDefFormalParList]
|
|---|
| 31 | "{" EnumerationList "}"
|
|---|
| 32 | 48. SubTypeDef ::= Type (SubTypeIdentifier | AddressKeyword)
|
|---|
| 33 | [FormalTypeParList] [StructDefFormalParList] [ArrayDef] [SubTypeSpec]
|
|---|
| 34 | 56. PortType ::= [GlobalModuleId Dot] PortTypeIdentifier [ActualTypeParList] [ TypeActualParList ]
|
|---|
| 35 | 58. PortDefBody ::= PortTypeIdentifier [FormalTypeParList] [StructDefFormalParList] PortDefAttribs
|
|---|
| 36 | 79. ComponentDef ::= ComponentKeyword ComponentTypeIdentifier
|
|---|
| 37 | [FormalTypeParList] [StructDefFormalParList]
|
|---|
| 38 | [ExtendsKeyword ComponentType {"," ComponentType}]
|
|---|
| 39 | "{" [ComponentDefList] "}"
|
|---|
| 40 | 82. ComponentType ::= [GlobalModuleId Dot] ComponentTypeIdentifier
|
|---|
| 41 | [ActualTypeParList] [ TypeActualParList ]
|
|---|
| 42 | 95. BaseTemplate ::= (Type | Signature) TemplateIdentifier
|
|---|
| 43 | [FormalTypeParList] ["(" TemplateFormalParList ")"]
|
|---|
| 44 | 107. StructFieldRef ::= StructFieldIdentifier| PredefinedType | ReferencedType
|
|---|
| 45 | /* STATIC SEMANTICS - PredefinedType and ReferencedType shall be used for anytype value notation
|
|---|
| 46 | only. PredefinedType shall not be AnyTypeKeyword.*/
|
|---|
| 47 | 160. FunctionDef ::= FunctionKeyword FunctionIdentifier [FormalTypeParList]
|
|---|
| 48 | "("[FunctionFormalParList] ")" [RunsOnSpec] [ReturnType] StatementBlock
|
|---|
| 49 | 177. FunctionInstance ::= FunctionRef [ActualTypeParList] "(" [FunctionActualParList] ")"
|
|---|
| 50 | 182. SignatureDef ::= SignatureKeyword SignatureIdentifier [FormalTypeParList]
|
|---|
| 51 | "("[SignatureFormalParList] ")" [ReturnType | NoBlockKeyword]
|
|---|
| 52 | [ExceptionSpec]
|
|---|
| 53 | 191. Signature ::= [GlobalModuleId Dot] SignatureIdentifier [ActualTypeParList]
|
|---|
| 54 | 192. TestcaseDef ::= TestcaseKeyword TestcaseIdentifier [FormalTypeParList]
|
|---|
| 55 | "("[TestcaseFormalParList] ")" ConfigSpec
|
|---|
| 56 | StatementBlock
|
|---|
| 57 | 200. TestcaseInstance ::= ExecuteKeyword "(" TestcaseRef [ActualTypeParList]
|
|---|
| 58 | "(" [TestcaseActualParList] ")"
|
|---|
| 59 | ["," TimerValue] ")"
|
|---|
| 60 | 205. AltstepDef ::= AltstepKeyword AltstepIdentifier [FormalTypeParList]
|
|---|
| 61 | "("[AltstepFormalParList] ")" [RunsOnSpec]
|
|---|
| 62 | "{" AltstepLocalDefList AltGuardList "}"
|
|---|
| 63 | 211. AltstepInstance ::= AltstepRef [ActualTypeParList] "(" [FunctionActualParList] ")"
|
|---|
| 64 | 456. ReferencedType ::= [GlobalModuleId Dot] TypeReference [TypeActualParList]
|
|---|
| 65 | [ExtendedFieldReference]
|
|---|
| 66 | 457. TypeReference ::= StructTypeIdentifier|
|
|---|
| 67 | EnumTypeIdentifier |
|
|---|
| 68 | SubTypeIdentifier |
|
|---|
| 69 | ComponentTypeIdentifier |
|
|---|
| 70 | PortTypeIdentifier
|
|---|
| 71 | 458. TypeActualParList ::= ( "(" TypeActualPar {"," TypeActualPar} ")" ) |
|
|---|
| 72 | ( "(" TypeParAssignment { "," TypeParAssignment } ")" )
|
|---|
| 73 |
|
|---|
| 74 | 459. TypeActualPar ::= ConstantExpression | TypeActualParIdentifier
|
|---|
| 75 | 603. ExtendedFieldReference ::= {((Dot (StructFieldIdentifier |
|
|---|
| 76 | (TypeDefIdentifier [ActualTypeParList][TypeActualParList])))
|
|---|
| 77 | | ArrayOrBitRef ) }+
|
|---|
| 78 | /* STATIC SEMANTIC - The TypeDefIdentifier shall be used only if the type of the VarInstance or
|
|---|
| 79 | ReferencedValue in wich the ExtendedFieldReference is used is anytype.*/
|
|---|
| 80 |
|
|---|