Coverage for pyVHDLModel/Visitor.py: 95%

407 statements  

« prev     ^ index     » next       coverage.py v7.17.0, created at 2026-10-25 10:05 +0000

1# ==================================================================================================================== # 

2# __ ___ _ ____ _ __ __ _ _ # 

3# _ __ _ \ \ / / | | | _ \| | | \/ | ___ __| | ___| | # 

4# | '_ \| | | \ \ / /| |_| | | | | | | |\/| |/ _ \ / _` |/ _ \ | # 

5# | |_) | |_| |\ V / | _ | |_| | |___| | | | (_) | (_| | __/ | # 

6# | .__/ \__, | \_/ |_| |_|____/|_____|_| |_|\___/ \__,_|\___|_| # 

7# |_| |___/ # 

8# ==================================================================================================================== # 

9# Authors: # 

10# Patrick Lehmann # 

11# # 

12# License: # 

13# ==================================================================================================================== # 

14# Copyright 2026-2026 Patrick Lehmann - Bötzingen, Germany # 

15# # 

16# Licensed under the Apache License, Version 2.0 (the "License"); # 

17# you may not use this file except in compliance with the License. # 

18# You may obtain a copy of the License at # 

19# # 

20# http://www.apache.org/licenses/LICENSE-2.0 # 

21# # 

22# Unless required by applicable law or agreed to in writing, software # 

23# distributed under the License is distributed on an "AS IS" BASIS, # 

24# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

25# See the License for the specific language governing permissions and # 

26# limitations under the License. # 

27# # 

28# SPDX-License-Identifier: Apache-2.0 # 

29# ==================================================================================================================== # 

30# 

31""" 

32This module contains the base-class of all visitors walking a VHDL language model. 

33 

34A model element walks itself: :meth:`ModelEntity.Visit(visitor) <pyVHDLModel.Base.ModelEntity.Visit>` reports the 

35element and then its children in source order as events to the visitor. A parser's subclass of a model class (e.g. from 

36``pyGHDL.dom``) inherits the walk of that model class. 

37 

38.. rubric:: Events 

39 

40``Visit<Class>(element)`` 

41 The walk enters an element of class ``<Class>``, before its first child. 

42 

43``Depart<Class>(element)`` 

44 The walk leaves an element of class ``<Class>``, after its last child. 

45 

46``Visit<Part>(element)`` and ``Depart<Part>(element)`` 

47 The walk enters or leaves a part of the element, which is not a model element itself, e.g. the generic clause of a 

48 component. The events are named after the part's production in IEEE Std 1076-2008 (e.g. ``VisitGenericClause``). 

49 

50``Visit<Token>(element)`` 

51 The walk passes a token of the element between two of its parts, which is not a model element itself. The event is 

52 named after the token: a delimiter as IEEE Std 1076-2008 names it in clauses 15.2 and 15.3 (e.g. ``VisitArrow`` for 

53 ``=>``), a reserved word by itself (e.g. ``VisitWhen``), and a token depending on the element's class by its role 

54 (e.g. ``VisitOperator``). 

55""" 

56from __future__ import annotations 

57 

58from typing import TYPE_CHECKING 

59 

60from pyTooling.Decorators import export 

61from pyTooling.MetaClasses import ExtendedType, abstractclass 

62 

63if TYPE_CHECKING: 63 ↛ 64line 63 didn't jump to line 64 because the condition on line 63 was never true

64 from pyVHDLModel import Document 

65 from pyVHDLModel.Association import AssociationItem, GenericMapAspectMixin, PortMapAspectMixin 

66 from pyVHDLModel.Base import SimpleRange, RangeFromName, WaveformElement, ReportStatementMixin 

67 from pyVHDLModel.Common import ProcedureCallMixin, SignalAssignmentMixin, WaveformMixin, ConditionalWaveform, \ 

68 SelectedWaveform, OthersSelectedWaveform, ConditionalWaveformsMixin, \ 

69 SelectedWaveformsMixin, AssignmentMixin, ConditionalExpression, \ 

70 SelectedExpression, OthersSelectedExpression, SelectedExpressionsMixin 

71 from pyVHDLModel.Concurrent import ProcessStatement, ConcurrentProcedureCall, ConcurrentSimpleSignalAssignment, \ 

72 ConcurrentSelectedSignalAssignment, ConcurrentConditionalSignalAssignment, \ 

73 ConcurrentAssertStatement, ComponentInstantiation, EntityInstantiation, \ 

74 ConfigurationInstantiation, ConcurrentBlockStatement, GenerateBranch, \ 

75 IfGenerateBranch, ElsifGenerateBranch, ElseGenerateBranch, \ 

76 IfGenerateStatement, IndexedGenerateChoice, RangedGenerateChoice, \ 

77 ConcurrentCase, GenerateCase, OthersGenerateCase, CaseGenerateStatement, \ 

78 ForGenerateStatement 

79 from pyVHDLModel.Configuration import EntityAspectEntity, EntityAspectConfiguration, EntityAspectOpen, \ 

80 BindingIndication, AllInstantiationList, OthersInstantiationList, \ 

81 ComponentConfiguration, BlockConfiguration 

82 from pyVHDLModel.Declaration import Attribute, AttributeSpecification, Alias 

83 from pyVHDLModel.DesignUnit import Reference, LibraryClause, UseClause, ContextReference, DesignUnit, Context, \ 

84 Package, PackageBody, Entity, Architecture, Configuration, Component 

85 from pyVHDLModel.Expression import NullLiteral, EnumerationLiteral, IntegerLiteral, FloatingPointLiteral, \ 

86 PhysicalIntegerLiteral, PhysicalFloatingLiteral, CharacterLiteral, \ 

87 StringLiteral, BitStringLiteral, UnaryExpression, NegationExpression, \ 

88 IdentityExpression, TypeConversion, SubExpression, BinaryExpression, \ 

89 RangeExpression, AddingExpression, MultiplyingExpression, \ 

90 ExponentiationExpression, LogicalExpression, RelationalExpression, \ 

91 ShiftExpression, QualifiedExpression, WhenElseExpression, SubtypeAllocation, \ 

92 QualifiedExpressionAllocation, SimpleAggregateElement, \ 

93 IndexedAggregateElement, RangedAggregateElement, NamedAggregateElement, \ 

94 OthersAggregateElement, Aggregate 

95 from pyVHDLModel.Interface import ModeViewDeclaration, SimpleModeViewElement, CompositeModeViewElement, \ 

96 GenericConstantInterfaceItem, GenericTypeInterfaceItem, \ 

97 PortSimpleSignalInterfaceItem, PortViewSignalInterfaceItem, \ 

98 ParameterConstantInterfaceItem, ParameterVariableInterfaceItem, \ 

99 ParameterSimpleSignalInterfaceItem, ParameterViewSignalInterfaceItem, \ 

100 ParameterFileInterfaceItem, GenericProcedureInterfaceItem, \ 

101 GenericFunctionInterfaceItem 

102 from pyVHDLModel.Instantiation import ProcedureInstantiation, FunctionInstantiation, PackageInstantiation 

103 from pyVHDLModel.Name import SimpleName, ParenthesisName, IndexedName, SlicedName, SelectedName, \ 

104 AttributeName, AllName, OpenName 

105 from pyVHDLModel.Object import WithDefaultExpressionMixin, Constant, DeferredConstant, Variable, \ 

106 SharedVariable, Signal, File 

107 from pyVHDLModel.Regions import WithGenericsMixin, WithPortsMixin, WithParametersMixin 

108 from pyVHDLModel.Sequential import IndexedChoice, RangedChoice, SequentialProcedureCall, \ 

109 SequentialSimpleSignalAssignment, SequentialVariableAssignment, \ 

110 SequentialConditionalVariableAssignment, \ 

111 SequentialConditionalSignalAssignment, SequentialSelectedVariableAssignment, \ 

112 SequentialSelectedSignalAssignment, SignalForceAssignment, \ 

113 SignalReleaseAssignment, SequentialReportStatement, SequentialAssertStatement, \ 

114 NullStatement, ReturnStatement, WaitStatement, IfBranch, ElsifBranch, \ 

115 ElseBranch, IfStatement, SequentialCase, Case, OthersCase, CaseStatement, \ 

116 LoopStatement, EndlessLoopStatement, ForLoopStatement, WhileLoopStatement, \ 

117 LoopControlStatement, NextStatement, ExitStatement 

118 from pyVHDLModel.Subprogram import Subprogram, Procedure, Function 

119 from pyVHDLModel.Symbol import Symbol, ConstrainedScalarSubtypeSymbol, ConstrainedArraySubtypeSymbol, \ 

120 ConstrainedRecordSubtypeSymbol 

121 from pyVHDLModel.Type import AnonymousType, Subtype, EnumeratedType, IntegerType, RealType, PhysicalType, \ 

122 ArrayType, RecordTypeElement, RecordType, AccessType, FileType, ProtectedType, \ 

123 ProtectedTypeBody 

124 

125 

126@export 

127@abstractclass 

128class Visitor(metaclass=ExtendedType, slots=True): 

129 """ 

130 Base-class of all visitors walking a VHDL language model. 

131 

132 Every event does nothing: a visitor overrides the events it needs. The events are described in 

133 :mod:`pyVHDLModel.Visitor`. 

134 """ 

135 

136 def VisitLeftParenthesis( 

137 self, 

138 element: IndexedName | ParenthesisName | TypeConversion | EntityAspectEntity | EntityInstantiation 

139 ) -> None: 

140 """ 

141 Visit the left parenthesis between the prefix and the parenthesized list of an element. 

142 

143 :param element: The element enclosing the list. 

144 """ 

145 

146 def VisitComma( 

147 self, 

148 element: IndexedName | ParenthesisName | Aggregate | ConstrainedArraySubtypeSymbol | 

149 ConstrainedRecordSubtypeSymbol | EnumeratedType | ArrayType | AttributeSpecification | 

150 GenericMapAspectMixin | PortMapAspectMixin | Reference | ComponentConfiguration | ProcessStatement | 

151 ProcedureCallMixin | WaveformMixin | SelectedWaveformsMixin | SelectedExpressionsMixin | WaitStatement 

152 ) -> None: 

153 """ 

154 Visit the comma between two items of a list. 

155 

156 :param element: The element containing the list. 

157 """ 

158 

159 def VisitArrow( 

160 self, 

161 element: AssociationItem | IndexedAggregateElement | RangedAggregateElement | NamedAggregateElement | 

162 ConcurrentCase | SequentialCase 

163 ) -> None: 

164 """ 

165 Visit the arrow (``=>``) between a choice or formal and its value. 

166 

167 :param element: The element containing the arrow. 

168 """ 

169 

170 def VisitApostrophe(self, expression: QualifiedExpression) -> None: 

171 """ 

172 Visit the apostrophe between the subtype and the operand of a qualified expression. 

173 

174 :param expression: The qualified expression. 

175 """ 

176 

177 def VisitWhen( 

178 self, 

179 element: WhenElseExpression | ConditionalWaveform | SelectedWaveform | OthersSelectedWaveform | 

180 ConditionalExpression | SelectedExpression | OthersSelectedExpression | LoopControlStatement 

181 ) -> None: 

182 """ 

183 Visit the reserved word ``when`` before the condition of a conditional expression, waveform or loop control 

184 statement, or before the choices of a selected waveform or expression. 

185 

186 :param element: The element with the condition or choices. 

187 """ 

188 

189 def VisitElse( 

190 self, 

191 element: WhenElseExpression | ConditionalWaveformsMixin | SequentialConditionalVariableAssignment 

192 ) -> None: 

193 """ 

194 Visit the reserved word ``else`` before the alternative of a conditional expression or a conditional assignment. 

195 

196 :param element: The conditional expression or the conditional assignment. 

197 """ 

198 

199 def VisitOperator(self, expression: BinaryExpression) -> None: 

200 """ 

201 Visit the operator between the operands of a binary expression. 

202 

203 :param expression: The binary expression. 

204 """ 

205 

206 def VisitDirection(self, rng: RangeExpression | SimpleRange) -> None: 

207 """ 

208 Visit the direction (``to`` or ``downto``) between the bounds of a range. 

209 

210 :param rng: The range. 

211 """ 

212 

213 def VisitSemicolon(self, element: WithGenericsMixin | WithPortsMixin | WithParametersMixin) -> None: 

214 """ 

215 Visit the semicolon between two items of an interface list. 

216 

217 :param element: The element containing the interface list. 

218 """ 

219 

220 def VisitVariableAssignment(self, element: WithDefaultExpressionMixin | AssignmentMixin) -> None: 

221 """ 

222 Visit the variable assignment delimiter (``:=``) before a default expression or the value of a variable assignment. 

223 

224 :param element: The element with the default expression or the variable assignment. 

225 """ 

226 

227 def VisitIs( 

228 self, 

229 element: ModeViewDeclaration | Alias | AttributeSpecification | Subprogram | Architecture | Configuration | 

230 ProcessStatement | CaseStatement 

231 ) -> None: 

232 """ 

233 Visit the reserved word ``is`` between the header and the body of a declaration or statement. 

234 

235 :param element: The declaration. 

236 """ 

237 

238 def VisitBox(self, arrayType: ArrayType) -> None: 

239 """ 

240 Visit the box (``<>``) after the type mark of an unbounded index of an array type. 

241 

242 :param arrayType: The array type. 

243 """ 

244 

245 def VisitOf(self, arrayType: ArrayType) -> None: 

246 """ 

247 Visit the reserved word ``of`` between the index ranges and the element subtype of an array type. 

248 

249 :param arrayType: The array type. 

250 """ 

251 

252 def VisitUnits(self, physicalType: PhysicalType) -> None: 

253 """ 

254 Visit the reserved word ``units`` between the range and the secondary units of a physical type. 

255 

256 :param physicalType: The physical type. 

257 """ 

258 

259 def VisitBegin( 

260 self, 

261 element: Subprogram | Entity | Architecture | ProcessStatement | ConcurrentBlockStatement | GenerateBranch | 

262 ConcurrentCase | ForGenerateStatement 

263 ) -> None: 

264 """ 

265 Visit the reserved word ``begin`` between the declarative part and the statement part of an element. 

266 

267 :param element: The element. 

268 """ 

269 

270 def VisitReturn(self, function: Function | GenericFunctionInterfaceItem) -> None: 

271 """ 

272 Visit the reserved word ``return`` before the return type of a function. 

273 

274 :param function: The function. 

275 """ 

276 

277 def VisitSignalAssignment(self, element: SignalAssignmentMixin) -> None: 

278 """ 

279 Visit the signal assignment delimiter (``<=``) between the target and the waveform of a signal assignment. 

280 

281 :param element: The signal assignment. 

282 """ 

283 

284 def VisitAfter(self, element: WaveformElement) -> None: 

285 """ 

286 Visit the reserved word ``after`` between the value and the delay of a waveform element. 

287 

288 :param element: The waveform element. 

289 """ 

290 

291 def VisitSelect( 

292 self, 

293 element: ConcurrentSelectedSignalAssignment | SequentialSelectedVariableAssignment | 

294 SequentialSelectedSignalAssignment 

295 ) -> None: 

296 """ 

297 Visit the reserved word ``select`` between the selector and the target of a selected assignment. 

298 

299 :param element: The selected assignment. 

300 """ 

301 

302 def VisitBar(self, element: SelectedWaveform | GenerateCase | SelectedExpression | Case) -> None: 

303 """ 

304 Visit the vertical line (``|``) between two choices. 

305 

306 :param element: The element with the choices. 

307 """ 

308 

309 def VisitReport(self, element: ReportStatementMixin) -> None: 

310 """ 

311 Visit the reserved word ``report`` before the message of an assertion or report. 

312 

313 :param element: The assertion or report. 

314 """ 

315 

316 def VisitSeverity(self, element: ReportStatementMixin) -> None: 

317 """ 

318 Visit the reserved word ``severity`` before the severity level of an assertion or report. 

319 

320 :param element: The assertion or report. 

321 """ 

322 

323 def VisitRightParenthesis(self, element: EntityAspectEntity | EntityInstantiation) -> None: 

324 """ 

325 Visit the right parenthesis after the architecture name of an entity aspect or entity instantiation. 

326 

327 :param element: The element enclosing the architecture name. 

328 """ 

329 

330 def VisitGenerate(self, element: GenerateBranch | CaseGenerateStatement | ForGenerateStatement) -> None: 

331 """ 

332 Visit the reserved word ``generate`` before the body of a generate statement or branch. 

333 

334 :param element: The generate statement or branch. 

335 """ 

336 

337 def VisitOn(self, statement: WaitStatement) -> None: 

338 """ 

339 Visit the reserved word ``on`` before the sensitivity list of a wait statement. 

340 

341 :param statement: The wait statement. 

342 """ 

343 

344 def VisitUntil(self, statement: WaitStatement) -> None: 

345 """ 

346 Visit the reserved word ``until`` before the condition of a wait statement. 

347 

348 :param statement: The wait statement. 

349 """ 

350 

351 def VisitFor(self, statement: WaitStatement) -> None: 

352 """ 

353 Visit the reserved word ``for`` before the timeout of a wait statement. 

354 

355 :param statement: The wait statement. 

356 """ 

357 

358 def VisitThen(self, branch: IfBranch | ElsifBranch) -> None: 

359 """ 

360 Visit the reserved word ``then`` between the condition and the statements of an if or elsif branch. 

361 

362 :param branch: The branch. 

363 """ 

364 

365 def VisitLoop(self, statement: LoopStatement) -> None: 

366 """ 

367 Visit the reserved word ``loop`` before the statements of a loop statement. 

368 

369 :param statement: The loop statement. 

370 """ 

371 

372 def VisitNullLiteral(self, literal: NullLiteral) -> None: 

373 """ 

374 Visit a null literal. 

375 

376 :param literal: The null literal. 

377 """ 

378 

379 def DepartNullLiteral(self, literal: NullLiteral) -> None: 

380 """ 

381 Depart from a null literal. 

382 

383 :param literal: The null literal. 

384 """ 

385 

386 def VisitEnumerationLiteral(self, literal: EnumerationLiteral) -> None: 

387 """ 

388 Visit an enumeration literal. 

389 

390 :param literal: The enumeration literal. 

391 """ 

392 

393 def DepartEnumerationLiteral(self, literal: EnumerationLiteral) -> None: 

394 """ 

395 Depart from an enumeration literal. 

396 

397 :param literal: The enumeration literal. 

398 """ 

399 

400 def VisitIntegerLiteral(self, literal: IntegerLiteral) -> None: 

401 """ 

402 Visit an integer literal. 

403 

404 :param literal: The integer literal. 

405 """ 

406 

407 def DepartIntegerLiteral(self, literal: IntegerLiteral) -> None: 

408 """ 

409 Depart from an integer literal. 

410 

411 :param literal: The integer literal. 

412 """ 

413 

414 def VisitFloatingPointLiteral(self, literal: FloatingPointLiteral) -> None: 

415 """ 

416 Visit a floating-point literal. 

417 

418 :param literal: The floating-point literal. 

419 """ 

420 

421 def DepartFloatingPointLiteral(self, literal: FloatingPointLiteral) -> None: 

422 """ 

423 Depart from a floating-point literal. 

424 

425 :param literal: The floating-point literal. 

426 """ 

427 

428 def VisitPhysicalIntegerLiteral(self, literal: PhysicalIntegerLiteral) -> None: 

429 """ 

430 Visit a physical literal with an integer value. 

431 

432 :param literal: The physical literal. 

433 """ 

434 

435 def DepartPhysicalIntegerLiteral(self, literal: PhysicalIntegerLiteral) -> None: 

436 """ 

437 Depart from a physical literal with an integer value. 

438 

439 :param literal: The physical literal. 

440 """ 

441 

442 def VisitPhysicalFloatingLiteral(self, literal: PhysicalFloatingLiteral) -> None: 

443 """ 

444 Visit a physical literal with a floating-point value. 

445 

446 :param literal: The physical literal. 

447 """ 

448 

449 def DepartPhysicalFloatingLiteral(self, literal: PhysicalFloatingLiteral) -> None: 

450 """ 

451 Depart from a physical literal with a floating-point value. 

452 

453 :param literal: The physical literal. 

454 """ 

455 

456 def VisitCharacterLiteral(self, literal: CharacterLiteral) -> None: 

457 """ 

458 Visit a character literal. 

459 

460 :param literal: The character literal. 

461 """ 

462 

463 def DepartCharacterLiteral(self, literal: CharacterLiteral) -> None: 

464 """ 

465 Depart from a character literal. 

466 

467 :param literal: The character literal. 

468 """ 

469 

470 def VisitStringLiteral(self, literal: StringLiteral) -> None: 

471 """ 

472 Visit a string literal. 

473 

474 :param literal: The string literal. 

475 """ 

476 

477 def DepartStringLiteral(self, literal: StringLiteral) -> None: 

478 """ 

479 Depart from a string literal. 

480 

481 :param literal: The string literal. 

482 """ 

483 

484 def VisitBitStringLiteral(self, literal: BitStringLiteral) -> None: 

485 """ 

486 Visit a bit string literal. 

487 

488 :param literal: The bit string literal. 

489 """ 

490 

491 def DepartBitStringLiteral(self, literal: BitStringLiteral) -> None: 

492 """ 

493 Depart from a bit string literal. 

494 

495 :param literal: The bit string literal. 

496 """ 

497 

498 def VisitSimpleName(self, name: SimpleName) -> None: 

499 """ 

500 Visit a simple name. 

501 

502 :param name: The simple name. 

503 """ 

504 

505 def DepartSimpleName(self, name: SimpleName) -> None: 

506 """ 

507 Depart from a simple name. 

508 

509 :param name: The simple name. 

510 """ 

511 

512 def VisitSelectedName(self, name: SelectedName) -> None: 

513 """ 

514 Visit a selected name, before its prefix. 

515 

516 :param name: The selected name. 

517 """ 

518 

519 def DepartSelectedName(self, name: SelectedName) -> None: 

520 """ 

521 Depart from a selected name, after its prefix. 

522 

523 :param name: The selected name. 

524 """ 

525 

526 def VisitAllName(self, name: AllName) -> None: 

527 """ 

528 Visit a selected name with suffix ``all``, before its prefix. 

529 

530 :param name: The ``all`` name. 

531 """ 

532 

533 def DepartAllName(self, name: AllName) -> None: 

534 """ 

535 Depart from a selected name with suffix ``all``, after its prefix. 

536 

537 :param name: The ``all`` name. 

538 """ 

539 

540 def VisitAttributeName(self, name: AttributeName) -> None: 

541 """ 

542 Visit an attribute name, before its prefix. 

543 

544 :param name: The attribute name. 

545 """ 

546 

547 def DepartAttributeName(self, name: AttributeName) -> None: 

548 """ 

549 Depart from an attribute name, after its prefix. 

550 

551 :param name: The attribute name. 

552 """ 

553 

554 def VisitIndexedName(self, name: IndexedName) -> None: 

555 """ 

556 Visit an indexed name, before its prefix. 

557 

558 :param name: The indexed name. 

559 """ 

560 

561 def DepartIndexedName(self, name: IndexedName) -> None: 

562 """ 

563 Depart from an indexed name, after its last index. 

564 

565 :param name: The indexed name. 

566 """ 

567 

568 def VisitParenthesisName(self, name: ParenthesisName) -> None: 

569 """ 

570 Visit a name followed by a parenthesized association list, before its prefix. 

571 

572 :param name: The parenthesis name. 

573 """ 

574 

575 def DepartParenthesisName(self, name: ParenthesisName) -> None: 

576 """ 

577 Depart from a name followed by a parenthesized association list, after its last association. 

578 

579 :param name: The parenthesis name. 

580 """ 

581 

582 def VisitSlicedName(self, name: SlicedName) -> None: 

583 """ 

584 Visit a sliced name, before its prefix. 

585 

586 :param name: The sliced name. 

587 """ 

588 

589 def DepartSlicedName(self, name: SlicedName) -> None: 

590 """ 

591 Depart from a sliced name, after its prefix. 

592 

593 :param name: The sliced name. 

594 """ 

595 

596 def VisitOpenName(self, name: OpenName) -> None: 

597 """ 

598 Visit the reserved word ``open``. 

599 

600 :param name: The ``open`` name. 

601 """ 

602 

603 def DepartOpenName(self, name: OpenName) -> None: 

604 """ 

605 Depart from the reserved word ``open``. 

606 

607 :param name: The ``open`` name. 

608 """ 

609 

610 def VisitSymbol(self, symbol: Symbol) -> None: 

611 """ 

612 Visit a symbol, before its name. 

613 

614 :param symbol: The symbol. 

615 """ 

616 

617 def DepartSymbol(self, symbol: Symbol) -> None: 

618 """ 

619 Depart from a symbol, after its name. 

620 

621 :param symbol: The symbol. 

622 """ 

623 

624 def VisitAssociationItem(self, item: AssociationItem) -> None: 

625 """ 

626 Visit an association item, before its formal or, if positional, its actual. 

627 

628 :param item: The association item. 

629 """ 

630 

631 def DepartAssociationItem(self, item: AssociationItem) -> None: 

632 """ 

633 Depart from an association item, after its actual. 

634 

635 :param item: The association item. 

636 """ 

637 

638 def VisitUnaryExpression(self, expression: UnaryExpression) -> None: 

639 """ 

640 Visit a unary expression with a reserved word as operator, before its operand. 

641 

642 Examples of such operators are ``not`` and ``abs``. 

643 

644 :param expression: The unary expression. 

645 """ 

646 

647 def DepartUnaryExpression(self, expression: UnaryExpression) -> None: 

648 """ 

649 Depart from a unary expression with a reserved word as operator, after its operand. 

650 

651 Examples of such operators are ``not`` and ``abs``. 

652 

653 :param expression: The unary expression. 

654 """ 

655 

656 def VisitNegationExpression(self, expression: NegationExpression) -> None: 

657 """ 

658 Visit a negation (sign ``-``), before its operand. 

659 

660 :param expression: The negation. 

661 """ 

662 

663 def DepartNegationExpression(self, expression: NegationExpression) -> None: 

664 """ 

665 Depart from a negation (sign ``-``), after its operand. 

666 

667 :param expression: The negation. 

668 """ 

669 

670 def VisitIdentityExpression(self, expression: IdentityExpression) -> None: 

671 """ 

672 Visit an identity (sign ``+``), before its operand. 

673 

674 :param expression: The identity. 

675 """ 

676 

677 def DepartIdentityExpression(self, expression: IdentityExpression) -> None: 

678 """ 

679 Depart from an identity (sign ``+``), after its operand. 

680 

681 :param expression: The identity. 

682 """ 

683 

684 def VisitTypeConversion(self, conversion: TypeConversion) -> None: 

685 """ 

686 Visit a type conversion, before its target subtype. 

687 

688 :param conversion: The type conversion. 

689 """ 

690 

691 def DepartTypeConversion(self, conversion: TypeConversion) -> None: 

692 """ 

693 Depart from a type conversion, after its operand. 

694 

695 :param conversion: The type conversion. 

696 """ 

697 

698 def VisitSubExpression(self, expression: SubExpression) -> None: 

699 """ 

700 Visit a parenthesized sub-expression, before its operand. 

701 

702 :param expression: The parenthesized sub-expression. 

703 """ 

704 

705 def DepartSubExpression(self, expression: SubExpression) -> None: 

706 """ 

707 Depart from a parenthesized sub-expression, after its operand. 

708 

709 :param expression: The parenthesized sub-expression. 

710 """ 

711 

712 def VisitLogicalExpression(self, expression: LogicalExpression) -> None: 

713 """ 

714 Visit a binary logical expression, before its left operand. 

715 

716 :param expression: The binary logical expression. 

717 """ 

718 

719 def DepartLogicalExpression(self, expression: LogicalExpression) -> None: 

720 """ 

721 Depart from a binary logical expression, after its right operand. 

722 

723 :param expression: The binary logical expression. 

724 """ 

725 

726 def VisitRelationalExpression(self, expression: RelationalExpression) -> None: 

727 """ 

728 Visit a relational expression, before its left operand. 

729 

730 :param expression: The relational expression. 

731 """ 

732 

733 def DepartRelationalExpression(self, expression: RelationalExpression) -> None: 

734 """ 

735 Depart from a relational expression, after its right operand. 

736 

737 :param expression: The relational expression. 

738 """ 

739 

740 def VisitShiftExpression(self, expression: ShiftExpression) -> None: 

741 """ 

742 Visit a shift or rotate expression, before its left operand. 

743 

744 :param expression: The shift or rotate expression. 

745 """ 

746 

747 def DepartShiftExpression(self, expression: ShiftExpression) -> None: 

748 """ 

749 Depart from a shift or rotate expression, after its right operand. 

750 

751 :param expression: The shift or rotate expression. 

752 """ 

753 

754 def VisitAddingExpression(self, expression: AddingExpression) -> None: 

755 """ 

756 Visit an adding expression, before its left operand. 

757 

758 :param expression: The adding expression. 

759 """ 

760 

761 def DepartAddingExpression(self, expression: AddingExpression) -> None: 

762 """ 

763 Depart from an adding expression, after its right operand. 

764 

765 :param expression: The adding expression. 

766 """ 

767 

768 def VisitMultiplyingExpression(self, expression: MultiplyingExpression) -> None: 

769 """ 

770 Visit a multiplying expression, before its left operand. 

771 

772 :param expression: The multiplying expression. 

773 """ 

774 

775 def DepartMultiplyingExpression(self, expression: MultiplyingExpression) -> None: 

776 """ 

777 Depart from a multiplying expression, after its right operand. 

778 

779 :param expression: The multiplying expression. 

780 """ 

781 

782 def VisitExponentiationExpression(self, expression: ExponentiationExpression) -> None: 

783 """ 

784 Visit an exponentiation, before its left operand. 

785 

786 :param expression: The exponentiation. 

787 """ 

788 

789 def DepartExponentiationExpression(self, expression: ExponentiationExpression) -> None: 

790 """ 

791 Depart from an exponentiation, after its right operand. 

792 

793 :param expression: The exponentiation. 

794 """ 

795 

796 def VisitRangeExpression(self, expression: RangeExpression) -> None: 

797 """ 

798 Visit a range expression, before its left bound. 

799 

800 :param expression: The range expression. 

801 """ 

802 

803 def DepartRangeExpression(self, expression: RangeExpression) -> None: 

804 """ 

805 Depart from a range expression, after its right bound. 

806 

807 :param expression: The range expression. 

808 """ 

809 

810 def VisitWhenElseExpression(self, expression: WhenElseExpression) -> None: 

811 """ 

812 Visit a conditional expression, before its value. 

813 

814 :param expression: The conditional expression. 

815 """ 

816 

817 def DepartWhenElseExpression(self, expression: WhenElseExpression) -> None: 

818 """ 

819 Depart from a conditional expression, after its alternative value. 

820 

821 :param expression: The conditional expression. 

822 """ 

823 

824 def VisitQualifiedExpression(self, expression: QualifiedExpression) -> None: 

825 """ 

826 Visit a qualified expression, before its subtype. 

827 

828 :param expression: The qualified expression. 

829 """ 

830 

831 def DepartQualifiedExpression(self, expression: QualifiedExpression) -> None: 

832 """ 

833 Depart from a qualified expression, after its operand. 

834 

835 :param expression: The qualified expression. 

836 """ 

837 

838 def VisitSubtypeAllocation(self, allocation: SubtypeAllocation) -> None: 

839 """ 

840 Visit an allocation of a subtype, before its subtype. 

841 

842 :param allocation: The allocation of a subtype. 

843 """ 

844 

845 def DepartSubtypeAllocation(self, allocation: SubtypeAllocation) -> None: 

846 """ 

847 Depart from an allocation of a subtype, after its subtype. 

848 

849 :param allocation: The allocation of a subtype. 

850 """ 

851 

852 def VisitQualifiedExpressionAllocation(self, allocation: QualifiedExpressionAllocation) -> None: 

853 """ 

854 Visit an allocation initialized by a qualified expression, before its qualified expression. 

855 

856 :param allocation: The allocation initialized by a qualified expression. 

857 """ 

858 

859 def DepartQualifiedExpressionAllocation(self, allocation: QualifiedExpressionAllocation) -> None: 

860 """ 

861 Depart from an allocation initialized by a qualified expression, after its qualified expression. 

862 

863 :param allocation: The allocation initialized by a qualified expression. 

864 """ 

865 

866 def VisitAggregate(self, aggregate: Aggregate) -> None: 

867 """ 

868 Visit an aggregate, before its first element. 

869 

870 :param aggregate: The aggregate. 

871 """ 

872 

873 def DepartAggregate(self, aggregate: Aggregate) -> None: 

874 """ 

875 Depart from an aggregate, after its last element. 

876 

877 :param aggregate: The aggregate. 

878 """ 

879 

880 def VisitSimpleAggregateElement(self, element: SimpleAggregateElement) -> None: 

881 """ 

882 Visit a positional aggregate element, before its expression. 

883 

884 :param element: The positional aggregate element. 

885 """ 

886 

887 def DepartSimpleAggregateElement(self, element: SimpleAggregateElement) -> None: 

888 """ 

889 Depart from a positional aggregate element, after its expression. 

890 

891 :param element: The positional aggregate element. 

892 """ 

893 

894 def VisitIndexedAggregateElement(self, element: IndexedAggregateElement) -> None: 

895 """ 

896 Visit an aggregate element chosen by an index, before its index. 

897 

898 :param element: The aggregate element chosen by an index. 

899 """ 

900 

901 def DepartIndexedAggregateElement(self, element: IndexedAggregateElement) -> None: 

902 """ 

903 Depart from an aggregate element chosen by an index, after its expression. 

904 

905 :param element: The aggregate element chosen by an index. 

906 """ 

907 

908 def VisitRangedAggregateElement(self, element: RangedAggregateElement) -> None: 

909 """ 

910 Visit an aggregate element chosen by a range, before its range. 

911 

912 :param element: The aggregate element chosen by a range. 

913 """ 

914 

915 def DepartRangedAggregateElement(self, element: RangedAggregateElement) -> None: 

916 """ 

917 Depart from an aggregate element chosen by a range, after its expression. 

918 

919 :param element: The aggregate element chosen by a range. 

920 """ 

921 

922 def VisitNamedAggregateElement(self, element: NamedAggregateElement) -> None: 

923 """ 

924 Visit an aggregate element chosen by a record element name, before its name. 

925 

926 :param element: The aggregate element chosen by a record element name. 

927 """ 

928 

929 def DepartNamedAggregateElement(self, element: NamedAggregateElement) -> None: 

930 """ 

931 Depart from an aggregate element chosen by a record element name, after its expression. 

932 

933 :param element: The aggregate element chosen by a record element name. 

934 """ 

935 

936 def VisitOthersAggregateElement(self, element: OthersAggregateElement) -> None: 

937 """ 

938 Visit the ``others`` element of an aggregate, before its expression. 

939 

940 :param element: The ``others`` element of an aggregate. 

941 """ 

942 

943 def DepartOthersAggregateElement(self, element: OthersAggregateElement) -> None: 

944 """ 

945 Depart from the ``others`` element of an aggregate, after its expression. 

946 

947 :param element: The ``others`` element of an aggregate. 

948 """ 

949 

950 def VisitSimpleRange(self, rng: SimpleRange) -> None: 

951 """ 

952 Visit a range given by its bounds, before its left bound. 

953 

954 :param rng: The range. 

955 """ 

956 

957 def DepartSimpleRange(self, rng: SimpleRange) -> None: 

958 """ 

959 Depart from a range given by its bounds, after its right bound. 

960 

961 :param rng: The range. 

962 """ 

963 

964 def VisitRangeFromName(self, rng: RangeFromName) -> None: 

965 """ 

966 Visit a range denoted by a name, before its name. 

967 

968 :param rng: The range. 

969 """ 

970 

971 def DepartRangeFromName(self, rng: RangeFromName) -> None: 

972 """ 

973 Depart from a range denoted by a name, after its name. 

974 

975 :param rng: The range. 

976 """ 

977 

978 def VisitRangeConstraint(self, symbol: ConstrainedScalarSubtypeSymbol) -> None: 

979 """ 

980 Visit the range constraint of a subtype indication, before its range. 

981 

982 :param symbol: The constrained subtype symbol. 

983 """ 

984 

985 def DepartRangeConstraint(self, symbol: ConstrainedScalarSubtypeSymbol) -> None: 

986 """ 

987 Depart from the range constraint of a subtype indication, after its range. 

988 

989 :param symbol: The constrained subtype symbol. 

990 """ 

991 

992 def VisitIndexConstraint( 

993 self, 

994 element: ConstrainedArraySubtypeSymbol | ConstrainedRecordSubtypeSymbol | ArrayType 

995 ) -> None: 

996 """ 

997 Visit the index constraint of a subtype indication, of a record element or of an array type, before its first range. 

998 

999 :param element: The constrained subtype symbol or the array type. 

1000 """ 

1001 

1002 def DepartIndexConstraint( 

1003 self, 

1004 element: ConstrainedArraySubtypeSymbol | ConstrainedRecordSubtypeSymbol | ArrayType 

1005 ) -> None: 

1006 """ 

1007 Depart from the index constraint of a subtype indication, of a record element or of an array type, after its last 

1008 range. 

1009 

1010 :param element: The constrained subtype symbol or the array type. 

1011 """ 

1012 

1013 def VisitRecordConstraint(self, symbol: ConstrainedRecordSubtypeSymbol) -> None: 

1014 """ 

1015 Visit the record constraint of a subtype indication, before its first record element constraint. 

1016 

1017 :param symbol: The constrained subtype symbol. 

1018 """ 

1019 

1020 def DepartRecordConstraint(self, symbol: ConstrainedRecordSubtypeSymbol) -> None: 

1021 """ 

1022 Depart from the record constraint of a subtype indication, after its last record element constraint. 

1023 

1024 :param symbol: The constrained subtype symbol. 

1025 """ 

1026 

1027 def VisitGenericClause(self, element: WithGenericsMixin) -> None: 

1028 """ 

1029 Visit the generic clause of an element, before its first generic. 

1030 

1031 :param element: The element with generics. 

1032 """ 

1033 

1034 def DepartGenericClause(self, element: WithGenericsMixin) -> None: 

1035 """ 

1036 Depart from the generic clause of an element, after its last generic. 

1037 

1038 :param element: The element with generics. 

1039 """ 

1040 

1041 def VisitPortClause(self, element: WithPortsMixin) -> None: 

1042 """ 

1043 Visit the port clause of an element, before its first port. 

1044 

1045 :param element: The element with ports. 

1046 """ 

1047 

1048 def DepartPortClause(self, element: WithPortsMixin) -> None: 

1049 """ 

1050 Depart from the port clause of an element, after its last port. 

1051 

1052 :param element: The element with ports. 

1053 """ 

1054 

1055 def VisitConstrainedScalarSubtypeSymbol(self, symbol: ConstrainedScalarSubtypeSymbol) -> None: 

1056 """ 

1057 Visit a constrained scalar subtype symbol, before its name. 

1058 

1059 :param symbol: The constrained subtype symbol. 

1060 """ 

1061 

1062 def DepartConstrainedScalarSubtypeSymbol(self, symbol: ConstrainedScalarSubtypeSymbol) -> None: 

1063 """ 

1064 Depart from a constrained scalar subtype symbol, after its range constraint. 

1065 

1066 :param symbol: The constrained subtype symbol. 

1067 """ 

1068 

1069 def VisitConstrainedArraySubtypeSymbol(self, symbol: ConstrainedArraySubtypeSymbol) -> None: 

1070 """ 

1071 Visit a constrained array subtype symbol, before its name. 

1072 

1073 :param symbol: The constrained subtype symbol. 

1074 """ 

1075 

1076 def DepartConstrainedArraySubtypeSymbol(self, symbol: ConstrainedArraySubtypeSymbol) -> None: 

1077 """ 

1078 Depart from a constrained array subtype symbol, after its index constraint. 

1079 

1080 :param symbol: The constrained subtype symbol. 

1081 """ 

1082 

1083 def VisitConstrainedRecordSubtypeSymbol(self, symbol: ConstrainedRecordSubtypeSymbol) -> None: 

1084 """ 

1085 Visit a constrained record subtype symbol, before its name. 

1086 

1087 :param symbol: The constrained subtype symbol. 

1088 """ 

1089 

1090 def DepartConstrainedRecordSubtypeSymbol(self, symbol: ConstrainedRecordSubtypeSymbol) -> None: 

1091 """ 

1092 Depart from a constrained record subtype symbol, after its record constraint. 

1093 

1094 :param symbol: The constrained subtype symbol. 

1095 """ 

1096 

1097 def VisitConstant(self, constant: Constant) -> None: 

1098 """ 

1099 Visit a constant declaration, before its subtype. 

1100 

1101 :param constant: The constant declaration. 

1102 """ 

1103 

1104 def DepartConstant(self, constant: Constant) -> None: 

1105 """ 

1106 Depart from a constant declaration, after its default expression. 

1107 

1108 :param constant: The constant declaration. 

1109 """ 

1110 

1111 def VisitDeferredConstant(self, constant: DeferredConstant) -> None: 

1112 """ 

1113 Visit a deferred constant declaration, before its subtype. 

1114 

1115 :param constant: The deferred constant declaration. 

1116 """ 

1117 

1118 def DepartDeferredConstant(self, constant: DeferredConstant) -> None: 

1119 """ 

1120 Depart from a deferred constant declaration, after its subtype. 

1121 

1122 :param constant: The deferred constant declaration. 

1123 """ 

1124 

1125 def VisitVariable(self, variable: Variable) -> None: 

1126 """ 

1127 Visit a variable declaration, before its subtype. 

1128 

1129 :param variable: The variable declaration. 

1130 """ 

1131 

1132 def DepartVariable(self, variable: Variable) -> None: 

1133 """ 

1134 Depart from a variable declaration, after its default expression. 

1135 

1136 :param variable: The variable declaration. 

1137 """ 

1138 

1139 def VisitSharedVariable(self, variable: SharedVariable) -> None: 

1140 """ 

1141 Visit a shared variable declaration, before its subtype. 

1142 

1143 :param variable: The shared variable declaration. 

1144 """ 

1145 

1146 def DepartSharedVariable(self, variable: SharedVariable) -> None: 

1147 """ 

1148 Depart from a shared variable declaration, after its subtype. 

1149 

1150 :param variable: The shared variable declaration. 

1151 """ 

1152 

1153 def VisitSignal(self, signal: Signal) -> None: 

1154 """ 

1155 Visit a signal declaration, before its subtype. 

1156 

1157 :param signal: The signal declaration. 

1158 """ 

1159 

1160 def DepartSignal(self, signal: Signal) -> None: 

1161 """ 

1162 Depart from a signal declaration, after its default expression. 

1163 

1164 :param signal: The signal declaration. 

1165 """ 

1166 

1167 def VisitFile(self, file: File) -> None: 

1168 """ 

1169 Visit a file declaration, before its subtype. 

1170 

1171 :param file: The file declaration. 

1172 """ 

1173 

1174 def DepartFile(self, file: File) -> None: 

1175 """ 

1176 Depart from a file declaration, after its subtype. 

1177 

1178 :param file: The file declaration. 

1179 """ 

1180 

1181 def VisitGenericConstantInterfaceItem(self, item: GenericConstantInterfaceItem) -> None: 

1182 """ 

1183 Visit a generic constant, before its subtype. 

1184 

1185 :param item: The generic constant. 

1186 """ 

1187 

1188 def DepartGenericConstantInterfaceItem(self, item: GenericConstantInterfaceItem) -> None: 

1189 """ 

1190 Depart from a generic constant, after its default expression. 

1191 

1192 :param item: The generic constant. 

1193 """ 

1194 

1195 def VisitGenericTypeInterfaceItem(self, item: GenericTypeInterfaceItem) -> None: 

1196 """ 

1197 Visit a generic type. 

1198 

1199 :param item: The generic type. 

1200 """ 

1201 

1202 def DepartGenericTypeInterfaceItem(self, item: GenericTypeInterfaceItem) -> None: 

1203 """ 

1204 Depart from a generic type. 

1205 

1206 :param item: The generic type. 

1207 """ 

1208 

1209 def VisitPortSimpleSignalInterfaceItem(self, item: PortSimpleSignalInterfaceItem) -> None: 

1210 """ 

1211 Visit a port with a mode, before its subtype. 

1212 

1213 :param item: The port. 

1214 """ 

1215 

1216 def DepartPortSimpleSignalInterfaceItem(self, item: PortSimpleSignalInterfaceItem) -> None: 

1217 """ 

1218 Depart from a port with a mode, after its default expression. 

1219 

1220 :param item: The port. 

1221 """ 

1222 

1223 def VisitPortViewSignalInterfaceItem(self, item: PortViewSignalInterfaceItem) -> None: 

1224 """ 

1225 Visit a port with a mode view, before its mode view indication. 

1226 

1227 :param item: The port. 

1228 """ 

1229 

1230 def DepartPortViewSignalInterfaceItem(self, item: PortViewSignalInterfaceItem) -> None: 

1231 """ 

1232 Depart from a port with a mode view, after its mode view indication. 

1233 

1234 :param item: The port. 

1235 """ 

1236 

1237 def VisitParameterConstantInterfaceItem(self, item: ParameterConstantInterfaceItem) -> None: 

1238 """ 

1239 Visit a constant parameter, before its subtype. 

1240 

1241 :param item: The constant parameter. 

1242 """ 

1243 

1244 def DepartParameterConstantInterfaceItem(self, item: ParameterConstantInterfaceItem) -> None: 

1245 """ 

1246 Depart from a constant parameter, after its default expression. 

1247 

1248 :param item: The constant parameter. 

1249 """ 

1250 

1251 def VisitParameterVariableInterfaceItem(self, item: ParameterVariableInterfaceItem) -> None: 

1252 """ 

1253 Visit a variable parameter, before its subtype. 

1254 

1255 :param item: The variable parameter. 

1256 """ 

1257 

1258 def DepartParameterVariableInterfaceItem(self, item: ParameterVariableInterfaceItem) -> None: 

1259 """ 

1260 Depart from a variable parameter, after its default expression. 

1261 

1262 :param item: The variable parameter. 

1263 """ 

1264 

1265 def VisitParameterSimpleSignalInterfaceItem(self, item: ParameterSimpleSignalInterfaceItem) -> None: 

1266 """ 

1267 Visit a signal parameter with a mode, before its subtype. 

1268 

1269 :param item: The signal parameter. 

1270 """ 

1271 

1272 def DepartParameterSimpleSignalInterfaceItem(self, item: ParameterSimpleSignalInterfaceItem) -> None: 

1273 """ 

1274 Depart from a signal parameter with a mode, after its default expression. 

1275 

1276 :param item: The signal parameter. 

1277 """ 

1278 

1279 def VisitParameterViewSignalInterfaceItem(self, item: ParameterViewSignalInterfaceItem) -> None: 

1280 """ 

1281 Visit a signal parameter with a mode view, before its mode view indication. 

1282 

1283 :param item: The signal parameter. 

1284 """ 

1285 

1286 def DepartParameterViewSignalInterfaceItem(self, item: ParameterViewSignalInterfaceItem) -> None: 

1287 """ 

1288 Depart from a signal parameter with a mode view, after its mode view indication. 

1289 

1290 :param item: The signal parameter. 

1291 """ 

1292 

1293 def VisitParameterFileInterfaceItem(self, item: ParameterFileInterfaceItem) -> None: 

1294 """ 

1295 Visit a file parameter, before its subtype. 

1296 

1297 :param item: The file parameter. 

1298 """ 

1299 

1300 def DepartParameterFileInterfaceItem(self, item: ParameterFileInterfaceItem) -> None: 

1301 """ 

1302 Depart from a file parameter, after its subtype. 

1303 

1304 :param item: The file parameter. 

1305 """ 

1306 

1307 def VisitModeViewDeclaration(self, declaration: ModeViewDeclaration) -> None: 

1308 """ 

1309 Visit a mode view declaration, before its subtype. 

1310 

1311 :param declaration: The mode view declaration. 

1312 """ 

1313 

1314 def DepartModeViewDeclaration(self, declaration: ModeViewDeclaration) -> None: 

1315 """ 

1316 Depart from a mode view declaration, after its last element. 

1317 

1318 :param declaration: The mode view declaration. 

1319 """ 

1320 

1321 def VisitSimpleModeViewElement(self, element: SimpleModeViewElement) -> None: 

1322 """ 

1323 Visit an element of a mode view with a mode. 

1324 

1325 :param element: The mode view element. 

1326 """ 

1327 

1328 def DepartSimpleModeViewElement(self, element: SimpleModeViewElement) -> None: 

1329 """ 

1330 Depart from an element of a mode view with a mode. 

1331 

1332 :param element: The mode view element. 

1333 """ 

1334 

1335 def VisitCompositeModeViewElement(self, element: CompositeModeViewElement) -> None: 

1336 """ 

1337 Visit an element of a mode view with a mode view, before its mode view name. 

1338 

1339 :param element: The mode view element. 

1340 """ 

1341 

1342 def DepartCompositeModeViewElement(self, element: CompositeModeViewElement) -> None: 

1343 """ 

1344 Depart from an element of a mode view with a mode view, after its mode view name. 

1345 

1346 :param element: The mode view element. 

1347 """ 

1348 

1349 def VisitComponent(self, component: Component) -> None: 

1350 """ 

1351 Visit a component declaration, before its generic clause. 

1352 

1353 :param component: The component declaration. 

1354 """ 

1355 

1356 def DepartComponent(self, component: Component) -> None: 

1357 """ 

1358 Depart from a component declaration, after its port clause. 

1359 

1360 :param component: The component declaration. 

1361 """ 

1362 

1363 def VisitSecondaryUnitDeclaration(self, physicalType: PhysicalType, identifier: str) -> None: 

1364 """ 

1365 Visit a secondary unit declaration of a physical type, before its value. 

1366 

1367 :param physicalType: The physical type. 

1368 :param identifier: The identifier of the secondary unit. 

1369 """ 

1370 

1371 def DepartSecondaryUnitDeclaration(self, physicalType: PhysicalType, identifier: str) -> None: 

1372 """ 

1373 Depart from a secondary unit declaration of a physical type, after its value. 

1374 

1375 :param physicalType: The physical type. 

1376 :param identifier: The identifier of the secondary unit. 

1377 """ 

1378 

1379 def VisitEntitySpecification(self, specification: AttributeSpecification) -> None: 

1380 """ 

1381 Visit the entity specification of an attribute specification, before its first name. 

1382 

1383 :param specification: The attribute specification. 

1384 """ 

1385 

1386 def DepartEntitySpecification(self, specification: AttributeSpecification) -> None: 

1387 """ 

1388 Depart from the entity specification of an attribute specification, after its last name. 

1389 

1390 :param specification: The attribute specification. 

1391 """ 

1392 

1393 def VisitAnonymousType(self, declaration: AnonymousType) -> None: 

1394 """ 

1395 Visit an incomplete type declaration. 

1396 

1397 :param declaration: The incomplete type declaration. 

1398 """ 

1399 

1400 def DepartAnonymousType(self, declaration: AnonymousType) -> None: 

1401 """ 

1402 Depart from an incomplete type declaration. 

1403 

1404 :param declaration: The incomplete type declaration. 

1405 """ 

1406 

1407 def VisitSubtype(self, subtype: Subtype) -> None: 

1408 """ 

1409 Visit a subtype declaration, before its subtype indication. 

1410 

1411 :param subtype: The subtype declaration. 

1412 """ 

1413 

1414 def DepartSubtype(self, subtype: Subtype) -> None: 

1415 """ 

1416 Depart from a subtype declaration, after its subtype indication. 

1417 

1418 :param subtype: The subtype declaration. 

1419 """ 

1420 

1421 def VisitEnumeratedType(self, enumeratedType: EnumeratedType) -> None: 

1422 """ 

1423 Visit an enumerated type declaration, before its first literal. 

1424 

1425 :param enumeratedType: The enumerated type. 

1426 """ 

1427 

1428 def DepartEnumeratedType(self, enumeratedType: EnumeratedType) -> None: 

1429 """ 

1430 Depart from an enumerated type declaration, after its last literal. 

1431 

1432 :param enumeratedType: The enumerated type. 

1433 """ 

1434 

1435 def VisitIntegerType(self, integerType: IntegerType) -> None: 

1436 """ 

1437 Visit an integer type declaration, before its range. 

1438 

1439 :param integerType: The integer type. 

1440 """ 

1441 

1442 def DepartIntegerType(self, integerType: IntegerType) -> None: 

1443 """ 

1444 Depart from an integer type declaration, after its range. 

1445 

1446 :param integerType: The integer type. 

1447 """ 

1448 

1449 def VisitRealType(self, realType: RealType) -> None: 

1450 """ 

1451 Visit a floating-point type declaration, before its range. 

1452 

1453 :param realType: The floating-point type. 

1454 """ 

1455 

1456 def DepartRealType(self, realType: RealType) -> None: 

1457 """ 

1458 Depart from a floating-point type declaration, after its range. 

1459 

1460 :param realType: The floating-point type. 

1461 """ 

1462 

1463 def VisitPhysicalType(self, physicalType: PhysicalType) -> None: 

1464 """ 

1465 Visit a physical type declaration, before its range. 

1466 

1467 :param physicalType: The physical type. 

1468 """ 

1469 

1470 def DepartPhysicalType(self, physicalType: PhysicalType) -> None: 

1471 """ 

1472 Depart from a physical type declaration, after its last secondary unit. 

1473 

1474 :param physicalType: The physical type. 

1475 """ 

1476 

1477 def VisitArrayType(self, arrayType: ArrayType) -> None: 

1478 """ 

1479 Visit an array type declaration, before its index ranges. 

1480 

1481 :param arrayType: The array type. 

1482 """ 

1483 

1484 def DepartArrayType(self, arrayType: ArrayType) -> None: 

1485 """ 

1486 Depart from an array type declaration, after its element subtype. 

1487 

1488 :param arrayType: The array type. 

1489 """ 

1490 

1491 def VisitRecordTypeElement(self, element: RecordTypeElement) -> None: 

1492 """ 

1493 Visit an element declaration of a record type, before its subtype. 

1494 

1495 :param element: The record element declaration. 

1496 """ 

1497 

1498 def DepartRecordTypeElement(self, element: RecordTypeElement) -> None: 

1499 """ 

1500 Depart from an element declaration of a record type, after its subtype. 

1501 

1502 :param element: The record element declaration. 

1503 """ 

1504 

1505 def VisitRecordType(self, recordType: RecordType) -> None: 

1506 """ 

1507 Visit a record type declaration, before its first element declaration. 

1508 

1509 :param recordType: The record type. 

1510 """ 

1511 

1512 def DepartRecordType(self, recordType: RecordType) -> None: 

1513 """ 

1514 Depart from a record type declaration, after its last element declaration. 

1515 

1516 :param recordType: The record type. 

1517 """ 

1518 

1519 def VisitAccessType(self, accessType: AccessType) -> None: 

1520 """ 

1521 Visit an access type declaration, before its designated subtype. 

1522 

1523 :param accessType: The access type. 

1524 """ 

1525 

1526 def DepartAccessType(self, accessType: AccessType) -> None: 

1527 """ 

1528 Depart from an access type declaration, after its designated subtype. 

1529 

1530 :param accessType: The access type. 

1531 """ 

1532 

1533 def VisitFileType(self, fileType: FileType) -> None: 

1534 """ 

1535 Visit a file type declaration, before its designated subtype. 

1536 

1537 :param fileType: The file type. 

1538 """ 

1539 

1540 def DepartFileType(self, fileType: FileType) -> None: 

1541 """ 

1542 Depart from a file type declaration, after its designated subtype. 

1543 

1544 :param fileType: The file type. 

1545 """ 

1546 

1547 def VisitAlias(self, alias: Alias) -> None: 

1548 """ 

1549 Visit an alias declaration, before its subtype or name. 

1550 

1551 :param alias: The alias declaration. 

1552 """ 

1553 

1554 def DepartAlias(self, alias: Alias) -> None: 

1555 """ 

1556 Depart from an alias declaration, after its name. 

1557 

1558 :param alias: The alias declaration. 

1559 """ 

1560 

1561 def VisitAttribute(self, attribute: Attribute) -> None: 

1562 """ 

1563 Visit an attribute declaration, before its subtype. 

1564 

1565 :param attribute: The attribute declaration. 

1566 """ 

1567 

1568 def DepartAttribute(self, attribute: Attribute) -> None: 

1569 """ 

1570 Depart from an attribute declaration, after its subtype. 

1571 

1572 :param attribute: The attribute declaration. 

1573 """ 

1574 

1575 def VisitAttributeSpecification(self, specification: AttributeSpecification) -> None: 

1576 """ 

1577 Visit an attribute specification, before its attribute. 

1578 

1579 :param specification: The attribute specification. 

1580 """ 

1581 

1582 def DepartAttributeSpecification(self, specification: AttributeSpecification) -> None: 

1583 """ 

1584 Depart from an attribute specification, after its expression. 

1585 

1586 :param specification: The attribute specification. 

1587 """ 

1588 

1589 def VisitFormalParameterList(self, element: WithParametersMixin) -> None: 

1590 """ 

1591 Visit the formal parameter list of a subprogram, before its first parameter. 

1592 

1593 :param element: The element with parameters. 

1594 """ 

1595 

1596 def DepartFormalParameterList(self, element: WithParametersMixin) -> None: 

1597 """ 

1598 Depart from the formal parameter list of a subprogram, after its last parameter. 

1599 

1600 :param element: The element with parameters. 

1601 """ 

1602 

1603 def VisitGenericMapAspect(self, element: GenericMapAspectMixin) -> None: 

1604 """ 

1605 Visit the generic map aspect of an element, before its first association. 

1606 

1607 :param element: The element with a generic map aspect. 

1608 """ 

1609 

1610 def DepartGenericMapAspect(self, element: GenericMapAspectMixin) -> None: 

1611 """ 

1612 Depart from the generic map aspect of an element, after its last association. 

1613 

1614 :param element: The element with a generic map aspect. 

1615 """ 

1616 

1617 def VisitProcedure(self, procedure: Procedure) -> None: 

1618 """ 

1619 Visit a procedure declaration or body, before its generic clause. 

1620 

1621 :param procedure: The procedure. 

1622 """ 

1623 

1624 def DepartProcedure(self, procedure: Procedure) -> None: 

1625 """ 

1626 Depart from a procedure declaration or body, after its statements. 

1627 

1628 :param procedure: The procedure. 

1629 """ 

1630 

1631 def VisitFunction(self, function: Function) -> None: 

1632 """ 

1633 Visit a function declaration or body, before its generic clause. 

1634 

1635 :param function: The function. 

1636 """ 

1637 

1638 def DepartFunction(self, function: Function) -> None: 

1639 """ 

1640 Depart from a function declaration or body, after its statements. 

1641 

1642 :param function: The function. 

1643 """ 

1644 

1645 def VisitGenericProcedureInterfaceItem(self, item: GenericProcedureInterfaceItem) -> None: 

1646 """ 

1647 Visit a generic procedure, before its parameters. 

1648 

1649 :param item: The generic procedure. 

1650 """ 

1651 

1652 def DepartGenericProcedureInterfaceItem(self, item: GenericProcedureInterfaceItem) -> None: 

1653 """ 

1654 Depart from a generic procedure, after its parameters. 

1655 

1656 :param item: The generic procedure. 

1657 """ 

1658 

1659 def VisitGenericFunctionInterfaceItem(self, item: GenericFunctionInterfaceItem) -> None: 

1660 """ 

1661 Visit a generic function, before its parameters. 

1662 

1663 :param item: The generic function. 

1664 """ 

1665 

1666 def DepartGenericFunctionInterfaceItem(self, item: GenericFunctionInterfaceItem) -> None: 

1667 """ 

1668 Depart from a generic function, after its return type. 

1669 

1670 :param item: The generic function. 

1671 """ 

1672 

1673 def VisitProcedureInstantiation(self, instantiation: ProcedureInstantiation) -> None: 

1674 """ 

1675 Visit a procedure instantiation, before its generic procedure. 

1676 

1677 :param instantiation: The procedure instantiation. 

1678 """ 

1679 

1680 def DepartProcedureInstantiation(self, instantiation: ProcedureInstantiation) -> None: 

1681 """ 

1682 Depart from a procedure instantiation, after its generic map aspect. 

1683 

1684 :param instantiation: The procedure instantiation. 

1685 """ 

1686 

1687 def VisitFunctionInstantiation(self, instantiation: FunctionInstantiation) -> None: 

1688 """ 

1689 Visit a function instantiation, before its generic function. 

1690 

1691 :param instantiation: The function instantiation. 

1692 """ 

1693 

1694 def DepartFunctionInstantiation(self, instantiation: FunctionInstantiation) -> None: 

1695 """ 

1696 Depart from a function instantiation, after its generic map aspect. 

1697 

1698 :param instantiation: The function instantiation. 

1699 """ 

1700 

1701 def VisitProtectedType(self, protectedType: ProtectedType) -> None: 

1702 """ 

1703 Visit a protected type declaration, before its first method. 

1704 

1705 :param protectedType: The protected type. 

1706 """ 

1707 

1708 def DepartProtectedType(self, protectedType: ProtectedType) -> None: 

1709 """ 

1710 Depart from a protected type declaration, after its last method. 

1711 

1712 :param protectedType: The protected type. 

1713 """ 

1714 

1715 def VisitProtectedTypeBody(self, body: ProtectedTypeBody) -> None: 

1716 """ 

1717 Visit a protected type body, before its first declared item. 

1718 

1719 :param body: The protected type body. 

1720 """ 

1721 

1722 def DepartProtectedTypeBody(self, body: ProtectedTypeBody) -> None: 

1723 """ 

1724 Depart from a protected type body, after its last declared item. 

1725 

1726 :param body: The protected type body. 

1727 """ 

1728 

1729 def VisitPortMapAspect(self, element: PortMapAspectMixin) -> None: 

1730 """ 

1731 Visit the port map aspect of an element, before its first association. 

1732 

1733 :param element: The element with a port map aspect. 

1734 """ 

1735 

1736 def DepartPortMapAspect(self, element: PortMapAspectMixin) -> None: 

1737 """ 

1738 Depart from the port map aspect of an element, after its last association. 

1739 

1740 :param element: The element with a port map aspect. 

1741 """ 

1742 

1743 def VisitContextClause(self, designUnit: DesignUnit) -> None: 

1744 """ 

1745 Visit the context clause of a design unit, before its first context item. 

1746 

1747 :param designUnit: The design unit. 

1748 """ 

1749 

1750 def DepartContextClause(self, designUnit: DesignUnit) -> None: 

1751 """ 

1752 Depart from the context clause of a design unit, after its last context item. 

1753 

1754 :param designUnit: The design unit. 

1755 """ 

1756 

1757 def VisitInstantiationList(self, configuration: ComponentConfiguration) -> None: 

1758 """ 

1759 Visit the instantiation list of a component configuration, before its first label. 

1760 

1761 :param configuration: The component configuration. 

1762 """ 

1763 

1764 def DepartInstantiationList(self, configuration: ComponentConfiguration) -> None: 

1765 """ 

1766 Depart from the instantiation list of a component configuration, after its last label. 

1767 

1768 :param configuration: The component configuration. 

1769 """ 

1770 

1771 def VisitBlockSpecification(self, configuration: BlockConfiguration) -> None: 

1772 """ 

1773 Visit the block specification of a block configuration, before its block name. 

1774 

1775 :param configuration: The block configuration. 

1776 """ 

1777 

1778 def DepartBlockSpecification(self, configuration: BlockConfiguration) -> None: 

1779 """ 

1780 Depart from the block specification of a block configuration, after its block name. 

1781 

1782 :param configuration: The block configuration. 

1783 """ 

1784 

1785 def VisitLibraryClause(self, clause: LibraryClause) -> None: 

1786 """ 

1787 Visit a library clause, before its first library name. 

1788 

1789 :param clause: The library clause. 

1790 """ 

1791 

1792 def DepartLibraryClause(self, clause: LibraryClause) -> None: 

1793 """ 

1794 Depart from a library clause, after its last library name. 

1795 

1796 :param clause: The library clause. 

1797 """ 

1798 

1799 def VisitUseClause(self, clause: UseClause) -> None: 

1800 """ 

1801 Visit a use clause, before its first selected name. 

1802 

1803 :param clause: The use clause. 

1804 """ 

1805 

1806 def DepartUseClause(self, clause: UseClause) -> None: 

1807 """ 

1808 Depart from a use clause, after its last selected name. 

1809 

1810 :param clause: The use clause. 

1811 """ 

1812 

1813 def VisitContextReference(self, reference: ContextReference) -> None: 

1814 """ 

1815 Visit a context reference, before its first context name. 

1816 

1817 :param reference: The context reference. 

1818 """ 

1819 

1820 def DepartContextReference(self, reference: ContextReference) -> None: 

1821 """ 

1822 Depart from a context reference, after its last context name. 

1823 

1824 :param reference: The context reference. 

1825 """ 

1826 

1827 def VisitContext(self, context: Context) -> None: 

1828 """ 

1829 Visit a context declaration, before its first context item. 

1830 

1831 :param context: The context declaration. 

1832 """ 

1833 

1834 def DepartContext(self, context: Context) -> None: 

1835 """ 

1836 Depart from a context declaration, after its last context item. 

1837 

1838 :param context: The context declaration. 

1839 """ 

1840 

1841 def VisitPackage(self, package: Package) -> None: 

1842 """ 

1843 Visit a package declaration, before its generic clause. 

1844 

1845 :param package: The package declaration. 

1846 """ 

1847 

1848 def DepartPackage(self, package: Package) -> None: 

1849 """ 

1850 Depart from a package declaration, after its last declared item. 

1851 

1852 :param package: The package declaration. 

1853 """ 

1854 

1855 def VisitPackageBody(self, body: PackageBody) -> None: 

1856 """ 

1857 Visit a package body, before its first declared item. 

1858 

1859 :param body: The package body. 

1860 """ 

1861 

1862 def DepartPackageBody(self, body: PackageBody) -> None: 

1863 """ 

1864 Depart from a package body, after its last declared item. 

1865 

1866 :param body: The package body. 

1867 """ 

1868 

1869 def VisitPackageInstantiation(self, instantiation: PackageInstantiation) -> None: 

1870 """ 

1871 Visit a package instantiation, before its generic package. 

1872 

1873 :param instantiation: The package instantiation. 

1874 """ 

1875 

1876 def DepartPackageInstantiation(self, instantiation: PackageInstantiation) -> None: 

1877 """ 

1878 Depart from a package instantiation, after its generic map aspect. 

1879 

1880 :param instantiation: The package instantiation. 

1881 """ 

1882 

1883 def VisitEntity(self, entity: Entity) -> None: 

1884 """ 

1885 Visit an entity declaration, before its generic clause. 

1886 

1887 :param entity: The entity declaration. 

1888 """ 

1889 

1890 def DepartEntity(self, entity: Entity) -> None: 

1891 """ 

1892 Depart from an entity declaration, after its last statement. 

1893 

1894 :param entity: The entity declaration. 

1895 """ 

1896 

1897 def VisitArchitecture(self, architecture: Architecture) -> None: 

1898 """ 

1899 Visit an architecture body, before its entity name. 

1900 

1901 :param architecture: The architecture body. 

1902 """ 

1903 

1904 def DepartArchitecture(self, architecture: Architecture) -> None: 

1905 """ 

1906 Depart from an architecture body, after its last statement. 

1907 

1908 :param architecture: The architecture body. 

1909 """ 

1910 

1911 def VisitConfiguration(self, configuration: Configuration) -> None: 

1912 """ 

1913 Visit a configuration declaration, before its entity name. 

1914 

1915 :param configuration: The configuration declaration. 

1916 """ 

1917 

1918 def DepartConfiguration(self, configuration: Configuration) -> None: 

1919 """ 

1920 Depart from a configuration declaration, after its block configuration. 

1921 

1922 :param configuration: The configuration declaration. 

1923 """ 

1924 

1925 def VisitBlockConfiguration(self, configuration: BlockConfiguration) -> None: 

1926 """ 

1927 Visit a block configuration, before its block specification. 

1928 

1929 :param configuration: The block configuration. 

1930 """ 

1931 

1932 def DepartBlockConfiguration(self, configuration: BlockConfiguration) -> None: 

1933 """ 

1934 Depart from a block configuration, after its last nested configuration. 

1935 

1936 :param configuration: The block configuration. 

1937 """ 

1938 

1939 def VisitComponentConfiguration(self, configuration: ComponentConfiguration) -> None: 

1940 """ 

1941 Visit a component configuration, before its instantiation list. 

1942 

1943 :param configuration: The component configuration. 

1944 """ 

1945 

1946 def DepartComponentConfiguration(self, configuration: ComponentConfiguration) -> None: 

1947 """ 

1948 Depart from a component configuration, after its binding indication. 

1949 

1950 :param configuration: The component configuration. 

1951 """ 

1952 

1953 def VisitBindingIndication(self, indication: BindingIndication) -> None: 

1954 """ 

1955 Visit a binding indication, before its entity aspect. 

1956 

1957 :param indication: The binding indication. 

1958 """ 

1959 

1960 def DepartBindingIndication(self, indication: BindingIndication) -> None: 

1961 """ 

1962 Depart from a binding indication, after its port map aspect. 

1963 

1964 :param indication: The binding indication. 

1965 """ 

1966 

1967 def VisitEntityAspectEntity(self, aspect: EntityAspectEntity) -> None: 

1968 """ 

1969 Visit an entity aspect naming an entity, before its entity name. 

1970 

1971 :param aspect: The entity aspect. 

1972 """ 

1973 

1974 def DepartEntityAspectEntity(self, aspect: EntityAspectEntity) -> None: 

1975 """ 

1976 Depart from an entity aspect naming an entity, after its architecture name. 

1977 

1978 :param aspect: The entity aspect. 

1979 """ 

1980 

1981 def VisitEntityAspectConfiguration(self, aspect: EntityAspectConfiguration) -> None: 

1982 """ 

1983 Visit an entity aspect naming a configuration, before its configuration name. 

1984 

1985 :param aspect: The entity aspect. 

1986 """ 

1987 

1988 def DepartEntityAspectConfiguration(self, aspect: EntityAspectConfiguration) -> None: 

1989 """ 

1990 Depart from an entity aspect naming a configuration, after its configuration name. 

1991 

1992 :param aspect: The entity aspect. 

1993 """ 

1994 

1995 def VisitEntityAspectOpen(self, aspect: EntityAspectOpen) -> None: 

1996 """ 

1997 Visit an open entity aspect. 

1998 

1999 :param aspect: The entity aspect. 

2000 """ 

2001 

2002 def DepartEntityAspectOpen(self, aspect: EntityAspectOpen) -> None: 

2003 """ 

2004 Depart from an open entity aspect. 

2005 

2006 :param aspect: The entity aspect. 

2007 """ 

2008 

2009 def VisitAllInstantiationList(self, instantiationList: AllInstantiationList) -> None: 

2010 """ 

2011 Visit an ``all`` instantiation list. 

2012 

2013 :param instantiationList: The instantiation list. 

2014 """ 

2015 

2016 def DepartAllInstantiationList(self, instantiationList: AllInstantiationList) -> None: 

2017 """ 

2018 Depart from an ``all`` instantiation list. 

2019 

2020 :param instantiationList: The instantiation list. 

2021 """ 

2022 

2023 def VisitOthersInstantiationList(self, instantiationList: OthersInstantiationList) -> None: 

2024 """ 

2025 Visit an ``others`` instantiation list. 

2026 

2027 :param instantiationList: The instantiation list. 

2028 """ 

2029 

2030 def DepartOthersInstantiationList(self, instantiationList: OthersInstantiationList) -> None: 

2031 """ 

2032 Depart from an ``others`` instantiation list. 

2033 

2034 :param instantiationList: The instantiation list. 

2035 """ 

2036 

2037 def VisitDocument(self, document: Document) -> None: 

2038 """ 

2039 Visit a document, before its first design unit. 

2040 

2041 :param document: The document. 

2042 """ 

2043 

2044 def DepartDocument(self, document: Document) -> None: 

2045 """ 

2046 Depart from a document, after its last design unit. 

2047 

2048 :param document: The document. 

2049 """ 

2050 

2051 def VisitSensitivityList(self, process: ProcessStatement) -> None: 

2052 """ 

2053 Visit the sensitivity list of a process, before its first name. 

2054 

2055 :param process: The process. 

2056 """ 

2057 

2058 def DepartSensitivityList(self, process: ProcessStatement) -> None: 

2059 """ 

2060 Depart from the sensitivity list of a process, after its last name. 

2061 

2062 :param process: The process. 

2063 """ 

2064 

2065 def VisitActualParameterPart(self, call: ProcedureCallMixin) -> None: 

2066 """ 

2067 Visit the actual parameter part of a procedure call, before its first association. 

2068 

2069 :param call: The procedure call. 

2070 """ 

2071 

2072 def DepartActualParameterPart(self, call: ProcedureCallMixin) -> None: 

2073 """ 

2074 Depart from the actual parameter part of a procedure call, after its last association. 

2075 

2076 :param call: The procedure call. 

2077 """ 

2078 

2079 def VisitWaveformElement(self, element: WaveformElement) -> None: 

2080 """ 

2081 Visit a waveform element, before its value. 

2082 

2083 :param element: The waveform element. 

2084 """ 

2085 

2086 def DepartWaveformElement(self, element: WaveformElement) -> None: 

2087 """ 

2088 Depart from a waveform element, after its delay. 

2089 

2090 :param element: The waveform element. 

2091 """ 

2092 

2093 def VisitConditionalWaveform(self, waveform: ConditionalWaveform) -> None: 

2094 """ 

2095 Visit a conditional waveform, before its waveform. 

2096 

2097 :param waveform: The conditional waveform. 

2098 """ 

2099 

2100 def DepartConditionalWaveform(self, waveform: ConditionalWaveform) -> None: 

2101 """ 

2102 Depart from a conditional waveform, after its condition. 

2103 

2104 :param waveform: The conditional waveform. 

2105 """ 

2106 

2107 def VisitSelectedWaveform(self, waveform: SelectedWaveform) -> None: 

2108 """ 

2109 Visit a selected waveform, before its waveform. 

2110 

2111 :param waveform: The selected waveform. 

2112 """ 

2113 

2114 def DepartSelectedWaveform(self, waveform: SelectedWaveform) -> None: 

2115 """ 

2116 Depart from a selected waveform, after its last choice. 

2117 

2118 :param waveform: The selected waveform. 

2119 """ 

2120 

2121 def VisitOthersSelectedWaveform(self, waveform: OthersSelectedWaveform) -> None: 

2122 """ 

2123 Visit the ``others`` selected waveform, before its waveform. 

2124 

2125 :param waveform: The selected waveform. 

2126 """ 

2127 

2128 def DepartOthersSelectedWaveform(self, waveform: OthersSelectedWaveform) -> None: 

2129 """ 

2130 Depart from the ``others`` selected waveform, after its waveform. 

2131 

2132 :param waveform: The selected waveform. 

2133 """ 

2134 

2135 def VisitIndexedChoice(self, choice: IndexedChoice) -> None: 

2136 """ 

2137 Visit a choice given by a value, before its value. 

2138 

2139 :param choice: The choice. 

2140 """ 

2141 

2142 def DepartIndexedChoice(self, choice: IndexedChoice) -> None: 

2143 """ 

2144 Depart from a choice given by a value, after its value. 

2145 

2146 :param choice: The choice. 

2147 """ 

2148 

2149 def VisitRangedChoice(self, choice: RangedChoice) -> None: 

2150 """ 

2151 Visit a choice given by a range, before its range. 

2152 

2153 :param choice: The choice. 

2154 """ 

2155 

2156 def DepartRangedChoice(self, choice: RangedChoice) -> None: 

2157 """ 

2158 Depart from a choice given by a range, after its range. 

2159 

2160 :param choice: The choice. 

2161 """ 

2162 

2163 def VisitProcessStatement(self, process: ProcessStatement) -> None: 

2164 """ 

2165 Visit a process statement, before its sensitivity list. 

2166 

2167 :param process: The process. 

2168 """ 

2169 

2170 def DepartProcessStatement(self, process: ProcessStatement) -> None: 

2171 """ 

2172 Depart from a process statement, after its last statement. 

2173 

2174 :param process: The process. 

2175 """ 

2176 

2177 def VisitConcurrentProcedureCall(self, call: ConcurrentProcedureCall) -> None: 

2178 """ 

2179 Visit a concurrent procedure call, before its procedure. 

2180 

2181 :param call: The procedure call. 

2182 """ 

2183 

2184 def DepartConcurrentProcedureCall(self, call: ConcurrentProcedureCall) -> None: 

2185 """ 

2186 Depart from a concurrent procedure call, after its parameters. 

2187 

2188 :param call: The procedure call. 

2189 """ 

2190 

2191 def VisitConcurrentSimpleSignalAssignment(self, assignment: ConcurrentSimpleSignalAssignment) -> None: 

2192 """ 

2193 Visit a concurrent simple signal assignment, before its target. 

2194 

2195 :param assignment: The signal assignment. 

2196 """ 

2197 

2198 def DepartConcurrentSimpleSignalAssignment(self, assignment: ConcurrentSimpleSignalAssignment) -> None: 

2199 """ 

2200 Depart from a concurrent simple signal assignment, after its waveform. 

2201 

2202 :param assignment: The signal assignment. 

2203 """ 

2204 

2205 def VisitConcurrentSelectedSignalAssignment(self, assignment: ConcurrentSelectedSignalAssignment) -> None: 

2206 """ 

2207 Visit a concurrent selected signal assignment, before its selector. 

2208 

2209 :param assignment: The signal assignment. 

2210 """ 

2211 

2212 def DepartConcurrentSelectedSignalAssignment(self, assignment: ConcurrentSelectedSignalAssignment) -> None: 

2213 """ 

2214 Depart from a concurrent selected signal assignment, after its last alternative. 

2215 

2216 :param assignment: The signal assignment. 

2217 """ 

2218 

2219 def VisitConcurrentConditionalSignalAssignment(self, assignment: ConcurrentConditionalSignalAssignment) -> None: 

2220 """ 

2221 Visit a concurrent conditional signal assignment, before its target. 

2222 

2223 :param assignment: The signal assignment. 

2224 """ 

2225 

2226 def DepartConcurrentConditionalSignalAssignment(self, assignment: ConcurrentConditionalSignalAssignment) -> None: 

2227 """ 

2228 Depart from a concurrent conditional signal assignment, after its last alternative. 

2229 

2230 :param assignment: The signal assignment. 

2231 """ 

2232 

2233 def VisitConcurrentAssertStatement(self, assertion: ConcurrentAssertStatement) -> None: 

2234 """ 

2235 Visit a concurrent assertion, before its condition. 

2236 

2237 :param assertion: The assertion. 

2238 """ 

2239 

2240 def DepartConcurrentAssertStatement(self, assertion: ConcurrentAssertStatement) -> None: 

2241 """ 

2242 Depart from a concurrent assertion, after its severity. 

2243 

2244 :param assertion: The assertion. 

2245 """ 

2246 

2247 def VisitComponentInstantiation(self, instantiation: ComponentInstantiation) -> None: 

2248 """ 

2249 Visit a component instantiation, before its component name. 

2250 

2251 :param instantiation: The component instantiation. 

2252 """ 

2253 

2254 def DepartComponentInstantiation(self, instantiation: ComponentInstantiation) -> None: 

2255 """ 

2256 Depart from a component instantiation, after its port map aspect. 

2257 

2258 :param instantiation: The component instantiation. 

2259 """ 

2260 

2261 def VisitEntityInstantiation(self, instantiation: EntityInstantiation) -> None: 

2262 """ 

2263 Visit an entity instantiation, before its entity name. 

2264 

2265 :param instantiation: The entity instantiation. 

2266 """ 

2267 

2268 def DepartEntityInstantiation(self, instantiation: EntityInstantiation) -> None: 

2269 """ 

2270 Depart from an entity instantiation, after its port map aspect. 

2271 

2272 :param instantiation: The entity instantiation. 

2273 """ 

2274 

2275 def VisitConfigurationInstantiation(self, instantiation: ConfigurationInstantiation) -> None: 

2276 """ 

2277 Visit a configuration instantiation, before its configuration name. 

2278 

2279 :param instantiation: The configuration instantiation. 

2280 """ 

2281 

2282 def DepartConfigurationInstantiation(self, instantiation: ConfigurationInstantiation) -> None: 

2283 """ 

2284 Depart from a configuration instantiation, after its port map aspect. 

2285 

2286 :param instantiation: The configuration instantiation. 

2287 """ 

2288 

2289 def VisitConcurrentBlockStatement(self, block: ConcurrentBlockStatement) -> None: 

2290 """ 

2291 Visit a block statement, before its generic clause. 

2292 

2293 :param block: The block statement. 

2294 """ 

2295 

2296 def DepartConcurrentBlockStatement(self, block: ConcurrentBlockStatement) -> None: 

2297 """ 

2298 Depart from a block statement, after its last statement. 

2299 

2300 :param block: The block statement. 

2301 """ 

2302 

2303 def VisitIfGenerateStatement(self, statement: IfGenerateStatement) -> None: 

2304 """ 

2305 Visit an if-generate statement, before its if branch. 

2306 

2307 :param statement: The if-generate statement. 

2308 """ 

2309 

2310 def DepartIfGenerateStatement(self, statement: IfGenerateStatement) -> None: 

2311 """ 

2312 Depart from an if-generate statement, after its last branch. 

2313 

2314 :param statement: The if-generate statement. 

2315 """ 

2316 

2317 def VisitIfGenerateBranch(self, branch: IfGenerateBranch) -> None: 

2318 """ 

2319 Visit the if branch of an if-generate statement, before its condition. 

2320 

2321 :param branch: The generate branch. 

2322 """ 

2323 

2324 def DepartIfGenerateBranch(self, branch: IfGenerateBranch) -> None: 

2325 """ 

2326 Depart from the if branch of an if-generate statement, after its last statement. 

2327 

2328 :param branch: The generate branch. 

2329 """ 

2330 

2331 def VisitElsifGenerateBranch(self, branch: ElsifGenerateBranch) -> None: 

2332 """ 

2333 Visit an elsif branch of an if-generate statement, before its condition. 

2334 

2335 :param branch: The generate branch. 

2336 """ 

2337 

2338 def DepartElsifGenerateBranch(self, branch: ElsifGenerateBranch) -> None: 

2339 """ 

2340 Depart from an elsif branch of an if-generate statement, after its last statement. 

2341 

2342 :param branch: The generate branch. 

2343 """ 

2344 

2345 def VisitElseGenerateBranch(self, branch: ElseGenerateBranch) -> None: 

2346 """ 

2347 Visit the else branch of an if-generate statement, before its first declared item. 

2348 

2349 :param branch: The generate branch. 

2350 """ 

2351 

2352 def DepartElseGenerateBranch(self, branch: ElseGenerateBranch) -> None: 

2353 """ 

2354 Depart from the else branch of an if-generate statement, after its last statement. 

2355 

2356 :param branch: The generate branch. 

2357 """ 

2358 

2359 def VisitCaseGenerateStatement(self, statement: CaseGenerateStatement) -> None: 

2360 """ 

2361 Visit a case-generate statement, before its selector. 

2362 

2363 :param statement: The case-generate statement. 

2364 """ 

2365 

2366 def DepartCaseGenerateStatement(self, statement: CaseGenerateStatement) -> None: 

2367 """ 

2368 Depart from a case-generate statement, after its last alternative. 

2369 

2370 :param statement: The case-generate statement. 

2371 """ 

2372 

2373 def VisitGenerateCase(self, case: GenerateCase) -> None: 

2374 """ 

2375 Visit an alternative of a case-generate statement, before its first choice. 

2376 

2377 :param case: The case-generate alternative. 

2378 """ 

2379 

2380 def DepartGenerateCase(self, case: GenerateCase) -> None: 

2381 """ 

2382 Depart from an alternative of a case-generate statement, after its last statement. 

2383 

2384 :param case: The case-generate alternative. 

2385 """ 

2386 

2387 def VisitOthersGenerateCase(self, case: OthersGenerateCase) -> None: 

2388 """ 

2389 Visit the ``others`` alternative of a case-generate statement, before its first declared item. 

2390 

2391 :param case: The case-generate alternative. 

2392 """ 

2393 

2394 def DepartOthersGenerateCase(self, case: OthersGenerateCase) -> None: 

2395 """ 

2396 Depart from the ``others`` alternative of a case-generate statement, after its last statement. 

2397 

2398 :param case: The case-generate alternative. 

2399 """ 

2400 

2401 def VisitIndexedGenerateChoice(self, choice: IndexedGenerateChoice) -> None: 

2402 """ 

2403 Visit a case-generate choice given by a value, before its value. 

2404 

2405 :param choice: The choice. 

2406 """ 

2407 

2408 def DepartIndexedGenerateChoice(self, choice: IndexedGenerateChoice) -> None: 

2409 """ 

2410 Depart from a case-generate choice given by a value, after its value. 

2411 

2412 :param choice: The choice. 

2413 """ 

2414 

2415 def VisitRangedGenerateChoice(self, choice: RangedGenerateChoice) -> None: 

2416 """ 

2417 Visit a case-generate choice given by a range, before its range. 

2418 

2419 :param choice: The choice. 

2420 """ 

2421 

2422 def DepartRangedGenerateChoice(self, choice: RangedGenerateChoice) -> None: 

2423 """ 

2424 Depart from a case-generate choice given by a range, after its range. 

2425 

2426 :param choice: The choice. 

2427 """ 

2428 

2429 def VisitForGenerateStatement(self, statement: ForGenerateStatement) -> None: 

2430 """ 

2431 Visit a for-generate statement, before its range. 

2432 

2433 :param statement: The for-generate statement. 

2434 """ 

2435 

2436 def DepartForGenerateStatement(self, statement: ForGenerateStatement) -> None: 

2437 """ 

2438 Depart from a for-generate statement, after its last statement. 

2439 

2440 :param statement: The for-generate statement. 

2441 """ 

2442 

2443 def VisitConditionalExpression(self, expression: ConditionalExpression) -> None: 

2444 """ 

2445 Visit a conditional expression of a conditional variable assignment, before its value. 

2446 

2447 :param expression: The conditional expression. 

2448 """ 

2449 

2450 def DepartConditionalExpression(self, expression: ConditionalExpression) -> None: 

2451 """ 

2452 Depart from a conditional expression of a conditional variable assignment, after its condition. 

2453 

2454 :param expression: The conditional expression. 

2455 """ 

2456 

2457 def VisitSelectedExpression(self, expression: SelectedExpression) -> None: 

2458 """ 

2459 Visit a selected expression of a selected variable assignment, before its value. 

2460 

2461 :param expression: The selected expression. 

2462 """ 

2463 

2464 def DepartSelectedExpression(self, expression: SelectedExpression) -> None: 

2465 """ 

2466 Depart from a selected expression of a selected variable assignment, after its last choice. 

2467 

2468 :param expression: The selected expression. 

2469 """ 

2470 

2471 def VisitOthersSelectedExpression(self, expression: OthersSelectedExpression) -> None: 

2472 """ 

2473 Visit the ``others`` selected expression of a selected variable assignment, before its value. 

2474 

2475 :param expression: The selected expression. 

2476 """ 

2477 

2478 def DepartOthersSelectedExpression(self, expression: OthersSelectedExpression) -> None: 

2479 """ 

2480 Depart from the ``others`` selected expression of a selected variable assignment, after its value. 

2481 

2482 :param expression: The selected expression. 

2483 """ 

2484 

2485 def VisitSequentialProcedureCall(self, call: SequentialProcedureCall) -> None: 

2486 """ 

2487 Visit a sequential procedure call, before its procedure. 

2488 

2489 :param call: The procedure call. 

2490 """ 

2491 

2492 def DepartSequentialProcedureCall(self, call: SequentialProcedureCall) -> None: 

2493 """ 

2494 Depart from a sequential procedure call, after its parameters. 

2495 

2496 :param call: The procedure call. 

2497 """ 

2498 

2499 def VisitSequentialSimpleSignalAssignment(self, assignment: SequentialSimpleSignalAssignment) -> None: 

2500 """ 

2501 Visit a sequential simple signal assignment, before its target. 

2502 

2503 :param assignment: The signal assignment. 

2504 """ 

2505 

2506 def DepartSequentialSimpleSignalAssignment(self, assignment: SequentialSimpleSignalAssignment) -> None: 

2507 """ 

2508 Depart from a sequential simple signal assignment, after its waveform. 

2509 

2510 :param assignment: The signal assignment. 

2511 """ 

2512 

2513 def VisitSequentialVariableAssignment(self, assignment: SequentialVariableAssignment) -> None: 

2514 """ 

2515 Visit a variable assignment, before its target. 

2516 

2517 :param assignment: The variable assignment. 

2518 """ 

2519 

2520 def DepartSequentialVariableAssignment(self, assignment: SequentialVariableAssignment) -> None: 

2521 """ 

2522 Depart from a variable assignment, after its expression. 

2523 

2524 :param assignment: The variable assignment. 

2525 """ 

2526 

2527 def VisitSequentialConditionalVariableAssignment(self, assignment: SequentialConditionalVariableAssignment) -> None: 

2528 """ 

2529 Visit a conditional variable assignment, before its target. 

2530 

2531 :param assignment: The variable assignment. 

2532 """ 

2533 

2534 def DepartSequentialConditionalVariableAssignment(self, assignment: SequentialConditionalVariableAssignment) -> None: 

2535 """ 

2536 Depart from a conditional variable assignment, after its last alternative. 

2537 

2538 :param assignment: The variable assignment. 

2539 """ 

2540 

2541 def VisitSequentialConditionalSignalAssignment(self, assignment: SequentialConditionalSignalAssignment) -> None: 

2542 """ 

2543 Visit a sequential conditional signal assignment, before its target. 

2544 

2545 :param assignment: The signal assignment. 

2546 """ 

2547 

2548 def DepartSequentialConditionalSignalAssignment(self, assignment: SequentialConditionalSignalAssignment) -> None: 

2549 """ 

2550 Depart from a sequential conditional signal assignment, after its last alternative. 

2551 

2552 :param assignment: The signal assignment. 

2553 """ 

2554 

2555 def VisitSequentialSelectedVariableAssignment(self, assignment: SequentialSelectedVariableAssignment) -> None: 

2556 """ 

2557 Visit a selected variable assignment, before its selector. 

2558 

2559 :param assignment: The variable assignment. 

2560 """ 

2561 

2562 def DepartSequentialSelectedVariableAssignment(self, assignment: SequentialSelectedVariableAssignment) -> None: 

2563 """ 

2564 Depart from a selected variable assignment, after its last alternative. 

2565 

2566 :param assignment: The variable assignment. 

2567 """ 

2568 

2569 def VisitSequentialSelectedSignalAssignment(self, assignment: SequentialSelectedSignalAssignment) -> None: 

2570 """ 

2571 Visit a sequential selected signal assignment, before its selector. 

2572 

2573 :param assignment: The signal assignment. 

2574 """ 

2575 

2576 def DepartSequentialSelectedSignalAssignment(self, assignment: SequentialSelectedSignalAssignment) -> None: 

2577 """ 

2578 Depart from a sequential selected signal assignment, after its last alternative. 

2579 

2580 :param assignment: The signal assignment. 

2581 """ 

2582 

2583 def VisitSignalForceAssignment(self, assignment: SignalForceAssignment) -> None: 

2584 """ 

2585 Visit a force assignment, before its target. 

2586 

2587 :param assignment: The force assignment. 

2588 """ 

2589 

2590 def DepartSignalForceAssignment(self, assignment: SignalForceAssignment) -> None: 

2591 """ 

2592 Depart from a force assignment, after its expression. 

2593 

2594 :param assignment: The force assignment. 

2595 """ 

2596 

2597 def VisitSignalReleaseAssignment(self, assignment: SignalReleaseAssignment) -> None: 

2598 """ 

2599 Visit a release assignment, before its target. 

2600 

2601 :param assignment: The release assignment. 

2602 """ 

2603 

2604 def DepartSignalReleaseAssignment(self, assignment: SignalReleaseAssignment) -> None: 

2605 """ 

2606 Depart from a release assignment, after its target. 

2607 

2608 :param assignment: The release assignment. 

2609 """ 

2610 

2611 def VisitSequentialReportStatement(self, statement: SequentialReportStatement) -> None: 

2612 """ 

2613 Visit a report statement, before its message. 

2614 

2615 :param statement: The report statement. 

2616 """ 

2617 

2618 def DepartSequentialReportStatement(self, statement: SequentialReportStatement) -> None: 

2619 """ 

2620 Depart from a report statement, after its severity. 

2621 

2622 :param statement: The report statement. 

2623 """ 

2624 

2625 def VisitSequentialAssertStatement(self, assertion: SequentialAssertStatement) -> None: 

2626 """ 

2627 Visit a sequential assertion, before its condition. 

2628 

2629 :param assertion: The assertion. 

2630 """ 

2631 

2632 def DepartSequentialAssertStatement(self, assertion: SequentialAssertStatement) -> None: 

2633 """ 

2634 Depart from a sequential assertion, after its severity. 

2635 

2636 :param assertion: The assertion. 

2637 """ 

2638 

2639 def VisitNullStatement(self, statement: NullStatement) -> None: 

2640 """ 

2641 Visit a null statement. 

2642 

2643 :param statement: The null statement. 

2644 """ 

2645 

2646 def DepartNullStatement(self, statement: NullStatement) -> None: 

2647 """ 

2648 Depart from a null statement. 

2649 

2650 :param statement: The null statement. 

2651 """ 

2652 

2653 def VisitReturnStatement(self, statement: ReturnStatement) -> None: 

2654 """ 

2655 Visit a return statement, before its value. 

2656 

2657 :param statement: The return statement. 

2658 """ 

2659 

2660 def DepartReturnStatement(self, statement: ReturnStatement) -> None: 

2661 """ 

2662 Depart from a return statement, after its value. 

2663 

2664 :param statement: The return statement. 

2665 """ 

2666 

2667 def VisitWaitStatement(self, statement: WaitStatement) -> None: 

2668 """ 

2669 Visit a wait statement, before its sensitivity clause. 

2670 

2671 :param statement: The wait statement. 

2672 """ 

2673 

2674 def DepartWaitStatement(self, statement: WaitStatement) -> None: 

2675 """ 

2676 Depart from a wait statement, after its timeout clause. 

2677 

2678 :param statement: The wait statement. 

2679 """ 

2680 

2681 def VisitIfStatement(self, statement: IfStatement) -> None: 

2682 """ 

2683 Visit an if statement, before its if branch. 

2684 

2685 :param statement: The if statement. 

2686 """ 

2687 

2688 def DepartIfStatement(self, statement: IfStatement) -> None: 

2689 """ 

2690 Depart from an if statement, after its last branch. 

2691 

2692 :param statement: The if statement. 

2693 """ 

2694 

2695 def VisitIfBranch(self, branch: IfBranch) -> None: 

2696 """ 

2697 Visit the if branch of an if statement, before its condition. 

2698 

2699 :param branch: The branch. 

2700 """ 

2701 

2702 def DepartIfBranch(self, branch: IfBranch) -> None: 

2703 """ 

2704 Depart from the if branch of an if statement, after its last statement. 

2705 

2706 :param branch: The branch. 

2707 """ 

2708 

2709 def VisitElsifBranch(self, branch: ElsifBranch) -> None: 

2710 """ 

2711 Visit an elsif branch of an if statement, before its condition. 

2712 

2713 :param branch: The branch. 

2714 """ 

2715 

2716 def DepartElsifBranch(self, branch: ElsifBranch) -> None: 

2717 """ 

2718 Depart from an elsif branch of an if statement, after its last statement. 

2719 

2720 :param branch: The branch. 

2721 """ 

2722 

2723 def VisitElseBranch(self, branch: ElseBranch) -> None: 

2724 """ 

2725 Visit the else branch of an if statement, before its first statement. 

2726 

2727 :param branch: The branch. 

2728 """ 

2729 

2730 def DepartElseBranch(self, branch: ElseBranch) -> None: 

2731 """ 

2732 Depart from the else branch of an if statement, after its last statement. 

2733 

2734 :param branch: The branch. 

2735 """ 

2736 

2737 def VisitCaseStatement(self, statement: CaseStatement) -> None: 

2738 """ 

2739 Visit a case statement, before its selector. 

2740 

2741 :param statement: The case statement. 

2742 """ 

2743 

2744 def DepartCaseStatement(self, statement: CaseStatement) -> None: 

2745 """ 

2746 Depart from a case statement, after its last alternative. 

2747 

2748 :param statement: The case statement. 

2749 """ 

2750 

2751 def VisitCase(self, case: Case) -> None: 

2752 """ 

2753 Visit an alternative of a case statement, before its first choice. 

2754 

2755 :param case: The case alternative. 

2756 """ 

2757 

2758 def DepartCase(self, case: Case) -> None: 

2759 """ 

2760 Depart from an alternative of a case statement, after its last statement. 

2761 

2762 :param case: The case alternative. 

2763 """ 

2764 

2765 def VisitOthersCase(self, case: OthersCase) -> None: 

2766 """ 

2767 Visit the ``others`` alternative of a case statement, before its first statement. 

2768 

2769 :param case: The case alternative. 

2770 """ 

2771 

2772 def DepartOthersCase(self, case: OthersCase) -> None: 

2773 """ 

2774 Depart from the ``others`` alternative of a case statement, after its last statement. 

2775 

2776 :param case: The case alternative. 

2777 """ 

2778 

2779 def VisitEndlessLoopStatement(self, statement: EndlessLoopStatement) -> None: 

2780 """ 

2781 Visit a loop statement without iteration scheme, before its first statement. 

2782 

2783 :param statement: The loop statement. 

2784 """ 

2785 

2786 def DepartEndlessLoopStatement(self, statement: EndlessLoopStatement) -> None: 

2787 """ 

2788 Depart from a loop statement without iteration scheme, after its last statement. 

2789 

2790 :param statement: The loop statement. 

2791 """ 

2792 

2793 def VisitForLoopStatement(self, statement: ForLoopStatement) -> None: 

2794 """ 

2795 Visit a for-loop statement, before its range. 

2796 

2797 :param statement: The loop statement. 

2798 """ 

2799 

2800 def DepartForLoopStatement(self, statement: ForLoopStatement) -> None: 

2801 """ 

2802 Depart from a for-loop statement, after its last statement. 

2803 

2804 :param statement: The loop statement. 

2805 """ 

2806 

2807 def VisitWhileLoopStatement(self, statement: WhileLoopStatement) -> None: 

2808 """ 

2809 Visit a while-loop statement, before its condition. 

2810 

2811 :param statement: The loop statement. 

2812 """ 

2813 

2814 def DepartWhileLoopStatement(self, statement: WhileLoopStatement) -> None: 

2815 """ 

2816 Depart from a while-loop statement, after its last statement. 

2817 

2818 :param statement: The loop statement. 

2819 """ 

2820 

2821 def VisitNextStatement(self, statement: NextStatement) -> None: 

2822 """ 

2823 Visit a next statement, before its condition. 

2824 

2825 :param statement: The next statement. 

2826 """ 

2827 

2828 def DepartNextStatement(self, statement: NextStatement) -> None: 

2829 """ 

2830 Depart from a next statement, after its condition. 

2831 

2832 :param statement: The next statement. 

2833 """ 

2834 

2835 def VisitExitStatement(self, statement: ExitStatement) -> None: 

2836 """ 

2837 Visit an exit statement, before its condition. 

2838 

2839 :param statement: The exit statement. 

2840 """ 

2841 

2842 def DepartExitStatement(self, statement: ExitStatement) -> None: 

2843 """ 

2844 Depart from an exit statement, after its condition. 

2845 

2846 :param statement: The exit statement. 

2847 """