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