@nomicfoundation/slang
Version:
A modular set of compiler APIs empowering the next generation of Solidity code analysis and developer tooling. Written in Rust and distributed in multiple languages.
602 lines • 77.1 kB
text/typescript
import { NonterminalNode, Node, TerminalNode } from "./index.mjs";
/** Abstract class to rewrite a CST. */
export declare abstract class BaseRewriter {
/** Replaces the `node` with a new node. If the result is `undefined`, the node is removed from the tree.
This function typically the entry point of the rewrite operation. */
rewriteNode(node: Node): Node | undefined;
/** Rewrites a non-terminal node. Typically called from `rewriteNode`. */
rewriteNonterminalNode(node: NonterminalNode): Node | undefined;
/** Rewrites a terminal node. Typically called from `rewriteNode`. */
rewriteTerminalNode(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `AbicoderPragma` node, recursively traversing the children (unless overriden). */
rewriteAbicoderPragma(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `AbicoderVersion` node, recursively traversing the children (unless overriden). */
rewriteAbicoderVersion(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `AdditiveExpression` node, recursively traversing the children (unless overriden). */
rewriteAdditiveExpression(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `AddressType` node, recursively traversing the children (unless overriden). */
rewriteAddressType(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `AndExpression` node, recursively traversing the children (unless overriden). */
rewriteAndExpression(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `ArgumentsDeclaration` node, recursively traversing the children (unless overriden). */
rewriteArgumentsDeclaration(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `ArrayExpression` node, recursively traversing the children (unless overriden). */
rewriteArrayExpression(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `ArrayTypeName` node, recursively traversing the children (unless overriden). */
rewriteArrayTypeName(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `ArrayValues` node, recursively traversing the children (unless overriden). */
rewriteArrayValues(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `AssemblyFlags` node, recursively traversing the children (unless overriden). */
rewriteAssemblyFlags(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `AssemblyFlagsDeclaration` node, recursively traversing the children (unless overriden). */
rewriteAssemblyFlagsDeclaration(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `AssemblyStatement` node, recursively traversing the children (unless overriden). */
rewriteAssemblyStatement(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `AssignmentExpression` node, recursively traversing the children (unless overriden). */
rewriteAssignmentExpression(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `BitwiseAndExpression` node, recursively traversing the children (unless overriden). */
rewriteBitwiseAndExpression(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `BitwiseOrExpression` node, recursively traversing the children (unless overriden). */
rewriteBitwiseOrExpression(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `BitwiseXorExpression` node, recursively traversing the children (unless overriden). */
rewriteBitwiseXorExpression(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `Block` node, recursively traversing the children (unless overriden). */
rewriteBlock(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `BreakStatement` node, recursively traversing the children (unless overriden). */
rewriteBreakStatement(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `CallOptions` node, recursively traversing the children (unless overriden). */
rewriteCallOptions(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `CallOptionsExpression` node, recursively traversing the children (unless overriden). */
rewriteCallOptionsExpression(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `CatchClause` node, recursively traversing the children (unless overriden). */
rewriteCatchClause(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `CatchClauseError` node, recursively traversing the children (unless overriden). */
rewriteCatchClauseError(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `CatchClauses` node, recursively traversing the children (unless overriden). */
rewriteCatchClauses(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `ConditionalExpression` node, recursively traversing the children (unless overriden). */
rewriteConditionalExpression(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `ConstantDefinition` node, recursively traversing the children (unless overriden). */
rewriteConstantDefinition(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `ConstructorAttribute` node, recursively traversing the children (unless overriden). */
rewriteConstructorAttribute(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `ConstructorAttributes` node, recursively traversing the children (unless overriden). */
rewriteConstructorAttributes(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `ConstructorDefinition` node, recursively traversing the children (unless overriden). */
rewriteConstructorDefinition(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `ContinueStatement` node, recursively traversing the children (unless overriden). */
rewriteContinueStatement(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `ContractDefinition` node, recursively traversing the children (unless overriden). */
rewriteContractDefinition(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `ContractMember` node, recursively traversing the children (unless overriden). */
rewriteContractMember(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `ContractMembers` node, recursively traversing the children (unless overriden). */
rewriteContractMembers(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `ContractSpecifier` node, recursively traversing the children (unless overriden). */
rewriteContractSpecifier(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `ContractSpecifiers` node, recursively traversing the children (unless overriden). */
rewriteContractSpecifiers(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `DecimalNumberExpression` node, recursively traversing the children (unless overriden). */
rewriteDecimalNumberExpression(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `DoWhileStatement` node, recursively traversing the children (unless overriden). */
rewriteDoWhileStatement(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `ElementaryType` node, recursively traversing the children (unless overriden). */
rewriteElementaryType(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `ElseBranch` node, recursively traversing the children (unless overriden). */
rewriteElseBranch(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `EmitStatement` node, recursively traversing the children (unless overriden). */
rewriteEmitStatement(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `EnumDefinition` node, recursively traversing the children (unless overriden). */
rewriteEnumDefinition(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `EnumMembers` node, recursively traversing the children (unless overriden). */
rewriteEnumMembers(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `EqualityExpression` node, recursively traversing the children (unless overriden). */
rewriteEqualityExpression(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `ErrorDefinition` node, recursively traversing the children (unless overriden). */
rewriteErrorDefinition(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `ErrorParameter` node, recursively traversing the children (unless overriden). */
rewriteErrorParameter(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `ErrorParameters` node, recursively traversing the children (unless overriden). */
rewriteErrorParameters(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `ErrorParametersDeclaration` node, recursively traversing the children (unless overriden). */
rewriteErrorParametersDeclaration(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `EventDefinition` node, recursively traversing the children (unless overriden). */
rewriteEventDefinition(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `EventParameter` node, recursively traversing the children (unless overriden). */
rewriteEventParameter(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `EventParameters` node, recursively traversing the children (unless overriden). */
rewriteEventParameters(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `EventParametersDeclaration` node, recursively traversing the children (unless overriden). */
rewriteEventParametersDeclaration(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `ExperimentalFeature` node, recursively traversing the children (unless overriden). */
rewriteExperimentalFeature(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `ExperimentalPragma` node, recursively traversing the children (unless overriden). */
rewriteExperimentalPragma(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `ExponentiationExpression` node, recursively traversing the children (unless overriden). */
rewriteExponentiationExpression(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `Expression` node, recursively traversing the children (unless overriden). */
rewriteExpression(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `ExpressionStatement` node, recursively traversing the children (unless overriden). */
rewriteExpressionStatement(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `FallbackFunctionAttribute` node, recursively traversing the children (unless overriden). */
rewriteFallbackFunctionAttribute(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `FallbackFunctionAttributes` node, recursively traversing the children (unless overriden). */
rewriteFallbackFunctionAttributes(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `FallbackFunctionDefinition` node, recursively traversing the children (unless overriden). */
rewriteFallbackFunctionDefinition(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `ForStatement` node, recursively traversing the children (unless overriden). */
rewriteForStatement(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `ForStatementCondition` node, recursively traversing the children (unless overriden). */
rewriteForStatementCondition(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `ForStatementInitialization` node, recursively traversing the children (unless overriden). */
rewriteForStatementInitialization(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `FunctionAttribute` node, recursively traversing the children (unless overriden). */
rewriteFunctionAttribute(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `FunctionAttributes` node, recursively traversing the children (unless overriden). */
rewriteFunctionAttributes(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `FunctionBody` node, recursively traversing the children (unless overriden). */
rewriteFunctionBody(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `FunctionCallExpression` node, recursively traversing the children (unless overriden). */
rewriteFunctionCallExpression(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `FunctionDefinition` node, recursively traversing the children (unless overriden). */
rewriteFunctionDefinition(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `FunctionName` node, recursively traversing the children (unless overriden). */
rewriteFunctionName(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `FunctionType` node, recursively traversing the children (unless overriden). */
rewriteFunctionType(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `FunctionTypeAttribute` node, recursively traversing the children (unless overriden). */
rewriteFunctionTypeAttribute(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `FunctionTypeAttributes` node, recursively traversing the children (unless overriden). */
rewriteFunctionTypeAttributes(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `HexNumberExpression` node, recursively traversing the children (unless overriden). */
rewriteHexNumberExpression(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `HexStringLiteral` node, recursively traversing the children (unless overriden). */
rewriteHexStringLiteral(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `HexStringLiterals` node, recursively traversing the children (unless overriden). */
rewriteHexStringLiterals(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `IdentifierPath` node, recursively traversing the children (unless overriden). */
rewriteIdentifierPath(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `IfStatement` node, recursively traversing the children (unless overriden). */
rewriteIfStatement(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `ImportAlias` node, recursively traversing the children (unless overriden). */
rewriteImportAlias(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `ImportClause` node, recursively traversing the children (unless overriden). */
rewriteImportClause(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `ImportDeconstruction` node, recursively traversing the children (unless overriden). */
rewriteImportDeconstruction(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `ImportDeconstructionSymbol` node, recursively traversing the children (unless overriden). */
rewriteImportDeconstructionSymbol(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `ImportDeconstructionSymbols` node, recursively traversing the children (unless overriden). */
rewriteImportDeconstructionSymbols(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `ImportDirective` node, recursively traversing the children (unless overriden). */
rewriteImportDirective(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `IndexAccessEnd` node, recursively traversing the children (unless overriden). */
rewriteIndexAccessEnd(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `IndexAccessExpression` node, recursively traversing the children (unless overriden). */
rewriteIndexAccessExpression(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `InequalityExpression` node, recursively traversing the children (unless overriden). */
rewriteInequalityExpression(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `InheritanceSpecifier` node, recursively traversing the children (unless overriden). */
rewriteInheritanceSpecifier(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `InheritanceType` node, recursively traversing the children (unless overriden). */
rewriteInheritanceType(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `InheritanceTypes` node, recursively traversing the children (unless overriden). */
rewriteInheritanceTypes(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `InterfaceDefinition` node, recursively traversing the children (unless overriden). */
rewriteInterfaceDefinition(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `InterfaceMembers` node, recursively traversing the children (unless overriden). */
rewriteInterfaceMembers(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `LibraryDefinition` node, recursively traversing the children (unless overriden). */
rewriteLibraryDefinition(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `LibraryMembers` node, recursively traversing the children (unless overriden). */
rewriteLibraryMembers(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `MappingKey` node, recursively traversing the children (unless overriden). */
rewriteMappingKey(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `MappingKeyType` node, recursively traversing the children (unless overriden). */
rewriteMappingKeyType(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `MappingType` node, recursively traversing the children (unless overriden). */
rewriteMappingType(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `MappingValue` node, recursively traversing the children (unless overriden). */
rewriteMappingValue(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `MemberAccessExpression` node, recursively traversing the children (unless overriden). */
rewriteMemberAccessExpression(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `ModifierAttribute` node, recursively traversing the children (unless overriden). */
rewriteModifierAttribute(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `ModifierAttributes` node, recursively traversing the children (unless overriden). */
rewriteModifierAttributes(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `ModifierDefinition` node, recursively traversing the children (unless overriden). */
rewriteModifierDefinition(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `ModifierInvocation` node, recursively traversing the children (unless overriden). */
rewriteModifierInvocation(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `MultiplicativeExpression` node, recursively traversing the children (unless overriden). */
rewriteMultiplicativeExpression(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `NamedArgument` node, recursively traversing the children (unless overriden). */
rewriteNamedArgument(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `NamedArgumentGroup` node, recursively traversing the children (unless overriden). */
rewriteNamedArgumentGroup(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `NamedArguments` node, recursively traversing the children (unless overriden). */
rewriteNamedArguments(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `NamedArgumentsDeclaration` node, recursively traversing the children (unless overriden). */
rewriteNamedArgumentsDeclaration(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `NamedImport` node, recursively traversing the children (unless overriden). */
rewriteNamedImport(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `NewExpression` node, recursively traversing the children (unless overriden). */
rewriteNewExpression(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `NumberUnit` node, recursively traversing the children (unless overriden). */
rewriteNumberUnit(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `OrExpression` node, recursively traversing the children (unless overriden). */
rewriteOrExpression(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `OverridePaths` node, recursively traversing the children (unless overriden). */
rewriteOverridePaths(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `OverridePathsDeclaration` node, recursively traversing the children (unless overriden). */
rewriteOverridePathsDeclaration(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `OverrideSpecifier` node, recursively traversing the children (unless overriden). */
rewriteOverrideSpecifier(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `Parameter` node, recursively traversing the children (unless overriden). */
rewriteParameter(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `Parameters` node, recursively traversing the children (unless overriden). */
rewriteParameters(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `ParametersDeclaration` node, recursively traversing the children (unless overriden). */
rewriteParametersDeclaration(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `PathImport` node, recursively traversing the children (unless overriden). */
rewritePathImport(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `PositionalArguments` node, recursively traversing the children (unless overriden). */
rewritePositionalArguments(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `PositionalArgumentsDeclaration` node, recursively traversing the children (unless overriden). */
rewritePositionalArgumentsDeclaration(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `PostfixExpression` node, recursively traversing the children (unless overriden). */
rewritePostfixExpression(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `Pragma` node, recursively traversing the children (unless overriden). */
rewritePragma(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `PragmaDirective` node, recursively traversing the children (unless overriden). */
rewritePragmaDirective(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `PrefixExpression` node, recursively traversing the children (unless overriden). */
rewritePrefixExpression(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `ReceiveFunctionAttribute` node, recursively traversing the children (unless overriden). */
rewriteReceiveFunctionAttribute(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `ReceiveFunctionAttributes` node, recursively traversing the children (unless overriden). */
rewriteReceiveFunctionAttributes(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `ReceiveFunctionDefinition` node, recursively traversing the children (unless overriden). */
rewriteReceiveFunctionDefinition(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `ReturnStatement` node, recursively traversing the children (unless overriden). */
rewriteReturnStatement(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `ReturnsDeclaration` node, recursively traversing the children (unless overriden). */
rewriteReturnsDeclaration(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `RevertStatement` node, recursively traversing the children (unless overriden). */
rewriteRevertStatement(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `ShiftExpression` node, recursively traversing the children (unless overriden). */
rewriteShiftExpression(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `SimpleVersionLiteral` node, recursively traversing the children (unless overriden). */
rewriteSimpleVersionLiteral(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `SourceUnit` node, recursively traversing the children (unless overriden). */
rewriteSourceUnit(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `SourceUnitMember` node, recursively traversing the children (unless overriden). */
rewriteSourceUnitMember(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `SourceUnitMembers` node, recursively traversing the children (unless overriden). */
rewriteSourceUnitMembers(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `StateVariableAttribute` node, recursively traversing the children (unless overriden). */
rewriteStateVariableAttribute(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `StateVariableAttributes` node, recursively traversing the children (unless overriden). */
rewriteStateVariableAttributes(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `StateVariableDefinition` node, recursively traversing the children (unless overriden). */
rewriteStateVariableDefinition(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `StateVariableDefinitionValue` node, recursively traversing the children (unless overriden). */
rewriteStateVariableDefinitionValue(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `Statement` node, recursively traversing the children (unless overriden). */
rewriteStatement(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `Statements` node, recursively traversing the children (unless overriden). */
rewriteStatements(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `StorageLayoutSpecifier` node, recursively traversing the children (unless overriden). */
rewriteStorageLayoutSpecifier(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `StorageLocation` node, recursively traversing the children (unless overriden). */
rewriteStorageLocation(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `StringExpression` node, recursively traversing the children (unless overriden). */
rewriteStringExpression(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `StringLiteral` node, recursively traversing the children (unless overriden). */
rewriteStringLiteral(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `StringLiterals` node, recursively traversing the children (unless overriden). */
rewriteStringLiterals(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `StructDefinition` node, recursively traversing the children (unless overriden). */
rewriteStructDefinition(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `StructMember` node, recursively traversing the children (unless overriden). */
rewriteStructMember(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `StructMembers` node, recursively traversing the children (unless overriden). */
rewriteStructMembers(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `ThrowStatement` node, recursively traversing the children (unless overriden). */
rewriteThrowStatement(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `TryStatement` node, recursively traversing the children (unless overriden). */
rewriteTryStatement(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `TupleDeconstructionElement` node, recursively traversing the children (unless overriden). */
rewriteTupleDeconstructionElement(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `TupleDeconstructionElements` node, recursively traversing the children (unless overriden). */
rewriteTupleDeconstructionElements(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `TupleDeconstructionStatement` node, recursively traversing the children (unless overriden). */
rewriteTupleDeconstructionStatement(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `TupleExpression` node, recursively traversing the children (unless overriden). */
rewriteTupleExpression(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `TupleMember` node, recursively traversing the children (unless overriden). */
rewriteTupleMember(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `TupleValue` node, recursively traversing the children (unless overriden). */
rewriteTupleValue(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `TupleValues` node, recursively traversing the children (unless overriden). */
rewriteTupleValues(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `TypeExpression` node, recursively traversing the children (unless overriden). */
rewriteTypeExpression(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `TypeName` node, recursively traversing the children (unless overriden). */
rewriteTypeName(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `TypedTupleMember` node, recursively traversing the children (unless overriden). */
rewriteTypedTupleMember(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `UncheckedBlock` node, recursively traversing the children (unless overriden). */
rewriteUncheckedBlock(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `UnicodeStringLiteral` node, recursively traversing the children (unless overriden). */
rewriteUnicodeStringLiteral(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `UnicodeStringLiterals` node, recursively traversing the children (unless overriden). */
rewriteUnicodeStringLiterals(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `UnnamedFunctionAttribute` node, recursively traversing the children (unless overriden). */
rewriteUnnamedFunctionAttribute(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `UnnamedFunctionAttributes` node, recursively traversing the children (unless overriden). */
rewriteUnnamedFunctionAttributes(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `UnnamedFunctionDefinition` node, recursively traversing the children (unless overriden). */
rewriteUnnamedFunctionDefinition(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `UntypedTupleMember` node, recursively traversing the children (unless overriden). */
rewriteUntypedTupleMember(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `UserDefinedValueTypeDefinition` node, recursively traversing the children (unless overriden). */
rewriteUserDefinedValueTypeDefinition(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `UsingAlias` node, recursively traversing the children (unless overriden). */
rewriteUsingAlias(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `UsingClause` node, recursively traversing the children (unless overriden). */
rewriteUsingClause(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `UsingDeconstruction` node, recursively traversing the children (unless overriden). */
rewriteUsingDeconstruction(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `UsingDeconstructionSymbol` node, recursively traversing the children (unless overriden). */
rewriteUsingDeconstructionSymbol(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `UsingDeconstructionSymbols` node, recursively traversing the children (unless overriden). */
rewriteUsingDeconstructionSymbols(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `UsingDirective` node, recursively traversing the children (unless overriden). */
rewriteUsingDirective(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `UsingOperator` node, recursively traversing the children (unless overriden). */
rewriteUsingOperator(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `UsingTarget` node, recursively traversing the children (unless overriden). */
rewriteUsingTarget(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `VariableDeclarationStatement` node, recursively traversing the children (unless overriden). */
rewriteVariableDeclarationStatement(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `VariableDeclarationType` node, recursively traversing the children (unless overriden). */
rewriteVariableDeclarationType(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `VariableDeclarationValue` node, recursively traversing the children (unless overriden). */
rewriteVariableDeclarationValue(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `VersionExpression` node, recursively traversing the children (unless overriden). */
rewriteVersionExpression(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `VersionExpressionSet` node, recursively traversing the children (unless overriden). */
rewriteVersionExpressionSet(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `VersionExpressionSets` node, recursively traversing the children (unless overriden). */
rewriteVersionExpressionSets(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `VersionLiteral` node, recursively traversing the children (unless overriden). */
rewriteVersionLiteral(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `VersionOperator` node, recursively traversing the children (unless overriden). */
rewriteVersionOperator(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `VersionPragma` node, recursively traversing the children (unless overriden). */
rewriteVersionPragma(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `VersionRange` node, recursively traversing the children (unless overriden). */
rewriteVersionRange(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `VersionTerm` node, recursively traversing the children (unless overriden). */
rewriteVersionTerm(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `WhileStatement` node, recursively traversing the children (unless overriden). */
rewriteWhileStatement(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `YulArguments` node, recursively traversing the children (unless overriden). */
rewriteYulArguments(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `YulAssignmentOperator` node, recursively traversing the children (unless overriden). */
rewriteYulAssignmentOperator(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `YulBlock` node, recursively traversing the children (unless overriden). */
rewriteYulBlock(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `YulBreakStatement` node, recursively traversing the children (unless overriden). */
rewriteYulBreakStatement(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `YulColonAndEqual` node, recursively traversing the children (unless overriden). */
rewriteYulColonAndEqual(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `YulContinueStatement` node, recursively traversing the children (unless overriden). */
rewriteYulContinueStatement(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `YulDefaultCase` node, recursively traversing the children (unless overriden). */
rewriteYulDefaultCase(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `YulEqualAndColon` node, recursively traversing the children (unless overriden). */
rewriteYulEqualAndColon(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `YulExpression` node, recursively traversing the children (unless overriden). */
rewriteYulExpression(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `YulForStatement` node, recursively traversing the children (unless overriden). */
rewriteYulForStatement(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `YulFunctionCallExpression` node, recursively traversing the children (unless overriden). */
rewriteYulFunctionCallExpression(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `YulFunctionDefinition` node, recursively traversing the children (unless overriden). */
rewriteYulFunctionDefinition(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `YulIfStatement` node, recursively traversing the children (unless overriden). */
rewriteYulIfStatement(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `YulLabel` node, recursively traversing the children (unless overriden). */
rewriteYulLabel(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `YulLeaveStatement` node, recursively traversing the children (unless overriden). */
rewriteYulLeaveStatement(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `YulLiteral` node, recursively traversing the children (unless overriden). */
rewriteYulLiteral(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `YulParameters` node, recursively traversing the children (unless overriden). */
rewriteYulParameters(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `YulParametersDeclaration` node, recursively traversing the children (unless overriden). */
rewriteYulParametersDeclaration(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `YulPath` node, recursively traversing the children (unless overriden). */
rewriteYulPath(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `YulPaths` node, recursively traversing the children (unless overriden). */
rewriteYulPaths(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `YulReturnsDeclaration` node, recursively traversing the children (unless overriden). */
rewriteYulReturnsDeclaration(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `YulStackAssignmentOperator` node, recursively traversing the children (unless overriden). */
rewriteYulStackAssignmentOperator(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `YulStackAssignmentStatement` node, recursively traversing the children (unless overriden). */
rewriteYulStackAssignmentStatement(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `YulStatement` node, recursively traversing the children (unless overriden). */
rewriteYulStatement(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `YulStatements` node, recursively traversing the children (unless overriden). */
rewriteYulStatements(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `YulSwitchCase` node, recursively traversing the children (unless overriden). */
rewriteYulSwitchCase(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `YulSwitchCases` node, recursively traversing the children (unless overriden). */
rewriteYulSwitchCases(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `YulSwitchStatement` node, recursively traversing the children (unless overriden). */
rewriteYulSwitchStatement(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `YulValueCase` node, recursively traversing the children (unless overriden). */
rewriteYulValueCase(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `YulVariableAssignmentStatement` node, recursively traversing the children (unless overriden). */
rewriteYulVariableAssignmentStatement(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `YulVariableDeclarationStatement` node, recursively traversing the children (unless overriden). */
rewriteYulVariableDeclarationStatement(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `YulVariableDeclarationValue` node, recursively traversing the children (unless overriden). */
rewriteYulVariableDeclarationValue(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `YulVariableNames` node, recursively traversing the children (unless overriden). */
rewriteYulVariableNames(node: NonterminalNode): Node | undefined;
/** @virtual Rewrites a `ABIEncoderV2Keyword` node. */
rewriteABIEncoderV2Keyword(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `AbicoderKeyword` node. */
rewriteAbicoderKeyword(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `AbicoderV1Keyword` node. */
rewriteAbicoderV1Keyword(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `AbicoderV2Keyword` node. */
rewriteAbicoderV2Keyword(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `AbstractKeyword` node. */
rewriteAbstractKeyword(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `AddressKeyword` node. */
rewriteAddressKeyword(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `AfterKeyword` node. */
rewriteAfterKeyword(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `AliasKeyword` node. */
rewriteAliasKeyword(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `Ampersand` node. */
rewriteAmpersand(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `AmpersandAmpersand` node. */
rewriteAmpersandAmpersand(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `AmpersandEqual` node. */
rewriteAmpersandEqual(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `AnonymousKeyword` node. */
rewriteAnonymousKeyword(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `ApplyKeyword` node. */
rewriteApplyKeyword(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `AsKeyword` node. */
rewriteAsKeyword(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `AssemblyKeyword` node. */
rewriteAssemblyKeyword(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `Asterisk` node. */
rewriteAsterisk(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `AsteriskAsterisk` node. */
rewriteAsteriskAsterisk(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `AsteriskEqual` node. */
rewriteAsteriskEqual(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `AtKeyword` node. */
rewriteAtKeyword(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `AutoKeyword` node. */
rewriteAutoKeyword(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `Bang` node. */
rewriteBang(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `BangEqual` node. */
rewriteBangEqual(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `Bar` node. */
rewriteBar(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `BarBar` node. */
rewriteBarBar(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `BarEqual` node. */
rewriteBarEqual(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `BoolKeyword` node. */
rewriteBoolKeyword(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `BreakKeyword` node. */
rewriteBreakKeyword(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `ByteKeyword` node. */
rewriteByteKeyword(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `BytesKeyword` node. */
rewriteBytesKeyword(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `CallDataKeyword` node. */
rewriteCallDataKeyword(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `Caret` node. */
rewriteCaret(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `CaretEqual` node. */
rewriteCaretEqual(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `CaseKeyword` node. */
rewriteCaseKeyword(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `CatchKeyword` node. */
rewriteCatchKeyword(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `CloseBrace` node. */
rewriteCloseBrace(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `CloseBracket` node. */
rewriteCloseBracket(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `CloseParen` node. */
rewriteCloseParen(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `Colon` node. */
rewriteColon(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `ColonEqual` node. */
rewriteColonEqual(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `Comma` node. */
rewriteComma(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `ConstantKeyword` node. */
rewriteConstantKeyword(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `ConstructorKeyword` node. */
rewriteConstructorKeyword(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `ContinueKeyword` node. */
rewriteContinueKeyword(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `ContractKeyword` node. */
rewriteContractKeyword(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `CopyOfKeyword` node. */
rewriteCopyOfKeyword(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `DaysKeyword` node. */
rewriteDaysKeyword(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `DecimalLiteral` node. */
rewriteDecimalLiteral(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `DefaultKeyword` node. */
rewriteDefaultKeyword(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `DefineKeyword` node. */
rewriteDefineKeyword(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `DeleteKeyword` node. */
rewriteDeleteKeyword(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `DoKeyword` node. */
rewriteDoKeyword(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `DoubleQuotedHexStringLiteral` node. */
rewriteDoubleQuotedHexStringLiteral(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `DoubleQuotedStringLiteral` node. */
rewriteDoubleQuotedStringLiteral(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `DoubleQuotedUnicodeStringLiteral` node. */
rewriteDoubleQuotedUnicodeStringLiteral(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `DoubleQuotedVersionLiteral` node. */
rewriteDoubleQuotedVersionLiteral(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `ElseKeyword` node. */
rewriteElseKeyword(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `EmitKeyword` node. */
rewriteEmitKeyword(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `EndOfLine` node. */
rewriteEndOfLine(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `EnumKeyword` node. */
rewriteEnumKeyword(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `Equal` node. */
rewriteEqual(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `EqualColon` node. */
rewriteEqualColon(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `EqualEqual` node. */
rewriteEqualEqual(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `EqualGreaterThan` node. */
rewriteEqualGreaterThan(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `ErrorKeyword` node. */
rewriteErrorKeyword(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `EtherKeyword` node. */
rewriteEtherKeyword(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `EventKeyword` node. */
rewriteEventKeyword(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `ExperimentalKeyword` node. */
rewriteExperimentalKeyword(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `ExternalKeyword` node. */
rewriteExternalKeyword(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `FallbackKeyword` node. */
rewriteFallbackKeyword(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `FalseKeyword` node. */
rewriteFalseKeyword(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `FinalKeyword` node. */
rewriteFinalKeyword(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `FinneyKeyword` node. */
rewriteFinneyKeyword(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `FixedKeyword` node. */
rewriteFixedKeyword(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `ForKeyword` node. */
rewriteForKeyword(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `FromKeyword` node. */
rewriteFromKeyword(node: TerminalNode): Node | undefined;
/** @virtual Rewrites a `FunctionKeyword` node. */
rewriteFunctionKeyword(node: TerminalNode): Node | undef