1 | grammar ttcn3;
|
---|
2 |
|
---|
3 | A.1.6 TTCN 3 syntax BNF productions
|
---|
4 | A.1.6.0 TTCN 3 module
|
---|
5 | 1. TTCN3Module ::= TTCN3ModuleKeyword TTCN3ModuleId
|
---|
6 | "{"
|
---|
7 | [ModuleDefinitionsPart]
|
---|
8 | [ModuleControlPart]
|
---|
9 | "}"
|
---|
10 | [WithStatement] [SemiColon]
|
---|
11 | 2. TTCN3ModuleKeyword ::= "module"
|
---|
12 | 3. TTCN3ModuleId ::= ModuleId
|
---|
13 | 4. ModuleId ::= GlobalModuleId [LanguageSpec]
|
---|
14 | 5. GlobalModuleId ::= ModuleIdentifier
|
---|
15 | 6. ModuleIdentifier ::= Identifier
|
---|
16 | 7. LanguageSpec ::= LanguageKeyword FreeText { "," FreeText }
|
---|
17 | 8. LanguageKeyword ::= "language"
|
---|
18 |
|
---|
19 | A.1.6.1 Module definitions part
|
---|
20 | A.1.6.1.0 General
|
---|
21 | 9. ModuleDefinitionsPart ::= ModuleDefinitionsList
|
---|
22 | 10. ModuleDefinitionsList ::= {ModuleDefinition [SemiColon]}+
|
---|
23 | 11. ModuleDefinition ::= ( ([Visibility]
|
---|
24 | ( TypeDef |
|
---|
25 | ConstDef |
|
---|
26 | TemplateDef |
|
---|
27 | ModuleParDef |
|
---|
28 | FunctionDef |
|
---|
29 | SignatureDef |
|
---|
30 | TestcaseDef |
|
---|
31 | AltstepDef |
|
---|
32 | ImportDef |
|
---|
33 | ExtFunctionDef |
|
---|
34 | ExtConstDef )
|
---|
35 | ) |
|
---|
36 | (["public"] GroupDef ) |
|
---|
37 | (["private"] FriendModuleDef )
|
---|
38 | ) [WithStatement]
|
---|
39 | 12. Visibility ::= "public" | "friend" | "private"
|
---|
40 |
|
---|
41 | A.1.6.1.1 Typedef definitions
|
---|
42 | 13. TypeDef ::= TypeDefKeyword TypeDefBody
|
---|
43 | 14. TypeDefBody ::= StructuredTypeDef | SubTypeDef
|
---|
44 | 15. TypeDefKeyword ::= "type"
|
---|
45 | 16. StructuredTypeDef ::= RecordDef |
|
---|
46 | UnionDef |
|
---|
47 | SetDef |
|
---|
48 | RecordOfDef |
|
---|
49 | SetOfDef |
|
---|
50 | EnumDef |
|
---|
51 | PortDef |
|
---|
52 | ComponentDef
|
---|
53 | 17. RecordDef ::= RecordKeyword StructDefBody
|
---|
54 | 18. RecordKeyword ::= "record"
|
---|
55 | 19. StructDefBody ::= (StructTypeIdentifier | AddressKeyword)
|
---|
56 | "{" [StructFieldDef {"," StructFieldDef}] "}"
|
---|
57 | 20. StructTypeIdentifier ::= Identifier
|
---|
58 | 21. StructFieldDef ::= (Type | NestedTypeDef) StructFieldIdentifier [ArrayDef] [SubTypeSpec]
|
---|
59 | [OptionalKeyword]
|
---|
60 | 22. NestedTypeDef ::= NestedRecordDef |
|
---|
61 | NestedUnionDef |
|
---|
62 | NestedSetDef |
|
---|
63 | NestedRecordOfDef |
|
---|
64 | NestedSetOfDef |
|
---|
65 | NestedEnumDef
|
---|
66 | 23. NestedRecordDef ::= RecordKeyword "{" [StructFieldDef {"," StructFieldDef}] "}"
|
---|
67 | 24. NestedUnionDef ::= UnionKeyword "{" UnionFieldDef {"," UnionFieldDef} "}"
|
---|
68 | 25. NestedSetDef ::= SetKeyword "{" [StructFieldDef {"," StructFieldDef}] "}"
|
---|
69 | 26. NestedRecordOfDef ::= RecordKeyword [StringLength] OfKeyword (Type | NestedTypeDef)
|
---|
70 | 27. NestedSetOfDef ::= SetKeyword [StringLength] OfKeyword (Type | NestedTypeDef)
|
---|
71 | 28. NestedEnumDef ::= EnumKeyword "{" EnumerationList "}"
|
---|
72 | 29. StructFieldIdentifier ::= Identifier
|
---|
73 | 30. OptionalKeyword ::= "optional"
|
---|
74 | 31. UnionDef ::= UnionKeyword UnionDefBody
|
---|
75 | 32. UnionKeyword ::= "union"
|
---|
76 | 33. UnionDefBody ::= (StructTypeIdentifier | AddressKeyword)
|
---|
77 | "{" UnionFieldDef {"," UnionFieldDef} "}"
|
---|
78 | 34. UnionFieldDef ::= (Type | NestedTypeDef) StructFieldIdentifier [ArrayDef] [SubTypeSpec]
|
---|
79 | 35. SetDef ::= SetKeyword StructDefBody
|
---|
80 | 36. SetKeyword ::= "set"
|
---|
81 | 37. RecordOfDef ::= RecordKeyword [StringLength] OfKeyword StructOfDefBody
|
---|
82 | 38. OfKeyword ::= "of"
|
---|
83 | 39. StructOfDefBody ::= (Type | NestedTypeDef) (StructTypeIdentifier | AddressKeyword) [SubTypeSpec]
|
---|
84 | 40. SetOfDef ::= SetKeyword [StringLength] OfKeyword StructOfDefBody
|
---|
85 | 41. EnumDef ::= EnumKeyword (EnumTypeIdentifier | AddressKeyword)
|
---|
86 | "{" EnumerationList "}"
|
---|
87 | 42. EnumKeyword ::= "enumerated"
|
---|
88 | 43. EnumTypeIdentifier ::= Identifier
|
---|
89 | 44. EnumerationList ::= Enumeration {"," Enumeration}
|
---|
90 | 45. Enumeration ::= EnumerationIdentifier ["("[Minus] Number ")"]
|
---|
91 | 46. EnumerationIdentifier ::= Identifier
|
---|
92 | 47. SubTypeDef ::= Type (SubTypeIdentifier | AddressKeyword) [ArrayDef] [SubTypeSpec]
|
---|
93 | 48. SubTypeIdentifier ::= Identifier
|
---|
94 | 49. SubTypeSpec ::= AllowedValues [StringLength] | StringLength
|
---|
95 | /* STATIC SEMANTICS - AllowedValues shall be of the same type as the field being subtyped */
|
---|
96 | 50. AllowedValues ::= "(" (ValueOrRange {"," ValueOrRange}) | CharStringMatch ")"
|
---|
97 | 51. ValueOrRange ::= RangeDef | ConstantExpression | Type
|
---|
98 | /* STATIC SEMANTICS - RangeDef production shall only be used with integer, charstring, universal charstring or float based types */
|
---|
99 | /* STATIC SEMANTICS - When subtyping charstring or universal charstring range and values shall not be mixed in the same SubTypeSpec */
|
---|
100 | 52. RangeDef ::= LowerBound ".." UpperBound
|
---|
101 | 53. StringLength ::= LengthKeyword "(" SingleConstExpression [".." UpperBound] ")"
|
---|
102 | /* 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) */
|
---|
103 | 54. LengthKeyword ::= "length"
|
---|
104 | 55. PortType ::= [GlobalModuleId Dot] PortTypeIdentifier
|
---|
105 | 56. PortDef ::= PortKeyword PortDefBody
|
---|
106 | 57. PortDefBody ::= PortTypeIdentifier PortDefAttribs
|
---|
107 | 58. PortKeyword ::= "port"
|
---|
108 | 59. PortTypeIdentifier ::= Identifier
|
---|
109 | 60. PortDefAttribs ::= MessageAttribs | ProcedureAttribs | MixedAttribs
|
---|
110 | 61. MessageAttribs ::= MessageKeyword
|
---|
111 | "{" {MessageList [SemiColon]}+ "}"
|
---|
112 | 62. MessageList ::= Direction AllOrTypeList
|
---|
113 | 63. Direction ::= InParKeyword | OutParKeyword | InOutParKeyword
|
---|
114 | 64. MessageKeyword ::= "message"
|
---|
115 | 65. AllOrTypeList ::= AllKeyword | TypeList
|
---|
116 | /* NOTE: The use of AllKeyword in port definitions is deprecated */
|
---|
117 | 66. AllKeyword ::= "all"
|
---|
118 | 67. TypeList ::= Type {"," Type}
|
---|
119 | 68. ProcedureAttribs ::= ProcedureKeyword
|
---|
120 | "{" {ProcedureList [SemiColon]}+ "}"
|
---|
121 | 69. ProcedureKeyword ::= "procedure"
|
---|
122 | 70. ProcedureList ::= Direction AllOrSignatureList
|
---|
123 | 71. AllOrSignatureList ::= AllKeyword | SignatureList
|
---|
124 | 72. SignatureList ::= Signature {"," Signature}
|
---|
125 | 73. MixedAttribs ::= MixedKeyword
|
---|
126 | "{" {MixedList [SemiColon]}+ "}"
|
---|
127 | 74. MixedKeyword ::= "mixed"
|
---|
128 | 75. MixedList ::= Direction ProcOrTypeList
|
---|
129 | 76. ProcOrTypeList ::= AllKeyword | (ProcOrType {"," ProcOrType})
|
---|
130 | 77. ProcOrType ::= Signature | Type
|
---|
131 | 78. ComponentDef ::= ComponentKeyword ComponentTypeIdentifier
|
---|
132 | [ExtendsKeyword ComponentType {"," ComponentType}]
|
---|
133 | "{" [ComponentDefList] "}"
|
---|
134 | 79. ComponentKeyword ::= "component"
|
---|
135 | 80. ExtendsKeyword ::= "extends"
|
---|
136 | 81. ComponentType ::= [GlobalModuleId Dot] ComponentTypeIdentifier
|
---|
137 | 82. ComponentTypeIdentifier ::= Identifier
|
---|
138 | 83. ComponentDefList ::= {ComponentElementDef [SemiColon]}
|
---|
139 | 84. ComponentElementDef ::= PortInstance | VarInstance | TimerInstance | ConstDef
|
---|
140 | 85. PortInstance ::= PortKeyword PortType PortElement {"," PortElement}
|
---|
141 | 86. PortElement ::= PortIdentifier [ArrayDef]
|
---|
142 | 87. PortIdentifier ::= Identifier
|
---|
143 |
|
---|
144 | A.1.6.1.2 Constant definitions
|
---|
145 | 88. ConstDef ::= ConstKeyword Type ConstList
|
---|
146 | 89. ConstList ::= SingleConstDef {"," SingleConstDef}
|
---|
147 | 90. SingleConstDef ::= ConstIdentifier [ArrayDef] AssignmentChar ConstantExpression
|
---|
148 | 91. ConstKeyword ::= "const"
|
---|
149 | 92. ConstIdentifier ::= Identifier
|
---|
150 |
|
---|
151 | A.1.6.1.3 Template definitions
|
---|
152 | 93. TemplateDef ::= TemplateKeyword [TemplateRestriction] BaseTemplate [DerivedDef]
|
---|
153 | AssignmentChar TemplateBody
|
---|
154 | 94. BaseTemplate ::= (Type | Signature) TemplateIdentifier ["(" TemplateFormalParList ")"]
|
---|
155 | 95. TemplateKeyword ::= "template"
|
---|
156 | 96. TemplateIdentifier ::= Identifier
|
---|
157 | 97. DerivedDef ::= ModifiesKeyword TemplateRef
|
---|
158 | 98. ModifiesKeyword ::= "modifies"
|
---|
159 | 99. TemplateFormalParList ::= TemplateFormalPar {"," TemplateFormalPar}
|
---|
160 | 100. TemplateFormalPar ::= FormalValuePar | FormalTemplatePar
|
---|
161 | /* STATIC SEMANTICS - FormalValuePar shall resolve to an in parameter */
|
---|
162 | 101. TemplateBody ::= (SimpleSpec | FieldSpecList | ArrayValueOrAttrib) [ExtraMatchingAttributes]
|
---|
163 | /* STATIC SEMANTICS - Within TeplateBody the ArrayValueOrAttrib can be used for array, record, record of and set of types. */
|
---|
164 | 102. SimpleSpec ::= SingleValueOrAttrib
|
---|
165 | 103. FieldSpecList ::= "{"[FieldSpec {"," FieldSpec}] "}"
|
---|
166 | 104. FieldSpec ::= FieldReference AssignmentChar TemplateBody
|
---|
167 | 105. FieldReference ::= StructFieldRef | ArrayOrBitRef | ParRef
|
---|
168 | 106. StructFieldRef ::= StructFieldIdentifier| PredefinedType | TypeReference
|
---|
169 | /* STATIC SEMANTICS - PredefinedType and TypeReference shall be used for anytype value notation only. PredefinedType shall not be AnyTypeKeyword.*/
|
---|
170 | 107. ParRef ::= SignatureParIdentifier
|
---|
171 | /* STATIC SEMANTICS - SignatureParIdentifier shall be a formal parameter identifier from the associated signature definition */
|
---|
172 | 108. SignatureParIdentifier ::= ValueParIdentifier
|
---|
173 | 109. ArrayOrBitRef ::= "[" FieldOrBitNumber "]"
|
---|
174 | /* STATIC SEMANTICS - ArrayRef shall be optionally used for array types and TTCN 3 record of and set of. The same notation can be used for a Bit reference inside an TTCN 3 charstring, universal charstring, bitstring, octetstring and hexstring type */
|
---|
175 | 110. FieldOrBitNumber ::= SingleExpression
|
---|
176 | /* STATIC SEMANTICS - SingleExpression will resolve to a value of integer type */
|
---|
177 | 111. SingleValueOrAttrib ::= MatchingSymbol |
|
---|
178 | SingleExpression |
|
---|
179 | ( TemplateRefWithParList [ ExtendedFieldReference ] )
|
---|
180 | /* STATIC SEMANTIC - VariableIdentifier (accessed via singleExpression) may only be used in in-line template definitions to reference variables in the current scope */
|
---|
181 | 112. ArrayValueOrAttrib ::= "{" ArrayElementSpecList "}"
|
---|
182 | 113. ArrayElementSpecList ::= ArrayElementSpec {"," ArrayElementSpec}
|
---|
183 | 114. ArrayElementSpec ::= NotUsedSymbol | PermutationMatch | TemplateBody
|
---|
184 | 115. NotUsedSymbol ::= Dash
|
---|
185 | 116. MatchingSymbol ::= Complement |
|
---|
186 | AnyValue |
|
---|
187 | AnyOrOmit |
|
---|
188 | ValueOrAttribList |
|
---|
189 | Range |
|
---|
190 | BitStringMatch |
|
---|
191 | HexStringMatch |
|
---|
192 | OctetStringMatch |
|
---|
193 | CharStringMatch |
|
---|
194 | SubsetMatch |
|
---|
195 | SupersetMatch
|
---|
196 | 117. ExtraMatchingAttributes ::= LengthMatch | IfPresentMatch | (LengthMatch IfPresentMatch)
|
---|
197 | 118. BitStringMatch ::= "'" {BinOrMatch} "'" "B"
|
---|
198 | 119. BinOrMatch ::= Bin | AnyValue | AnyOrOmit
|
---|
199 | 120. HexStringMatch ::= "'" {HexOrMatch} "'" "H"
|
---|
200 | 121. HexOrMatch ::= Hex | AnyValue | AnyOrOmit
|
---|
201 | 122. OctetStringMatch ::= "'" {OctOrMatch} "'" "O"
|
---|
202 | 123. OctOrMatch ::= Oct | AnyValue | AnyOrOmit
|
---|
203 | 124. CharStringMatch ::= PatternKeyword Pattern {"&" (Pattern | ReferencedValue)}
|
---|
204 | 125. PatternKeyword ::= "pattern"
|
---|
205 | 126. Pattern ::= """ { PatternElement } """
|
---|
206 | 127. PatternElement ::=
|
---|
207 | ("\" ("?" | "*" | "\" | "[" | "]" | "{" | "}" | """ | "|" | "(" | ")" | "#" | "+" |
|
---|
208 | "d" | "w" | "t" | "n" | "r" | "s" | "b")) |
|
---|
209 | ("?" | "*" | "\" | "|" | "+") |
|
---|
210 | ("[" ["^"] [ {PatternChar ["-" PatternChar] } ] "]") |
|
---|
211 | ("{" ReferencedValue "}") |
|
---|
212 | ("\" "N" "{" (ReferencedValue | Type) "}") |
|
---|
213 | (""" """) |
|
---|
214 | ("(" PatternElement ")") |
|
---|
215 | ("#" (Num | ("(" Num "," [Num] ")") | ("(" "," Num ")"))) |
|
---|
216 | PatternChar
|
---|
217 | 128. PatternChar ::= Char | PatternQuadruple
|
---|
218 | 129. PatternQuadruple ::= "\" "q" "(" Group "," Plane "," Row "," Cell ")"
|
---|
219 | 130. Complement ::= ComplementKeyword "(" TemplateBody {"," TemplateBody} ")"
|
---|
220 | 131. ComplementKeyword ::= "complement"
|
---|
221 | 132. SubsetMatch ::= SubsetKeyword ValueOrAttribList
|
---|
222 | 133. SubsetKeyword ::= "subset"
|
---|
223 | 134. SupersetMatch ::= SupersetKeyword ValueOrAttribList
|
---|
224 | 135. SupersetKeyword ::= "superset"
|
---|
225 | 136. PermutationMatch ::= PermutationKeyword PermutationList
|
---|
226 | 137. PermutationKeyword ::= "permutation"
|
---|
227 | 138. PermutationList ::= "(" TemplateBody { "," TemplateBody } ")"
|
---|
228 | /* STATIC SEMANTICS: Restrictions on the content of TemplateBody are given in clause B.1.3.3 */
|
---|
229 | 139. AnyValue ::= "?"
|
---|
230 | 140. AnyOrOmit ::= "*"
|
---|
231 | 141. ValueOrAttribList ::= "(" TemplateBody {"," TemplateBody}+ ")"
|
---|
232 | 142. LengthMatch ::= StringLength
|
---|
233 | 143. IfPresentMatch ::= IfPresentKeyword
|
---|
234 | 144. IfPresentKeyword ::= "ifpresent"
|
---|
235 | 145. PresentKeyword ::= "present"
|
---|
236 | 146. Range ::= "(" LowerBound ".." UpperBound ")"
|
---|
237 | 147. LowerBound ::= SingleConstExpression | (Minus InfinityKeyword)
|
---|
238 | 148. UpperBound ::= SingleConstExpression | InfinityKeyword
|
---|
239 | /* 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*/
|
---|
240 | 149. InfinityKeyword ::= "infinity"
|
---|
241 | 150. TemplateInstance ::= InLineTemplate
|
---|
242 | 151. TemplateInstanceAssignment ::= ( TemplateParIdentifier | ValueParIdentifier )
|
---|
243 | ":=" InLineTemplate
|
---|
244 | /* STATIC SEMANTICS if a value parameter is used, the inline template shall evaluate to a value */
|
---|
245 | 152. TemplateRefWithParList ::= [GlobalModuleId Dot] ( TemplateIdentifier [TemplateActualParList] |
|
---|
246 | TemplateParIdentifier )
|
---|
247 | 153. TemplateRef ::= [GlobalModuleId Dot] TemplateIdentifier | TemplateParIdentifier
|
---|
248 | 154. InLineTemplate ::= [(Type | Signature) Colon] [DerivedRefWithParList AssignmentChar]
|
---|
249 | TemplateBody
|
---|
250 | 155. DerivedRefWithParList ::= ModifiesKeyword TemplateRefWithParList
|
---|
251 | 156. TemplateActualParList ::= "(" [( TemplateActualPar {"," TemplateActualPar}) |
|
---|
252 | ( TemplateActualParAssignment {"," TemplateActualParAssignment })]")"
|
---|
253 | 157. TemplateActualPar ::= TemplateInstance | Dash
|
---|
254 | /* STATIC SEMANTICS - When the corresponding formal parameter is not of template type the TemplateInstance production shall resolve to one or more SingleExpressions */
|
---|
255 | 158. TemplateActualParAssignment ::= TemplateInstanceAssignment
|
---|
256 | 159. TemplateOps ::= MatchOp | ValueofOp
|
---|
257 | 160. MatchOp ::= MatchKeyword "(" Expression "," TemplateInstance")"
|
---|
258 | 161. MatchKeyword ::= "match"
|
---|
259 | 162. ValueofOp ::= ValueofKeyword "(" TemplateInstance ")"
|
---|
260 | 163. ValueofKeyword ::= "valueof"
|
---|
261 |
|
---|
262 | A.1.6.1.4 Function definitions
|
---|
263 | 164. FunctionDef ::= FunctionKeyword FunctionIdentifier
|
---|
264 | "("[FunctionFormalParList] ")" [RunsOnSpec] [ReturnType]
|
---|
265 | StatementBlock
|
---|
266 | 165. FunctionKeyword ::= "function"
|
---|
267 | 166. FunctionIdentifier ::= Identifier
|
---|
268 | 167. FunctionFormalParList ::= FunctionFormalPar {"," FunctionFormalPar}
|
---|
269 | 168. FunctionFormalPar ::= FormalValuePar |
|
---|
270 | FormalTimerPar |
|
---|
271 | FormalTemplatePar |
|
---|
272 | FormalPortPar
|
---|
273 | 169. ReturnType ::= ReturnKeyword [TemplateKeyword | RestrictedTemplate] Type
|
---|
274 | 170. ReturnKeyword ::= "return"
|
---|
275 | 171. RunsOnSpec ::= RunsKeyword OnKeyword ComponentType
|
---|
276 | 172. RunsKeyword ::= "runs"
|
---|
277 | 173. OnKeyword ::= "on"
|
---|
278 | 174. MTCKeyword ::= "mtc"
|
---|
279 | 175. StatementBlock ::= "{" [FunctionDefList] [FunctionStatementList] "}"
|
---|
280 | 176. FunctionDefList::= {(FunctionLocalDef | FunctionLocalInst)[SemiColon]}+
|
---|
281 | 177. FunctionStatementList::= {FunctionStatement [SemiColon]}+
|
---|
282 | 178. FunctionLocalInst ::= VarInstance | TimerInstance
|
---|
283 | 179. FunctionLocalDef ::= ConstDef | TemplateDef
|
---|
284 | 180. FunctionStatement ::= ConfigurationStatements |
|
---|
285 | TimerStatements |
|
---|
286 | CommunicationStatements |
|
---|
287 | BasicStatements |
|
---|
288 | BehaviourStatements |
|
---|
289 | VerdictStatements |
|
---|
290 | SUTStatements
|
---|
291 | 181. FunctionInstance ::= FunctionRef "(" [FunctionActualParList] ")"
|
---|
292 | 182. FunctionRef ::= [GlobalModuleId Dot] (FunctionIdentifier | ExtFunctionIdentifier ) |
|
---|
293 | PreDefFunctionIdentifier
|
---|
294 | 183. PreDefFunctionIdentifier ::= Identifier
|
---|
295 | /* STATIC SEMANTICS - The Identifier shall be one of the pre-defined TTCN 3 Function Identifiers from Annex C of ES 201 873-1 */
|
---|
296 | 184. FunctionActualParList ::= ( FunctionActualPar {"," FunctionActualPar} ) |
|
---|
297 | ( FunctionActualParAssignment { "," FunctionActualParAssignment } )
|
---|
298 | 185. FunctionActualPar ::= TimerRef |
|
---|
299 | TemplateInstance |
|
---|
300 | Port |
|
---|
301 | ComponentRef |
|
---|
302 | Dash
|
---|
303 | /* 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 */
|
---|
304 | 186. FunctionActualParAssignment ::= TemplateInstanceAssignment | ComponentRefAssignment |
|
---|
305 | PortAssignment | TimerRefAssignment
|
---|
306 | 187. TimerRefAssignment ::= TimerParIdentifier ":=" TimerRef
|
---|
307 | 188. PortAssignment ::= PortParIdentifier ":=" Port
|
---|
308 |
|
---|
309 | A.1.6.1.5 Signature definitions
|
---|
310 | 189. SignatureDef ::= SignatureKeyword SignatureIdentifier
|
---|
311 | "("[SignatureFormalParList] ")" [ReturnType | NoBlockKeyword]
|
---|
312 | [ExceptionSpec]
|
---|
313 | 190. SignatureKeyword ::= "signature"
|
---|
314 | 191. SignatureIdentifier ::= Identifier
|
---|
315 | 192. SignatureFormalParList ::= SignatureFormalPar {"," SignatureFormalPar}
|
---|
316 | 193. SignatureFormalPar ::= FormalValuePar
|
---|
317 | 194. ExceptionSpec ::= ExceptionKeyword "(" ExceptionTypeList ")"
|
---|
318 | 195. ExceptionKeyword ::= "exception"
|
---|
319 | 196. ExceptionTypeList ::= Type {"," Type}
|
---|
320 | 197. NoBlockKeyword ::= "noblock"
|
---|
321 | 198. Signature ::= [GlobalModuleId Dot] SignatureIdentifier
|
---|
322 |
|
---|
323 | A.1.6.1.6 Testcase definitions
|
---|
324 | 199. TestcaseDef ::= TestcaseKeyword TestcaseIdentifier
|
---|
325 | "("[TestcaseFormalParList] ")" ConfigSpec
|
---|
326 | StatementBlock
|
---|
327 | 200. TestcaseKeyword ::= "testcase"
|
---|
328 | 201. TestcaseIdentifier ::= Identifier
|
---|
329 | 202. TestcaseFormalParList ::= TestcaseFormalPar {"," TestcaseFormalPar}
|
---|
330 | 203. TestcaseFormalPar ::= FormalValuePar |
|
---|
331 | FormalTemplatePar
|
---|
332 | 204. ConfigSpec ::= RunsOnSpec [SystemSpec]
|
---|
333 | 205. SystemSpec ::= SystemKeyword ComponentType
|
---|
334 | 206. SystemKeyword ::= "system"
|
---|
335 | 207. TestcaseInstance ::= ExecuteKeyword "(" TestcaseRef "(" [TestcaseActualParList] ")"
|
---|
336 | ["," TimerValue] ")"
|
---|
337 | 208. ExecuteKeyword ::= "execute"
|
---|
338 | 209. TestcaseRef ::= [GlobalModuleId Dot] TestcaseIdentifier
|
---|
339 | 210. TestcaseActualParList ::= ( TestcaseActualPar {"," TestcaseActualPar} ) |
|
---|
340 | ( TestcaseActualParAssignment { "," TestcaseActualParAssignment })
|
---|
341 | 211. TestcaseActualPar ::= TemplateInstance | Dash
|
---|
342 | /* 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 */
|
---|
343 | 212. TestcaseActualParAssignment ::= TemplateInstanceAssignment
|
---|
344 |
|
---|
345 | A.1.6.1.7 Altstep definitions
|
---|
346 | 213. AltstepDef ::= AltstepKeyword AltstepIdentifier
|
---|
347 | "("[AltstepFormalParList] ")" [RunsOnSpec]
|
---|
348 | "{" AltstepLocalDefList AltGuardList "}"
|
---|
349 | 214. AltstepKeyword ::= "altstep"
|
---|
350 | 215. AltstepIdentifier ::= Identifier
|
---|
351 | 216. AltstepFormalParList ::= FunctionFormalParList
|
---|
352 | 217. AltstepLocalDefList ::= {AltstepLocalDef [SemiColon]}
|
---|
353 | 218. AltstepLocalDef ::= VarInstance | TimerInstance | ConstDef | TemplateDef
|
---|
354 | 219. AltstepInstance ::= AltstepRef "(" [FunctionActualParList] ")"
|
---|
355 | 220. AltstepRef ::= [GlobalModuleId Dot] AltstepIdentifier
|
---|
356 |
|
---|
357 | A.1.6.1.8 Import definitions
|
---|
358 | 221. ImportDef ::= ImportKeyword ImportFromSpec (AllWithExcepts | ("{" ImportSpec "}"))
|
---|
359 | 222. ImportKeyword ::= "import"
|
---|
360 | 223. AllWithExcepts ::= AllKeyword [ExceptsDef]
|
---|
361 | 224. ExceptsDef ::= ExceptKeyword "{" ExceptSpec "}"
|
---|
362 | 225. ExceptKeyword ::= "except"
|
---|
363 | 226. ExceptSpec ::= {ExceptElement [SemiColon]}
|
---|
364 | 227. ExceptElement ::= ExceptGroupSpec |
|
---|
365 | ExceptTypeDefSpec |
|
---|
366 | ExceptTemplateSpec |
|
---|
367 | ExceptConstSpec |
|
---|
368 | ExceptTestcaseSpec |
|
---|
369 | ExceptAltstepSpec |
|
---|
370 | ExceptFunctionSpec |
|
---|
371 | ExceptSignatureSpec |
|
---|
372 | ExceptModuleParSpec
|
---|
373 | 228. ExceptGroupSpec ::= GroupKeyword (ExceptGroupRefList | AllKeyword)
|
---|
374 | 229. ExceptTypeDefSpec ::= TypeDefKeyword (TypeRefList | AllKeyword)
|
---|
375 | 230. ExceptTemplateSpec ::= TemplateKeyword (TemplateRefList | AllKeyword)
|
---|
376 | 231. ExceptConstSpec ::= ConstKeyword (ConstRefList | AllKeyword)
|
---|
377 | 232. ExceptTestcaseSpec ::= TestcaseKeyword (TestcaseRefList | AllKeyword)
|
---|
378 | 233. ExceptAltstepSpec ::= AltstepKeyword (AltstepRefList | AllKeyword)
|
---|
379 | 234. ExceptFunctionSpec ::= FunctionKeyword (FunctionRefList | AllKeyword)
|
---|
380 | 235. ExceptSignatureSpec ::= SignatureKeyword (SignatureRefList | AllKeyword)
|
---|
381 | 236. ExceptModuleParSpec ::= ModuleParKeyword (ModuleParRefList | AllKeyword)
|
---|
382 | 237. ImportSpec ::= {ImportElement [SemiColon]}
|
---|
383 | 238. ImportElement ::= ImportGroupSpec |
|
---|
384 | ImportTypeDefSpec |
|
---|
385 | ImportTemplateSpec |
|
---|
386 | ImportConstSpec |
|
---|
387 | ImportTestcaseSpec |
|
---|
388 | ImportAltstepSpec |
|
---|
389 | ImportFunctionSpec |
|
---|
390 | ImportSignatureSpec |
|
---|
391 | ImportModuleParSpec |
|
---|
392 | ImportImportSpec
|
---|
393 | 239. ImportFromSpec ::= FromKeyword ModuleId [RecursiveKeyword]
|
---|
394 | 240. RecursiveKeyword ::= "recursive"
|
---|
395 | 241. ImportGroupSpec ::= GroupKeyword (GroupRefListWithExcept | AllGroupsWithExcept)
|
---|
396 | 242. GroupRefList ::= FullGroupIdentifier {"," FullGroupIdentifier}
|
---|
397 | 243. GroupRefListWithExcept ::= FullGroupIdentifierWithExcept {"," FullGroupIdentifierWithExcept}
|
---|
398 | 244. AllGroupsWithExcept ::= AllKeyword [ExceptKeyword GroupRefList]
|
---|
399 | 245. FullGroupIdentifier ::= GroupIdentifier {Dot GroupIdentifier}
|
---|
400 | 246. FullGroupIdentifierWithExcept ::= FullGroupIdentifier [ExceptsDef]
|
---|
401 | 247. ExceptGroupRefList ::= ExceptFullGroupIdentifier {"," ExceptFullGroupIdentifier}
|
---|
402 | 248. ExceptFullGroupIdentifier ::= FullGroupIdentifier
|
---|
403 | 249. ImportTypeDefSpec ::= TypeDefKeyword (TypeRefList | AllTypesWithExcept)
|
---|
404 | 250. TypeRefList ::= TypeDefIdentifier {"," TypeDefIdentifier}
|
---|
405 | 251. AllTypesWithExcept ::= AllKeyword [ExceptKeyword TypeRefList]
|
---|
406 | 252. TypeDefIdentifier ::= StructTypeIdentifier |
|
---|
407 | EnumTypeIdentifier |
|
---|
408 | PortTypeIdentifier |
|
---|
409 | ComponentTypeIdentifier |
|
---|
410 | SubTypeIdentifier
|
---|
411 | 253. ImportTemplateSpec ::= TemplateKeyword (TemplateRefList | AllTemplsWithExcept)
|
---|
412 | 254. TemplateRefList ::= TemplateIdentifier {"," TemplateIdentifier}
|
---|
413 | 255. AllTemplsWithExcept ::= AllKeyword [ExceptKeyword TemplateRefList]
|
---|
414 | 256. ImportConstSpec ::= ConstKeyword (ConstRefList | AllConstsWithExcept)
|
---|
415 | 257. ConstRefList ::= ConstIdentifier {"," ConstIdentifier}
|
---|
416 | 258. AllConstsWithExcept ::= AllKeyword [ExceptKeyword ConstRefList]
|
---|
417 | 259. ImportAltstepSpec ::= AltstepKeyword (AltstepRefList | AllAltstepsWithExcept)
|
---|
418 | 260. AltstepRefList ::= AltstepIdentifier {"," AltstepIdentifier}
|
---|
419 | 261. AllAltstepsWithExcept ::= AllKeyword [ExceptKeyword AltstepRefList]
|
---|
420 | 262. ImportTestcaseSpec ::= TestcaseKeyword (TestcaseRefList | AllTestcasesWithExcept)
|
---|
421 | 263. TestcaseRefList ::= TestcaseIdentifier {"," TestcaseIdentifier}
|
---|
422 | 264. AllTestcasesWithExcept ::= AllKeyword [ExceptKeyword TestcaseRefList]
|
---|
423 | 265. ImportFunctionSpec ::= FunctionKeyword (FunctionRefList | AllFunctionsWithExcept)
|
---|
424 | 266. FunctionRefList ::= FunctionIdentifier {"," FunctionIdentifier}
|
---|
425 | 267. AllFunctionsWithExcept ::= AllKeyword [ExceptKeyword FunctionRefList]
|
---|
426 | 268. ImportSignatureSpec ::= SignatureKeyword (SignatureRefList | AllSignaturesWithExcept)
|
---|
427 | 269. SignatureRefList ::= SignatureIdentifier {"," SignatureIdentifier}
|
---|
428 | 270. AllSignaturesWithExcept ::= AllKeyword [ExceptKeyword SignatureRefList]
|
---|
429 | 271. ImportModuleParSpec ::= ModuleParKeyword (ModuleParRefList | AllModuleParWithExcept)
|
---|
430 | 272. ModuleParRefList ::= ModuleParIdentifier {"," ModuleParIdentifier}
|
---|
431 | 273. AllModuleParWithExcept ::= AllKeyword [ExceptKeyword ModuleParRefList]
|
---|
432 | 274. ImportImportSpec ::= ImportKeyword AllKeyword
|
---|
433 |
|
---|
434 | A.1.6.1.9 Group definitions
|
---|
435 | 275. GroupDef ::= GroupKeyword GroupIdentifier
|
---|
436 | "{" [ModuleDefinitionsPart] "}"
|
---|
437 | 276. GroupKeyword ::= "group"
|
---|
438 | 277. GroupIdentifier ::= Identifier
|
---|
439 |
|
---|
440 | A.1.6.1.10 External function definitions
|
---|
441 | 278. ExtFunctionDef ::= ExtKeyword FunctionKeyword ExtFunctionIdentifier
|
---|
442 | "("[FunctionFormalParList] ")" [ReturnType]
|
---|
443 | 279. ExtKeyword ::= "external"
|
---|
444 | 280. ExtFunctionIdentifier ::= Identifier
|
---|
445 |
|
---|
446 | A.1.6.1.11 External constant definitions
|
---|
447 | 281. ExtConstDef ::= ExtKeyword ConstKeyword Type ExtConstIdentifierList
|
---|
448 | 282. ExtConstIdentifierList ::= ExtConstIdentifier { "," ExtConstIdentifier }
|
---|
449 | 283. ExtConstIdentifier ::= Identifier
|
---|
450 |
|
---|
451 | A.1.6.1.12 Module parameter definitions
|
---|
452 | 284. ModuleParDef ::= ModuleParKeyword ( ModulePar | ("{" MultitypedModuleParList "}"))
|
---|
453 | 285. ModuleParKeyword ::= "modulepar"
|
---|
454 | 286. MultitypedModuleParList ::= { ModulePar [SemiColon] }
|
---|
455 | 287. ModulePar ::= ModuleParType ModuleParList
|
---|
456 | 288. ModuleParType ::= Type
|
---|
457 | 289. ModuleParList ::= ModuleParIdentifier [AssignmentChar ConstantExpression]
|
---|
458 | {","ModuleParIdentifier [AssignmentChar ConstantExpression]}
|
---|
459 | 290. ModuleParIdentifier ::= Identifier
|
---|
460 |
|
---|
461 | A.1.6.1.13 Friend module definitions
|
---|
462 | 291. FriendModuleDef ::= "friend" "module" ModuleIdentifier {"," ModuleIdentifier } [SemiColon]
|
---|
463 |
|
---|
464 | A.1.6.2 Control part
|
---|
465 | A.1.6.2.0 General
|
---|
466 | 292. ModuleControlPart ::= ControlKeyword
|
---|
467 | "{" ModuleControlBody "}"
|
---|
468 | [WithStatement] [SemiColon]
|
---|
469 | 293. ControlKeyword ::= "control"
|
---|
470 | 294. ModuleControlBody ::= [ControlStatementOrDefList]
|
---|
471 | 295. ControlStatementOrDefList ::= {ControlStatementOrDef [SemiColon]}+
|
---|
472 | 296. ControlStatementOrDef ::= FunctionLocalDef |
|
---|
473 | FunctionLocalInst |
|
---|
474 | ControlStatement
|
---|
475 | 297. ControlStatement ::= TimerStatements |
|
---|
476 | BasicStatements |
|
---|
477 | BehaviourStatements |
|
---|
478 | SUTStatements |
|
---|
479 | StopKeyword
|
---|
480 |
|
---|
481 | A.1.6.2.1 Variable instantiation
|
---|
482 | 298. VarInstance ::= VarKeyword ((Type VarList)
|
---|
483 | | (( TemplateKeyword | RestrictedTemplate ) Type TempVarList))
|
---|
484 | 299. VarList ::= SingleVarInstance {"," SingleVarInstance}
|
---|
485 | 300. SingleVarInstance ::= VarIdentifier [ArrayDef] [AssignmentChar VarInitialValue]
|
---|
486 | 301. VarInitialValue ::= Expression
|
---|
487 | 302. VarKeyword ::= "var"
|
---|
488 | 303. VarIdentifier ::= Identifier
|
---|
489 | 304. TempVarList ::= SingleTempVarInstance {"," SingleTempVarInstance}
|
---|
490 | 305. SingleTempVarInstance ::= VarIdentifier [ArrayDef] [AssignmentChar TempVarInitialValue]
|
---|
491 | 306. TempVarInitialValue ::= TemplateBody
|
---|
492 | 307. VariableRef ::= ( VarIdentifier | ValueParIdentifier | TemplateParIdentifier )
|
---|
493 | [ ExtendedFieldReference ]
|
---|
494 |
|
---|
495 | A.1.6.2.2 Timer instantiation
|
---|
496 | 308. TimerInstance ::= TimerKeyword TimerList
|
---|
497 | 309. TimerList ::= SingleTimerInstance{"," SingleTimerInstance}
|
---|
498 | 310. SingleTimerInstance ::= TimerIdentifier [ArrayDef] [AssignmentChar TimerValue]
|
---|
499 | 311. TimerKeyword ::= "timer"
|
---|
500 | 312. TimerIdentifier ::= Identifier
|
---|
501 | 313. TimerValue ::= Expression
|
---|
502 | 314. TimerRef ::= (TimerIdentifier | TimerParIdentifier) {ArrayOrBitRef}
|
---|
503 |
|
---|
504 | A.1.6.2.3 Component operations
|
---|
505 | 315. ConfigurationStatements ::= ConnectStatement |
|
---|
506 | MapStatement |
|
---|
507 | DisconnectStatement |
|
---|
508 | UnmapStatement |
|
---|
509 | DoneStatement |
|
---|
510 | KilledStatement |
|
---|
511 | StartTCStatement |
|
---|
512 | StopTCStatement |
|
---|
513 | KillTCStatement
|
---|
514 | 316. ConfigurationOps ::= CreateOp | SelfOp | SystemOp | MTCOp | RunningOp | AliveOp
|
---|
515 | 317. CreateOp ::= ComponentType Dot CreateKeyword ["(" SingleExpression ")"] [AliveKeyword]
|
---|
516 | 318. SystemOp ::= SystemKeyword
|
---|
517 | 319. SelfOp ::= "self"
|
---|
518 | 320. MTCOp ::= MTCKeyword
|
---|
519 | 321. DoneStatement ::= ComponentId Dot DoneKeyword
|
---|
520 | 322. KilledStatement ::= ComponentId Dot KilledKeyword
|
---|
521 | 323. ComponentId ::= ComponentOrDefaultReference | (AnyKeyword | AllKeyword) ComponentKeyword
|
---|
522 | 324. DoneKeyword ::= "done"
|
---|
523 | 325. KilledKeyword ::= "killed"
|
---|
524 | 326. RunningOp ::= ComponentId Dot RunningKeyword
|
---|
525 | 327. RunningKeyword ::= "running"
|
---|
526 | 328. AliveOp ::= ComponentId Dot AliveKeyword
|
---|
527 | 329. CreateKeyword ::= "create"
|
---|
528 | 330. AliveKeyword ::= "alive"
|
---|
529 | 331. ConnectStatement ::= ConnectKeyword SingleConnectionSpec
|
---|
530 | 332. ConnectKeyword ::= "connect"
|
---|
531 | 333. SingleConnectionSpec ::= "(" PortRef "," PortRef ")"
|
---|
532 | 334. PortRef ::= ComponentRef Colon Port
|
---|
533 | 335. ComponentRef ::= ComponentOrDefaultReference | SystemOp | SelfOp | MTCOp
|
---|
534 | 336. ComponentRefAssignment ::= ValueParIdentifier ":=" ComponentRef
|
---|
535 | 337. DisconnectStatement ::= DisconnectKeyword [SingleOrMultiConnectionSpec]
|
---|
536 | 338. SingleOrMultiConnectionSpec ::= SingleConnectionSpec |
|
---|
537 | AllConnectionsSpec |
|
---|
538 | AllPortsSpec |
|
---|
539 | AllCompsAllPortsSpec
|
---|
540 | 339. AllConnectionsSpec ::= "(" PortRef ")"
|
---|
541 | 340. AllPortsSpec ::= "(" ComponentRef ":" AllKeyword PortKeyword ")"
|
---|
542 | 341. AllCompsAllPortsSpec ::= "(" AllKeyword ComponentKeyword ":" AllKeyword PortKeyword ")"
|
---|
543 | 342. DisconnectKeyword ::= "disconnect"
|
---|
544 | 343. MapStatement ::= MapKeyword SingleConnectionSpec
|
---|
545 | 344. MapKeyword ::= "map"
|
---|
546 | 345. UnmapStatement ::= UnmapKeyword [SingleOrMultiConnectionSpec]
|
---|
547 | 346. UnmapKeyword ::= "unmap"
|
---|
548 | 347. StartTCStatement ::= ComponentOrDefaultReference Dot StartKeyword "(" FunctionInstance ")"
|
---|
549 | 348. StartKeyword ::= "start"
|
---|
550 | 349. StopTCStatement ::= StopKeyword | (ComponentReferenceOrLiteral Dot StopKeyword) |
|
---|
551 | (AllKeyword ComponentKeyword Dot StopKeyword)
|
---|
552 | 350. ComponentReferenceOrLiteral ::= ComponentOrDefaultReference | MTCOp | SelfOp
|
---|
553 | 351. KillTCStatement ::= KillKeyword | (ComponentReferenceOrLiteral Dot KillKeyword) |
|
---|
554 | (AllKeyword ComponentKeyword Dot KillKeyword)
|
---|
555 | 352. ComponentOrDefaultReference ::= VariableRef | FunctionInstance
|
---|
556 | 353. KillKeyword ::= "kill"
|
---|
557 |
|
---|
558 | A.1.6.2.4 Port operations
|
---|
559 | 354. Port ::= (PortIdentifier | PortParIdentifier) {ArrayOrBitRef}
|
---|
560 | 355. CommunicationStatements ::= SendStatement |
|
---|
561 | CallStatement |
|
---|
562 | ReplyStatement |
|
---|
563 | RaiseStatement |
|
---|
564 | ReceiveStatement |
|
---|
565 | TriggerStatement |
|
---|
566 | GetCallStatement |
|
---|
567 | GetReplyStatement |
|
---|
568 | CatchStatement |
|
---|
569 | CheckStatement |
|
---|
570 | ClearStatement |
|
---|
571 | StartStatement |
|
---|
572 | StopStatement |
|
---|
573 | HaltStatement
|
---|
574 | 356. SendStatement ::= Port Dot PortSendOp
|
---|
575 | 357. PortSendOp ::= SendOpKeyword "(" SendParameter ")" [ToClause]
|
---|
576 | 358. SendOpKeyword ::= "send"
|
---|
577 | 359. SendParameter ::= TemplateInstance
|
---|
578 | 360. ToClause ::= ToKeyword ( AddressRef |
|
---|
579 | AddressRefList |
|
---|
580 | AllKeyword ComponentKeyword )
|
---|
581 | 361. AddressRefList ::= "(" AddressRef {"," AddressRef} ")"
|
---|
582 | 362. ToKeyword ::= "to"
|
---|
583 | 363. AddressRef ::= TemplateInstance
|
---|
584 | 364. CallStatement ::= Port Dot PortCallOp [PortCallBody]
|
---|
585 | 365. PortCallOp ::= CallOpKeyword "(" CallParameters ")" [ToClause]
|
---|
586 | 366. CallOpKeyword ::= "call"
|
---|
587 | 367. CallParameters ::= TemplateInstance ["," CallTimerValue]
|
---|
588 | 368. CallTimerValue ::= TimerValue | NowaitKeyword
|
---|
589 | 369. NowaitKeyword ::= "nowait"
|
---|
590 | 370. PortCallBody ::= "{" CallBodyStatementList "}"
|
---|
591 | 371. CallBodyStatementList ::= {CallBodyStatement [SemiColon]}+
|
---|
592 | 372. CallBodyStatement ::= CallBodyGuard StatementBlock
|
---|
593 | 373. CallBodyGuard ::= AltGuardChar CallBodyOps
|
---|
594 | 374. CallBodyOps ::= GetReplyStatement | CatchStatement
|
---|
595 | 375. ReplyStatement ::= Port Dot PortReplyOp
|
---|
596 | 376. PortReplyOp ::= ReplyKeyword "(" TemplateInstance [ReplyValue]")" [ToClause]
|
---|
597 | 377. ReplyKeyword ::= "reply"
|
---|
598 | 378. ReplyValue ::= ValueKeyword Expression
|
---|
599 | 379. RaiseStatement ::= Port Dot PortRaiseOp
|
---|
600 | 380. PortRaiseOp ::= RaiseKeyword "(" Signature "," TemplateInstance ")" [ToClause]
|
---|
601 | 381. RaiseKeyword ::= "raise"
|
---|
602 | 382. ReceiveStatement ::= PortOrAny Dot PortReceiveOp
|
---|
603 | 383. PortOrAny ::= Port | AnyKeyword PortKeyword
|
---|
604 | 384. PortReceiveOp ::= ReceiveOpKeyword ["(" ReceiveParameter ")"] [FromClause] [PortRedirect]
|
---|
605 | 385. ReceiveOpKeyword ::= "receive"
|
---|
606 | 386. ReceiveParameter ::= TemplateInstance
|
---|
607 | 387. FromClause ::= FromKeyword ( AddressRef |
|
---|
608 | AddressRefList |
|
---|
609 | AnyKeyword ComponentKeyword )
|
---|
610 | 388. FromKeyword ::= "from"
|
---|
611 | 389. PortRedirect ::= PortRedirectSymbol (ValueSpec [SenderSpec] | SenderSpec)
|
---|
612 | 390. PortRedirectSymbol ::= "->"
|
---|
613 | 391. ValueSpec ::= ValueKeyword ( VariableRef |
|
---|
614 | ( "(" SingleValueSpec { "," SingleValueSpec } ")" ) )
|
---|
615 | 392. SingleValueSpec ::= VariableRef [ AssignmentChar FieldReference ExtendedFieldReference ]
|
---|
616 | /*STATIC SEMANTICS FieldReference shall not be ParRef and ExtendedFieldReference shall not be
|
---|
617 | TypeDefIdentifier*/
|
---|
618 | 393. ValueKeyword ::= "value"
|
---|
619 | 394. SenderSpec ::= SenderKeyword VariableRef
|
---|
620 | 395. SenderKeyword ::= "sender"
|
---|
621 | 396. TriggerStatement ::= PortOrAny Dot PortTriggerOp
|
---|
622 | 397. PortTriggerOp ::= TriggerOpKeyword ["(" ReceiveParameter ")"] [FromClause] [PortRedirect]
|
---|
623 | 398. TriggerOpKeyword ::= "trigger"
|
---|
624 | 399. GetCallStatement ::= PortOrAny Dot PortGetCallOp
|
---|
625 | 400. PortGetCallOp ::= GetCallOpKeyword ["(" ReceiveParameter ")"] [FromClause]
|
---|
626 | [PortRedirectWithParam]
|
---|
627 | 401. GetCallOpKeyword ::= "getcall"
|
---|
628 | 402. PortRedirectWithParam ::= PortRedirectSymbol RedirectWithParamSpec
|
---|
629 | 403. RedirectWithParamSpec ::= ParamSpec [SenderSpec] |
|
---|
630 | SenderSpec
|
---|
631 | 404. ParamSpec ::= ParamKeyword ParamAssignmentList
|
---|
632 | 405. ParamKeyword ::= "param"
|
---|
633 | 406. ParamAssignmentList ::= "(" (AssignmentList | VariableList) ")"
|
---|
634 | 407. AssignmentList ::= VariableAssignment {"," VariableAssignment}
|
---|
635 | 408. VariableAssignment ::= VariableRef AssignmentChar ParameterIdentifier
|
---|
636 | 409. ParameterIdentifier ::= ValueParIdentifier
|
---|
637 | 410. VariableList ::= VariableEntry {"," VariableEntry}
|
---|
638 | 411. VariableEntry ::= VariableRef | NotUsedSymbol
|
---|
639 | 412. GetReplyStatement ::= PortOrAny Dot PortGetReplyOp
|
---|
640 | 413. PortGetReplyOp ::= GetReplyOpKeyword ["(" ReceiveParameter [ValueMatchSpec] ")"]
|
---|
641 | [FromClause] [PortRedirectWithValueAndParam]
|
---|
642 | 414. PortRedirectWithValueAndParam ::= PortRedirectSymbol RedirectWithValueAndParamSpec
|
---|
643 | 415. RedirectWithValueAndParamSpec ::= ValueSpec [ParamSpec] [SenderSpec] |
|
---|
644 | RedirectWithParamSpec
|
---|
645 | 416. GetReplyOpKeyword ::= "getreply"
|
---|
646 | 417. ValueMatchSpec ::= ValueKeyword TemplateInstance
|
---|
647 | 418. CheckStatement ::= PortOrAny Dot PortCheckOp
|
---|
648 | 419. PortCheckOp ::= CheckOpKeyword ["(" CheckParameter ")"]
|
---|
649 | 420. CheckOpKeyword ::= "check"
|
---|
650 | 421. CheckParameter ::= CheckPortOpsPresent | FromClausePresent | RedirectPresent
|
---|
651 | 422. FromClausePresent ::= FromClause [PortRedirectSymbol SenderSpec]
|
---|
652 | 423. RedirectPresent ::= PortRedirectSymbol SenderSpec
|
---|
653 | 424. CheckPortOpsPresent ::= PortReceiveOp | PortGetCallOp | PortGetReplyOp | PortCatchOp
|
---|
654 | 425. CatchStatement ::= PortOrAny Dot PortCatchOp
|
---|
655 | 426. PortCatchOp ::= CatchOpKeyword ["("CatchOpParameter ")"] [FromClause] [PortRedirect]
|
---|
656 | 427. CatchOpKeyword ::= "catch"
|
---|
657 | 428. CatchOpParameter ::= Signature "," TemplateInstance | TimeoutKeyword
|
---|
658 | 429. ClearStatement ::= PortOrAll Dot PortClearOp
|
---|
659 | 430. PortOrAll ::= Port | AllKeyword PortKeyword
|
---|
660 | 431. PortClearOp ::= ClearOpKeyword
|
---|
661 | 432. ClearOpKeyword ::= "clear"
|
---|
662 | 433. StartStatement ::= PortOrAll Dot PortStartOp
|
---|
663 | 434. PortStartOp ::= StartKeyword
|
---|
664 | 435. StopStatement ::= PortOrAll Dot PortStopOp
|
---|
665 | 436. PortStopOp ::= StopKeyword
|
---|
666 | 437. StopKeyword ::= "stop"
|
---|
667 | 438. HaltStatement ::= PortOrAll Dot PortHaltOp
|
---|
668 | 439. PortHaltOp ::= HaltKeyword
|
---|
669 | 440. HaltKeyword ::= "halt"
|
---|
670 | 441. AnyKeyword ::= "any"
|
---|
671 |
|
---|
672 | A.1.6.2.5 Timer operations
|
---|
673 | 442. TimerStatements ::= StartTimerStatement | StopTimerStatement | TimeoutStatement
|
---|
674 | 443. TimerOps ::= ReadTimerOp | RunningTimerOp
|
---|
675 | 444. StartTimerStatement ::= TimerRef Dot StartKeyword ["(" TimerValue ")"]
|
---|
676 | 445. StopTimerStatement ::= TimerRefOrAll Dot StopKeyword
|
---|
677 | 446. TimerRefOrAll ::= TimerRef | AllKeyword TimerKeyword
|
---|
678 | 447. ReadTimerOp ::= TimerRef Dot ReadKeyword
|
---|
679 | 448. ReadKeyword ::= "read"
|
---|
680 | 449. RunningTimerOp ::= TimerRefOrAny Dot RunningKeyword
|
---|
681 | 450. TimeoutStatement ::= TimerRefOrAny Dot TimeoutKeyword
|
---|
682 | 451. TimerRefOrAny ::= TimerRef | ( AnyKeyword TimerKeyword )
|
---|
683 | 452. TimeoutKeyword ::= "timeout"
|
---|
684 |
|
---|
685 | A.1.6.3 Type
|
---|
686 | 453. Type ::= PredefinedType | ReferencedType
|
---|
687 | 454. PredefinedType ::= BitStringKeyword |
|
---|
688 | BooleanKeyword |
|
---|
689 | CharStringKeyword |
|
---|
690 | UniversalCharString |
|
---|
691 | IntegerKeyword |
|
---|
692 | OctetStringKeyword |
|
---|
693 | HexStringKeyword |
|
---|
694 | VerdictTypeKeyword |
|
---|
695 | FloatKeyword |
|
---|
696 | AddressKeyword |
|
---|
697 | DefaultKeyword |
|
---|
698 | AnyTypeKeyword
|
---|
699 | 455. BitStringKeyword ::= "bitstring"
|
---|
700 | 456. BooleanKeyword ::= "boolean"
|
---|
701 | 457. IntegerKeyword ::= "integer"
|
---|
702 | 458. OctetStringKeyword ::= "octetstring"
|
---|
703 | 459. HexStringKeyword ::= "hexstring"
|
---|
704 | 460. VerdictTypeKeyword ::= "verdicttype"
|
---|
705 | 461. FloatKeyword ::= "float"
|
---|
706 | 462. AddressKeyword ::= "address"
|
---|
707 | 463. DefaultKeyword ::= "default"
|
---|
708 | 464. AnyTypeKeyword ::= "anytype"
|
---|
709 | 465. CharStringKeyword ::= "charstring"
|
---|
710 | 466. UniversalCharString ::= UniversalKeyword CharStringKeyword
|
---|
711 | 467. UniversalKeyword ::= "universal"
|
---|
712 | 468. ReferencedType ::= [GlobalModuleId Dot] TypeReference [ExtendedFieldReference]
|
---|
713 | 469. TypeReference ::= StructTypeIdentifier |
|
---|
714 | EnumTypeIdentifier |
|
---|
715 | SubTypeIdentifier |
|
---|
716 | ComponentTypeIdentifier
|
---|
717 | 470. ArrayDef ::= {"[" ArrayBounds [".." ArrayBounds] "]"}+
|
---|
718 | 471. ArrayBounds ::= SingleConstExpression
|
---|
719 | /* STATIC SEMANTICS - ArrayBounds will resolve to a non negative value of integer type */
|
---|
720 |
|
---|
721 | A.1.6.4 Value
|
---|
722 | 472. Value ::= PredefinedValue | ReferencedValue
|
---|
723 | 473. PredefinedValue ::= BitStringValue |
|
---|
724 | BooleanValue |
|
---|
725 | CharStringValue |
|
---|
726 | IntegerValue |
|
---|
727 | OctetStringValue |
|
---|
728 | HexStringValue |
|
---|
729 | VerdictTypeValue |
|
---|
730 | EnumeratedValue |
|
---|
731 | FloatValue |
|
---|
732 | AddressValue |
|
---|
733 | OmitValue
|
---|
734 | 474. BitStringValue ::= Bstring
|
---|
735 | 475. BooleanValue ::= "true" | "false"
|
---|
736 | 476. IntegerValue ::= Number
|
---|
737 | 477. OctetStringValue ::= Ostring
|
---|
738 | 478. HexStringValue ::= Hstring
|
---|
739 | 479. VerdictTypeValue ::= "pass" | "fail" | "inconc" | "none" | "error"
|
---|
740 | 480. EnumeratedValue ::= EnumerationIdentifier
|
---|
741 | 481. CharStringValue ::= Cstring | Quadruple
|
---|
742 | 482. Quadruple ::= CharKeyword "(" Group "," Plane "," Row "," Cell ")"
|
---|
743 | 483. CharKeyword ::= "char"
|
---|
744 | 484. Group ::= Number
|
---|
745 | 485. Plane ::= Number
|
---|
746 | 486. Row ::= Number
|
---|
747 | 487. Cell ::= Number
|
---|
748 | 488. FloatValue ::= FloatDotNotation | FloatENotation | NaNKeyword
|
---|
749 | 489. NaNKeyword ::= "not_a_number"
|
---|
750 | 490. FloatDotNotation ::= Number Dot DecimalNumber
|
---|
751 | 491. FloatENotation ::= Number [Dot DecimalNumber] Exponential [Minus] Number
|
---|
752 | 492. Exponential ::= "E"
|
---|
753 | 493. ReferencedValue ::= ValueReference [ExtendedFieldReference]
|
---|
754 | 494. ValueReference ::= [GlobalModuleId Dot] (ConstIdentifier | ExtConstIdentifier |
|
---|
755 | ModuleParIdentifier ) |
|
---|
756 | ValueParIdentifier |
|
---|
757 | VarIdentifier
|
---|
758 | 495. Number ::= (NonZeroNum {Num}) | "0"
|
---|
759 | 496. NonZeroNum ::= "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
|
---|
760 | 497. DecimalNumber ::= {Num}+
|
---|
761 | 498. Num ::= "0" | NonZeroNum
|
---|
762 | 499. Bstring ::= "'" {Bin} "'" "B"
|
---|
763 | 500. Bin ::= "0" | "1"
|
---|
764 | 501. Hstring ::= "'" {Hex} "'" "H"
|
---|
765 | 502. Hex ::= Num | "A" | "B" | "C" | "D" | "E" | "F"| "a" | "b" | "c" | "d" | "e" | "f"
|
---|
766 | 503. Ostring ::= "'" {Oct} "'" "O"
|
---|
767 | 504. Oct ::= Hex Hex
|
---|
768 | 505. Cstring ::= """ {Char} """
|
---|
769 | 506. Char ::= /* 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 */
|
---|
770 | 507. Identifier ::= Alpha{AlphaNum | Underscore}
|
---|
771 | 508. Alpha ::= UpperAlpha | LowerAlpha
|
---|
772 | 509. AlphaNum ::= Alpha | Num
|
---|
773 | 510. 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"
|
---|
774 | 511. 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"
|
---|
775 | 512. ExtendedAlphaNum ::= /* 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,32) 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) */
|
---|
776 | 513. FreeText ::= """ {ExtendedAlphaNum} """
|
---|
777 | 514. AddressValue ::= "null"
|
---|
778 | 515. OmitValue ::= OmitKeyword
|
---|
779 | 516. OmitKeyword ::= "omit"
|
---|
780 |
|
---|
781 | A.1.6.5 Parameterization
|
---|
782 | 517. InParKeyword ::= "in"
|
---|
783 | 518. OutParKeyword ::= "out"
|
---|
784 | 519. InOutParKeyword ::= "inout"
|
---|
785 | 520. FormalValuePar ::= [(InParKeyword | InOutParKeyword | OutParKeyword)]
|
---|
786 | Type ValueParIdentifier [ ":=" ( Expression | Dash ) ]
|
---|
787 | 521. ValueParIdentifier ::= Identifier
|
---|
788 | 522. FormalPortPar ::= [InOutParKeyword] PortTypeIdentifier PortParIdentifier
|
---|
789 | 523. PortParIdentifier ::= Identifier
|
---|
790 | 524. FormalTimerPar ::= [InOutParKeyword] TimerKeyword TimerParIdentifier
|
---|
791 | 525. TimerParIdentifier ::= Identifier
|
---|
792 | 526. FormalTemplatePar ::= [( InParKeyword | OutParKeyword | InOutParKeyword )]
|
---|
793 | ( TemplateKeyword | RestrictedTemplate )
|
---|
794 | Type TemplateParIdentifier [ ":=" ( TemplateInstance | Dash ) ]
|
---|
795 | 527. TemplateParIdentifier ::= Identifier
|
---|
796 | 528. RestrictedTemplate ::= OmitKeyword | ( TemplateKeyword TemplateRestriction )
|
---|
797 | 529. TemplateRestriction ::= "(" ( OmitKeyword | ValueKeyword | PresentKeyword ) ")"
|
---|
798 |
|
---|
799 | A.1.6.6 With statement
|
---|
800 | 530. WithStatement ::= WithKeyword WithAttribList
|
---|
801 | 531. WithKeyword ::= "with"
|
---|
802 | 532. WithAttribList ::= "{" MultiWithAttrib "}"
|
---|
803 | 533. MultiWithAttrib ::= {SingleWithAttrib [SemiColon]}
|
---|
804 | 534. SingleWithAttrib ::= AttribKeyword [OverrideKeyword] [AttribQualifier] AttribSpec
|
---|
805 | 535. AttribKeyword ::= EncodeKeyword |
|
---|
806 | VariantKeyword |
|
---|
807 | DisplayKeyword |
|
---|
808 | ExtensionKeyword |
|
---|
809 | OptionalKeyword
|
---|
810 | 536. EncodeKeyword ::= "encode"
|
---|
811 | 537. VariantKeyword ::= "variant"
|
---|
812 | 538. DisplayKeyword ::= "display"
|
---|
813 | 539. ExtensionKeyword ::= "extension"
|
---|
814 | 540. OverrideKeyword ::= "override"
|
---|
815 | 541. AttribQualifier ::= "(" DefOrFieldRefList ")"
|
---|
816 | 542. DefOrFieldRefList ::= DefOrFieldRef {"," DefOrFieldRef}
|
---|
817 | 543. DefOrFieldRef ::= DefinitionRef |
|
---|
818 | ( FieldReference [ ExtendedFieldReference ] ) |
|
---|
819 | ( "[" NotUsedSymbol | SingleExpression "]" ) |
|
---|
820 | AllRef
|
---|
821 | 544. DefinitionRef ::= StructTypeIdentifier |
|
---|
822 | EnumTypeIdentifier |
|
---|
823 | PortTypeIdentifier |
|
---|
824 | ComponentTypeIdentifier |
|
---|
825 | SubTypeIdentifier |
|
---|
826 | ConstIdentifier |
|
---|
827 | TemplateIdentifier |
|
---|
828 | AltstepIdentifier |
|
---|
829 | TestcaseIdentifier |
|
---|
830 | FunctionIdentifier |
|
---|
831 | SignatureIdentifier |
|
---|
832 | VarIdentifier |
|
---|
833 | TimerIdentifier |
|
---|
834 | PortIdentifier |
|
---|
835 | ModuleParIdentifier |
|
---|
836 | FullGroupIdentifier
|
---|
837 | 545. AllRef ::= ( GroupKeyword AllKeyword [ExceptKeyword "{" GroupRefList "}"]) |
|
---|
838 | ( TypeDefKeyword AllKeyword [ExceptKeyword "{" TypeRefList "}"]) |
|
---|
839 | ( TemplateKeyword AllKeyword [ExceptKeyword "{" TemplateRefList "}"]) |
|
---|
840 | ( ConstKeyword AllKeyword [ExceptKeyword "{" ConstRefList "}"]) |
|
---|
841 | ( AltstepKeyword AllKeyword [ExceptKeyword "{" AltstepRefList "}"]) |
|
---|
842 | ( TestcaseKeyword AllKeyword [ExceptKeyword "{" TestcaseRefList "}"]) |
|
---|
843 | ( FunctionKeyword AllKeyword [ExceptKeyword "{" FunctionRefList "}"]) |
|
---|
844 | ( SignatureKeyword AllKeyword [ExceptKeyword "{" SignatureRefList "}"]) |
|
---|
845 | ( ModuleParKeyword AllKeyword [ExceptKeyword "{" ModuleParRefList "}"])
|
---|
846 | 546. AttribSpec ::= FreeText
|
---|
847 |
|
---|
848 | A.1.6.7 Behaviour statements
|
---|
849 | 547. BehaviourStatements ::= TestcaseInstance |
|
---|
850 | FunctionInstance |
|
---|
851 | ReturnStatement |
|
---|
852 | AltConstruct |
|
---|
853 | InterleavedConstruct |
|
---|
854 | LabelStatement |
|
---|
855 | GotoStatement |
|
---|
856 | RepeatStatement |
|
---|
857 | DeactivateStatement |
|
---|
858 | AltstepInstance |
|
---|
859 | ActivateOp |
|
---|
860 | BreakStatement |
|
---|
861 | ContinueStatement
|
---|
862 | 548. VerdictStatements ::= SetLocalVerdict
|
---|
863 | 549. VerdictOps ::= GetLocalVerdict
|
---|
864 | 550. SetLocalVerdict ::= SetVerdictKeyword "(" SingleExpression { "," LogItem } ")"
|
---|
865 | 551. SetVerdictKeyword ::= "setverdict"
|
---|
866 | 552. GetLocalVerdict ::= "getverdict"
|
---|
867 | 553. SUTStatements ::= ActionKeyword "(" ActionText {StringOp ActionText} ")"
|
---|
868 | 554. ActionKeyword ::= "action"
|
---|
869 | 555. ActionText ::= FreeText | Expression
|
---|
870 | 556. ReturnStatement ::= ReturnKeyword [Expression | InLineTemplate]
|
---|
871 | /* STATIC SEMANTICS - Expression shall evaluate to a value of a type compatible with the return type for functions returning a value. It shall evaluate to a value, template (literal or template instance), or a matching mechanism compatible with the return type for functions returning a template. */
|
---|
872 | 557. AltConstruct ::= AltKeyword "{" AltGuardList "}"
|
---|
873 | 558. AltKeyword ::= "alt"
|
---|
874 | 559. AltGuardList ::= {GuardStatement | ElseStatement [SemiColon]}
|
---|
875 | 560. GuardStatement ::= AltGuardChar (AltstepInstance [StatementBlock] | GuardOp StatementBlock)
|
---|
876 | 561. ElseStatement ::= "["ElseKeyword "]" StatementBlock
|
---|
877 | 562. AltGuardChar ::= "[" [BooleanExpression] "]"
|
---|
878 | 563. GuardOp ::= TimeoutStatement |
|
---|
879 | ReceiveStatement |
|
---|
880 | TriggerStatement |
|
---|
881 | GetCallStatement |
|
---|
882 | CatchStatement |
|
---|
883 | CheckStatement |
|
---|
884 | GetReplyStatement |
|
---|
885 | DoneStatement |
|
---|
886 | KilledStatement
|
---|
887 | 564. InterleavedConstruct ::= InterleavedKeyword "{" InterleavedGuardList "}"
|
---|
888 | 565. InterleavedKeyword ::= "interleave"
|
---|
889 | 566. InterleavedGuardList ::= {InterleavedGuardElement [SemiColon]}+
|
---|
890 | 567. InterleavedGuardElement ::= InterleavedGuard InterleavedAction
|
---|
891 | 568. InterleavedGuard ::= "[" "]" GuardOp
|
---|
892 | 569. InterleavedAction ::= StatementBlock
|
---|
893 | 570. LabelStatement ::= LabelKeyword LabelIdentifier
|
---|
894 | 571. LabelKeyword ::= "label"
|
---|
895 | 572. LabelIdentifier ::= Identifier
|
---|
896 | 573. GotoStatement ::= GotoKeyword LabelIdentifier
|
---|
897 | 574. GotoKeyword ::= "goto"
|
---|
898 | 575. RepeatStatement ::= "repeat"
|
---|
899 | 576. ActivateOp ::= ActivateKeyword "(" AltstepInstance ")"
|
---|
900 | 577. ActivateKeyword ::= "activate"
|
---|
901 | 578. DeactivateStatement ::= DeactivateKeyword ["(" ComponentOrDefaultReference ")"]
|
---|
902 | 579. DeactivateKeyword ::= "deactivate"
|
---|
903 | 580. BreakStatement ::= "break"
|
---|
904 | 581. ContinueStatement ::= "continue"
|
---|
905 |
|
---|
906 | A.1.6.8 Basic statements
|
---|
907 | 582. BasicStatements ::= Assignment | LogStatement | LoopConstruct | ConditionalConstruct |
|
---|
908 | SelectCaseConstruct | StatementBlock
|
---|
909 | 583. Expression ::= SingleExpression | CompoundExpression
|
---|
910 | 584. CompoundExpression ::= FieldExpressionList | ArrayExpression
|
---|
911 | /* STATIC SEMANTICS - Within CompoundExpression the ArrayExpression can be used for Arrays, record, record of and set of types. */
|
---|
912 | 585. FieldExpressionList ::= "{" FieldExpressionSpec {"," FieldExpressionSpec} "}"
|
---|
913 | 586. FieldExpressionSpec ::= FieldReference AssignmentChar NotUsedOrExpression
|
---|
914 | 587. ArrayExpression ::= "{" [ArrayElementExpressionList] "}"
|
---|
915 | 588. ArrayElementExpressionList ::= NotUsedOrExpression {"," NotUsedOrExpression}
|
---|
916 | 589. NotUsedOrExpression ::= Expression | NotUsedSymbol
|
---|
917 | 590. ConstantExpression ::= SingleConstExpression | CompoundConstExpression
|
---|
918 | 591. SingleConstExpression ::= SingleExpression
|
---|
919 | 592. BooleanExpression ::= SingleExpression
|
---|
920 | /* STATIC SEMANTICS - BooleanExpression shall resolve to a Value of type Boolean */
|
---|
921 | 593. CompoundConstExpression ::= FieldConstExpressionList | ArrayConstExpression
|
---|
922 | /* STATIC SEMANTICS - Within CompoundConstExpression the ArrayConstExpression can be used for arrays, record, record of and set of types. */
|
---|
923 | 594. FieldConstExpressionList ::= "{" FieldConstExpressionSpec {"," FieldConstExpressionSpec} "}"
|
---|
924 | 595. FieldConstExpressionSpec ::= FieldReference AssignmentChar ConstantExpression
|
---|
925 | 596. ArrayConstExpression ::= "{" [ArrayElementConstExpressionList] "}"
|
---|
926 | 597. ArrayElementConstExpressionList ::= ConstantExpression {"," ConstantExpression}
|
---|
927 | 598. Assignment ::= VariableRef AssignmentChar (Expression | TemplateBody)
|
---|
928 | /* STATIC SEMANTICS - The Expression on the right hand side of Assignment shall evaluate to an explicit value of a type compatible with the type of the left hand side for value variables and shall evaluate to an explicit value, template (literal or a template instance) or a matching mechanism compatible with the type of the left hand side for template variables. */
|
---|
929 | 599. SingleExpression ::= XorExpression { "or" XorExpression }
|
---|
930 | /* STATIC SEMANTICS - If more than one XorExpression exists, then the XorExpressions shall evaluate to specific values of compatible types */
|
---|
931 | 600. XorExpression ::= AndExpression { "xor" AndExpression }
|
---|
932 | /* STATIC SEMANTICS - If more than one AndExpression exists, then the AndExpressions shall evaluate to specific values of compatible types */
|
---|
933 | 601. AndExpression ::= NotExpression { "and" NotExpression }
|
---|
934 | /* STATIC SEMANTICS - If more than one NotExpression exists, then the NotExpressions shall evaluate to specific values of compatible types */
|
---|
935 | 602. NotExpression ::= [ "not" ] EqualExpression
|
---|
936 | /* STATIC SEMANTICS - Operands of the not operator shall be of type boolean or derivatives of type Boolean. */
|
---|
937 | 603. EqualExpression ::= RelExpression { EqualOp RelExpression }
|
---|
938 | /* STATIC SEMANTICS - If more than one RelExpression exists, then the RelExpressions shall evaluate to specific values of compatible types */
|
---|
939 | 604. RelExpression ::= ShiftExpression [ RelOp ShiftExpression ]
|
---|
940 | /* STATIC SEMANTICS - If both ShiftExpressions exist, then each ShiftExpression shall evaluate to a specific integer, Enumerated or float Value or derivatives of these types */
|
---|
941 | 605. ShiftExpression ::= BitOrExpression { ShiftOp BitOrExpression }
|
---|
942 | /* STATIC 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, octetstring, charstring, universal charstring, record of, set of, or array, or derivatives of these types */
|
---|
943 | 606. BitOrExpression ::= BitXorExpression { "or4b" BitXorExpression }
|
---|
944 | /* STATIC SEMANTICS - If more than one BitXorExpression exists, then the BitXorExpressions shall evaluate to specific values of compatible types */
|
---|
945 | 607. BitXorExpression ::= BitAndExpression { "xor4b" BitAndExpression }
|
---|
946 | /* STATIC SEMANTICS - If more than one BitAndExpression exists, then the BitAndExpressions shall evaluate to specific values of compatible types */
|
---|
947 | 608. BitAndExpression ::= BitNotExpression { "and4b" BitNotExpression }
|
---|
948 | /* STATIC SEMANTICS - If more than one BitNotExpression exists, then the BitNotExpressions shall evaluate to specific values of compatible types */
|
---|
949 | 609. BitNotExpression ::= [ "not4b" ] AddExpression
|
---|
950 | /* STATIC SEMANTICS - If the not4b operator exists, the operand shall be of type bitstring, octetstring or hexstring or derivatives of these types. */
|
---|
951 | 610. AddExpression ::= MulExpression { AddOp MulExpression }
|
---|
952 | /* STATIC 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 be valid operands for StringOp. 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.*/
|
---|
953 | 611. MulExpression ::= UnaryExpression { MultiplyOp UnaryExpression }
|
---|
954 | /* STATIC 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. */
|
---|
955 | 612. UnaryExpression ::= [ UnaryOp ] Primary
|
---|
956 | /* STATIC SEMANTICS - Primary shall resolve to a specific Value of type integer or float or derivatives of these types.*/
|
---|
957 | 613. Primary ::= OpCall | Value | "(" SingleExpression ")"
|
---|
958 | 614. ExtendedFieldReference ::= { ( Dot ( StructFieldIdentifier | TypeDefIdentifier ) )
|
---|
959 | | ArrayOrBitRef
|
---|
960 | | ( "[" NotUsedSymbol "]" ) }+
|
---|
961 | /* STATIC SEMANTIC - The TypeDefIdentifier shall be used only if the type of the VarInstance or ReferencedValue in which the ExtendedFieldReference is used is anytype.
|
---|
962 | ArrayOrBitRef shall be used when referencing elements of values or arrays.
|
---|
963 | The square brackets with dash shall be used when referencing inner types of a record of or set of type. */
|
---|
964 | 615. OpCall ::= ConfigurationOps |
|
---|
965 | VerdictOps |
|
---|
966 | TimerOps |
|
---|
967 | TestcaseInstance |
|
---|
968 | ( FunctionInstance [ ExtendedFieldReference ] ) |
|
---|
969 | ( TemplateOps [ ExtendedFieldReference ] ) |
|
---|
970 | ActivateOp
|
---|
971 | 616. AddOp ::= "+" | "-" | StringOp
|
---|
972 | /* STATIC SEMANTICS - Operands of the "+" or "-" operators shall be of type integer or float or derivations of integer or float (i.e. subrange) */
|
---|
973 | 617. MultiplyOp ::= "*" | "/" | "mod" | "rem"
|
---|
974 | /* STATIC SEMANTICS - Operands of the "*", "/", rem or mod operators shall be of type integer or float or derivations of integer or float (i.e. subrange) */
|
---|
975 | 618. UnaryOp ::= "+" | "-"
|
---|
976 | /* STATIC SEMANTICS - Operands of the "+" or "-" operators shall be of type integer or float or derivations of integer or float (i.e. subrange) */
|
---|
977 | 619. RelOp ::= "<" | ">" | ">=" | "<="
|
---|
978 | /* STATIC SEMANTICS - the precedence of the operators is defined in Table 6 */
|
---|
979 | 620. EqualOp ::= "==" | "!="
|
---|
980 | 621. StringOp ::= "&"
|
---|
981 | /* STATIC SEMANTICS - Operands of the list operator shall be bitstring, hexstring, octetstring, (universal) character string, record of, set of, or array types, or derivates of these types */
|
---|
982 | 622. ShiftOp ::= "<<" | ">>" | "<@" | "@>"
|
---|
983 | 623. LogStatement ::= LogKeyword "(" LogItem { "," LogItem } ")"
|
---|
984 | 624. LogKeyword ::= "log"
|
---|
985 | 625. LogItem ::= FreeText | TemplateInstance
|
---|
986 | 626. LoopConstruct ::= ForStatement |
|
---|
987 | WhileStatement |
|
---|
988 | DoWhileStatement
|
---|
989 | 627. ForStatement ::= ForKeyword "(" Initial SemiColon Final SemiColon Step ")"
|
---|
990 | StatementBlock
|
---|
991 | 628. ForKeyword ::= "for"
|
---|
992 | 629. Initial ::= VarInstance | Assignment
|
---|
993 | 630. Final ::= BooleanExpression
|
---|
994 | 631. Step ::= Assignment
|
---|
995 | 632. WhileStatement ::= WhileKeyword "(" BooleanExpression ")"
|
---|
996 | StatementBlock
|
---|
997 | 633. WhileKeyword ::= "while"
|
---|
998 | 634. DoWhileStatement ::= DoKeyword StatementBlock
|
---|
999 | WhileKeyword "(" BooleanExpression ")"
|
---|
1000 | 635. DoKeyword ::= "do"
|
---|
1001 | 636. ConditionalConstruct ::= IfKeyword "(" BooleanExpression ")"
|
---|
1002 | StatementBlock
|
---|
1003 | {ElseIfClause}[ElseClause]
|
---|
1004 | 637. IfKeyword ::= "if"
|
---|
1005 | 638. ElseIfClause ::= ElseKeyword IfKeyword "(" BooleanExpression ")" StatementBlock
|
---|
1006 | 639. ElseKeyword ::= "else"
|
---|
1007 | 640. ElseClause ::= ElseKeyword StatementBlock
|
---|
1008 | 641. SelectCaseConstruct ::= SelectKeyword "(" SingleExpression ")" SelectCaseBody
|
---|
1009 | 642. SelectKeyword ::= "select"
|
---|
1010 | 643. SelectCaseBody ::= "{" { SelectCase }+ "}"
|
---|
1011 | 644. SelectCase ::= CaseKeyword ( "(" TemplateInstance {"," TemplateInstance } ")" | ElseKeyword )
|
---|
1012 | StatementBlock
|
---|
1013 | 645. CaseKeyword ::= "case"
|
---|
1014 |
|
---|
1015 | A.1.6.9 Miscellaneous productions
|
---|
1016 | 646. Dot ::= "."
|
---|
1017 | 647. Dash ::= "-"
|
---|
1018 | 648. Minus ::= Dash
|
---|
1019 | 649. SemiColon ::= ";"
|
---|
1020 | 650. Colon ::= ":"
|
---|
1021 | 651. Underscore ::= "_"
|
---|
1022 | 652. AssignmentChar ::= ":="
|
---|