@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.
1,379 lines (1,378 loc) • 189 kB
TypeScript
// This file is generated automatically by infrastructure scripts. Please don't edit by hand.
export namespace NomicFoundationSlangCst {
export { TerminalKindExtensions };
export { NonterminalNode };
export { TerminalNode };
export { Cursor };
export { CursorIterator };
export { AncestorsIterator };
export { Query };
export { QueryMatchIterator };
export { NonterminalKind };
export { TerminalKind };
export { EdgeLabel };
export { Node };
export { NodeType };
}
/**
* Represents different kinds of nonterminal nodes in the syntax tree.
* These are nodes that can have child nodes and represent higher-level language constructs.
*/
export declare enum NonterminalKind {
/**
* Represents a node with kind `AbicoderPragma`, having the following structure:
*
* ```ebnf
* AbicoderPragma = (* abicoder_keyword: *) ABICODER_KEYWORD
* (* version: *) IDENTIFIER;
* ```
*/
AbicoderPragma = "AbicoderPragma",
/**
* Represents a node with kind `AdditiveExpression`, having the following structure:
*
* ```ebnf
* (* Left-associative binary operator *)
* AdditiveExpression = (* left_operand: *) Expression
* (* operator: *) PLUS
* (* right_operand: *) Expression;
*
* (* Left-associative binary operator *)
* AdditiveExpression = (* left_operand: *) Expression
* (* operator: *) MINUS
* (* right_operand: *) Expression;
* ```
*/
AdditiveExpression = "AdditiveExpression",
/**
* Represents a node with kind `AddressType`, having the following structure:
*
* ```ebnf
* AddressType = (* address_keyword: *) ADDRESS_KEYWORD
* (* payable_keyword: *) PAYABLE_KEYWORD?; (* Introduced in 0.5.0 *)
* ```
*/
AddressType = "AddressType",
/**
* Represents a node with kind `AndExpression`, having the following structure:
*
* ```ebnf
* (* Left-associative binary operator *)
* AndExpression = (* left_operand: *) Expression
* (* operator: *) AMPERSAND_AMPERSAND
* (* right_operand: *) Expression;
* ```
*/
AndExpression = "AndExpression",
/**
* Represents a node with kind `ArgumentsDeclaration`, having the following structure:
*
* ```ebnf
* ArgumentsDeclaration = (* variant: *) PositionalArgumentsDeclaration
* | (* variant: *) NamedArgumentsDeclaration;
* ```
*/
ArgumentsDeclaration = "ArgumentsDeclaration",
/**
* Represents a node with kind `ArrayExpression`, having the following structure:
*
* ```ebnf
* ArrayExpression = (* open_bracket: *) OPEN_BRACKET
* (* items: *) ArrayValues
* (* close_bracket: *) CLOSE_BRACKET;
* ```
*/
ArrayExpression = "ArrayExpression",
/**
* Represents a node with kind `ArrayTypeName`, having the following structure:
*
* ```ebnf
* (* Postfix unary operator *)
* ArrayTypeName = (* operand: *) TypeName
* (* open_bracket: *) OPEN_BRACKET
* (* index: *) Expression?
* (* close_bracket: *) CLOSE_BRACKET;
* ```
*/
ArrayTypeName = "ArrayTypeName",
/**
* Represents a node with kind `ArrayValues`, having the following structure:
*
* ```ebnf
* ArrayValues = (* item: *) Expression ((* separator: *) COMMA (* item: *) Expression)*;
* ```
*/
ArrayValues = "ArrayValues",
/**
* Represents a node with kind `AssemblyFlags`, having the following structure:
*
* ```ebnf
* (* Introduced in 0.8.13 *)
* AssemblyFlags = (* item: *) StringLiteral ((* separator: *) COMMA (* item: *) StringLiteral)*;
* ```
*/
AssemblyFlags = "AssemblyFlags",
/**
* Represents a node with kind `AssemblyFlagsDeclaration`, having the following structure:
*
* ```ebnf
* (* Introduced in 0.8.13 *)
* AssemblyFlagsDeclaration = (* open_paren: *) OPEN_PAREN
* (* flags: *) AssemblyFlags
* (* close_paren: *) CLOSE_PAREN;
* ```
*/
AssemblyFlagsDeclaration = "AssemblyFlagsDeclaration",
/**
* Represents a node with kind `AssemblyStatement`, having the following structure:
*
* ```ebnf
* AssemblyStatement = (* assembly_keyword: *) ASSEMBLY_KEYWORD
* (* label: *) StringLiteral?
* (* flags: *) AssemblyFlagsDeclaration? (* Introduced in 0.8.13 *)
* (* body: *) YulBlock;
* ```
*/
AssemblyStatement = "AssemblyStatement",
/**
* Represents a node with kind `AssignmentExpression`, having the following structure:
*
* ```ebnf
* (* Left-associative binary operator *)
* AssignmentExpression = (* left_operand: *) Expression
* (* operator: *) EQUAL
* (* right_operand: *) Expression;
*
* (* Left-associative binary operator *)
* AssignmentExpression = (* left_operand: *) Expression
* (* operator: *) BAR_EQUAL
* (* right_operand: *) Expression;
*
* (* Left-associative binary operator *)
* AssignmentExpression = (* left_operand: *) Expression
* (* operator: *) PLUS_EQUAL
* (* right_operand: *) Expression;
*
* (* Left-associative binary operator *)
* AssignmentExpression = (* left_operand: *) Expression
* (* operator: *) MINUS_EQUAL
* (* right_operand: *) Expression;
*
* (* Left-associative binary operator *)
* AssignmentExpression = (* left_operand: *) Expression
* (* operator: *) CARET_EQUAL
* (* right_operand: *) Expression;
*
* (* Left-associative binary operator *)
* AssignmentExpression = (* left_operand: *) Expression
* (* operator: *) SLASH_EQUAL
* (* right_operand: *) Expression;
*
* (* Left-associative binary operator *)
* AssignmentExpression = (* left_operand: *) Expression
* (* operator: *) PERCENT_EQUAL
* (* right_operand: *) Expression;
*
* (* Left-associative binary operator *)
* AssignmentExpression = (* left_operand: *) Expression
* (* operator: *) ASTERISK_EQUAL
* (* right_operand: *) Expression;
*
* (* Left-associative binary operator *)
* AssignmentExpression = (* left_operand: *) Expression
* (* operator: *) AMPERSAND_EQUAL
* (* right_operand: *) Expression;
*
* (* Left-associative binary operator *)
* AssignmentExpression = (* left_operand: *) Expression
* (* operator: *) LESS_THAN_LESS_THAN_EQUAL
* (* right_operand: *) Expression;
*
* (* Left-associative binary operator *)
* AssignmentExpression = (* left_operand: *) Expression
* (* operator: *) GREATER_THAN_GREATER_THAN_EQUAL
* (* right_operand: *) Expression;
*
* (* Left-associative binary operator *)
* AssignmentExpression = (* left_operand: *) Expression
* (* operator: *) GREATER_THAN_GREATER_THAN_GREATER_THAN_EQUAL
* (* right_operand: *) Expression;
* ```
*/
AssignmentExpression = "AssignmentExpression",
/**
* Represents a node with kind `BitwiseAndExpression`, having the following structure:
*
* ```ebnf
* (* Left-associative binary operator *)
* BitwiseAndExpression = (* left_operand: *) Expression
* (* operator: *) AMPERSAND
* (* right_operand: *) Expression;
* ```
*/
BitwiseAndExpression = "BitwiseAndExpression",
/**
* Represents a node with kind `BitwiseOrExpression`, having the following structure:
*
* ```ebnf
* (* Left-associative binary operator *)
* BitwiseOrExpression = (* left_operand: *) Expression
* (* operator: *) BAR
* (* right_operand: *) Expression;
* ```
*/
BitwiseOrExpression = "BitwiseOrExpression",
/**
* Represents a node with kind `BitwiseXorExpression`, having the following structure:
*
* ```ebnf
* (* Left-associative binary operator *)
* BitwiseXorExpression = (* left_operand: *) Expression
* (* operator: *) CARET
* (* right_operand: *) Expression;
* ```
*/
BitwiseXorExpression = "BitwiseXorExpression",
/**
* Represents a node with kind `Block`, having the following structure:
*
* ```ebnf
* Block = (* open_brace: *) OPEN_BRACE
* (* statements: *) Statements
* (* close_brace: *) CLOSE_BRACE;
* ```
*/
Block = "Block",
/**
* Represents a node with kind `BreakStatement`, having the following structure:
*
* ```ebnf
* BreakStatement = (* break_keyword: *) BREAK_KEYWORD
* (* semicolon: *) SEMICOLON;
* ```
*/
BreakStatement = "BreakStatement",
/**
* Represents a node with kind `CallOptions`, having the following structure:
*
* ```ebnf
* (* Introduced in 0.6.2 *)
* CallOptions = (* item: *) NamedArgument ((* separator: *) COMMA (* item: *) NamedArgument)*;
* ```
*/
CallOptions = "CallOptions",
/**
* Represents a node with kind `CallOptionsExpression`, having the following structure:
*
* ```ebnf
* (* Postfix unary operator *)
* (* Introduced in 0.6.2 *)
* CallOptionsExpression = (* operand: *) Expression
* (* open_brace: *) OPEN_BRACE
* (* options: *) CallOptions
* (* close_brace: *) CLOSE_BRACE;
* ```
*/
CallOptionsExpression = "CallOptionsExpression",
/**
* Represents a node with kind `CatchClause`, having the following structure:
*
* ```ebnf
* (* Introduced in 0.6.0 *)
* CatchClause = (* catch_keyword: *) CATCH_KEYWORD
* (* error: *) CatchClauseError?
* (* body: *) Block;
* ```
*/
CatchClause = "CatchClause",
/**
* Represents a node with kind `CatchClauseError`, having the following structure:
*
* ```ebnf
* (* Introduced in 0.6.0 *)
* CatchClauseError = (* name: *) IDENTIFIER?
* (* parameters: *) ParametersDeclaration;
* ```
*/
CatchClauseError = "CatchClauseError",
/**
* Represents a node with kind `CatchClauses`, having the following structure:
*
* ```ebnf
* (* Introduced in 0.6.0 *)
* CatchClauses = (* item: *) CatchClause+;
* ```
*/
CatchClauses = "CatchClauses",
/**
* Represents a node with kind `ConditionalExpression`, having the following structure:
*
* ```ebnf
* (* Postfix unary operator *)
* ConditionalExpression = (* operand: *) Expression
* (* question_mark: *) QUESTION_MARK
* (* true_expression: *) Expression
* (* colon: *) COLON
* (* false_expression: *) Expression;
* ```
*/
ConditionalExpression = "ConditionalExpression",
/**
* Represents a node with kind `ConstantDefinition`, having the following structure:
*
* ```ebnf
* (* Introduced in 0.7.4 *)
* ConstantDefinition = (* type_name: *) TypeName
* (* constant_keyword: *) CONSTANT_KEYWORD
* (* name: *) IDENTIFIER
* (* equal: *) EQUAL
* (* value: *) Expression
* (* semicolon: *) SEMICOLON;
* ```
*/
ConstantDefinition = "ConstantDefinition",
/**
* Represents a node with kind `ConstructorAttribute`, having the following structure:
*
* ```ebnf
* (* Introduced in 0.4.22 *)
* ConstructorAttribute = (* variant: *) ModifierInvocation
* | (* variant: *) INTERNAL_KEYWORD
* | (* variant: *) OVERRIDE_KEYWORD (* Introduced in 0.6.0 and deprecated in 0.6.7. *)
* | (* variant: *) PAYABLE_KEYWORD
* | (* variant: *) PUBLIC_KEYWORD
* | (* variant: *) VIRTUAL_KEYWORD; (* Introduced in 0.6.0 and deprecated in 0.6.7. *)
* ```
*/
ConstructorAttribute = "ConstructorAttribute",
/**
* Represents a node with kind `ConstructorAttributes`, having the following structure:
*
* ```ebnf
* (* Introduced in 0.4.22 *)
* ConstructorAttributes = (* item: *) ConstructorAttribute*;
* ```
*/
ConstructorAttributes = "ConstructorAttributes",
/**
* Represents a node with kind `ConstructorDefinition`, having the following structure:
*
* ```ebnf
* (* Introduced in 0.4.22 *)
* ConstructorDefinition = (* constructor_keyword: *) CONSTRUCTOR_KEYWORD
* (* parameters: *) ParametersDeclaration
* (* attributes: *) ConstructorAttributes
* (* body: *) Block;
* ```
*/
ConstructorDefinition = "ConstructorDefinition",
/**
* Represents a node with kind `ContinueStatement`, having the following structure:
*
* ```ebnf
* ContinueStatement = (* continue_keyword: *) CONTINUE_KEYWORD
* (* semicolon: *) SEMICOLON;
* ```
*/
ContinueStatement = "ContinueStatement",
/**
* Represents a node with kind `ContractDefinition`, having the following structure:
*
* ```ebnf
* ContractDefinition = (* abstract_keyword: *) ABSTRACT_KEYWORD? (* Introduced in 0.6.0 *)
* (* contract_keyword: *) CONTRACT_KEYWORD
* (* name: *) IDENTIFIER
* (* inheritance: *) InheritanceSpecifier?
* (* open_brace: *) OPEN_BRACE
* (* members: *) ContractMembers
* (* close_brace: *) CLOSE_BRACE;
* ```
*/
ContractDefinition = "ContractDefinition",
/**
* Represents a node with kind `ContractMember`, having the following structure:
*
* ```ebnf
* ContractMember = (* variant: *) UsingDirective
* | (* variant: *) FunctionDefinition
* | (* variant: *) ConstructorDefinition (* Introduced in 0.4.22 *)
* | (* variant: *) ReceiveFunctionDefinition (* Introduced in 0.6.0 *)
* | (* variant: *) FallbackFunctionDefinition (* Introduced in 0.6.0 *)
* | (* variant: *) UnnamedFunctionDefinition (* Deprecated in 0.6.0 *)
* | (* variant: *) ModifierDefinition
* | (* variant: *) StructDefinition
* | (* variant: *) EnumDefinition
* | (* variant: *) EventDefinition
* | (* variant: *) ErrorDefinition (* Introduced in 0.8.4 *)
* | (* variant: *) UserDefinedValueTypeDefinition (* Introduced in 0.8.8 *)
* | (* variant: *) StateVariableDefinition;
* ```
*/
ContractMember = "ContractMember",
/**
* Represents a node with kind `ContractMembers`, having the following structure:
*
* ```ebnf
* ContractMembers = (* item: *) ContractMember*;
* ```
*/
ContractMembers = "ContractMembers",
/**
* Represents a node with kind `DecimalNumberExpression`, having the following structure:
*
* ```ebnf
* DecimalNumberExpression = (* literal: *) DECIMAL_LITERAL
* (* unit: *) NumberUnit?;
* ```
*/
DecimalNumberExpression = "DecimalNumberExpression",
/**
* Represents a node with kind `DoWhileStatement`, having the following structure:
*
* ```ebnf
* DoWhileStatement = (* do_keyword: *) DO_KEYWORD
* (* body: *) Statement
* (* while_keyword: *) WHILE_KEYWORD
* (* open_paren: *) OPEN_PAREN
* (* condition: *) Expression
* (* close_paren: *) CLOSE_PAREN
* (* semicolon: *) SEMICOLON;
* ```
*/
DoWhileStatement = "DoWhileStatement",
/**
* Represents a node with kind `ElementaryType`, having the following structure:
*
* ```ebnf
* ElementaryType = (* variant: *) BOOL_KEYWORD
* | (* variant: *) BYTE_KEYWORD (* Deprecated in 0.8.0 *)
* | (* variant: *) STRING_KEYWORD
* | (* variant: *) AddressType
* | (* variant: *) BYTES_KEYWORD
* | (* variant: *) INT_KEYWORD
* | (* variant: *) UINT_KEYWORD
* | (* variant: *) FIXED_KEYWORD
* | (* variant: *) UFIXED_KEYWORD;
* ```
*/
ElementaryType = "ElementaryType",
/**
* Represents a node with kind `ElseBranch`, having the following structure:
*
* ```ebnf
* ElseBranch = (* else_keyword: *) ELSE_KEYWORD
* (* body: *) Statement;
* ```
*/
ElseBranch = "ElseBranch",
/**
* Represents a node with kind `EmitStatement`, having the following structure:
*
* ```ebnf
* (* Introduced in 0.4.21 *)
* EmitStatement = (* emit_keyword: *) EMIT_KEYWORD
* (* event: *) IdentifierPath
* (* arguments: *) ArgumentsDeclaration
* (* semicolon: *) SEMICOLON;
* ```
*/
EmitStatement = "EmitStatement",
/**
* Represents a node with kind `EnumDefinition`, having the following structure:
*
* ```ebnf
* EnumDefinition = (* enum_keyword: *) ENUM_KEYWORD
* (* name: *) IDENTIFIER
* (* open_brace: *) OPEN_BRACE
* (* members: *) EnumMembers
* (* close_brace: *) CLOSE_BRACE;
* ```
*/
EnumDefinition = "EnumDefinition",
/**
* Represents a node with kind `EnumMembers`, having the following structure:
*
* ```ebnf
* EnumMembers = ((* item: *) IDENTIFIER ((* separator: *) COMMA (* item: *) IDENTIFIER)*)?;
* ```
*/
EnumMembers = "EnumMembers",
/**
* Represents a node with kind `EqualityExpression`, having the following structure:
*
* ```ebnf
* (* Left-associative binary operator *)
* EqualityExpression = (* left_operand: *) Expression
* (* operator: *) EQUAL_EQUAL
* (* right_operand: *) Expression;
*
* (* Left-associative binary operator *)
* EqualityExpression = (* left_operand: *) Expression
* (* operator: *) BANG_EQUAL
* (* right_operand: *) Expression;
* ```
*/
EqualityExpression = "EqualityExpression",
/**
* Represents a node with kind `ErrorDefinition`, having the following structure:
*
* ```ebnf
* (* Introduced in 0.8.4 *)
* ErrorDefinition = (* error_keyword: *) ERROR_KEYWORD
* (* name: *) IDENTIFIER
* (* members: *) ErrorParametersDeclaration
* (* semicolon: *) SEMICOLON;
* ```
*/
ErrorDefinition = "ErrorDefinition",
/**
* Represents a node with kind `ErrorParameter`, having the following structure:
*
* ```ebnf
* (* Introduced in 0.8.4 *)
* ErrorParameter = (* type_name: *) TypeName
* (* name: *) IDENTIFIER?;
* ```
*/
ErrorParameter = "ErrorParameter",
/**
* Represents a node with kind `ErrorParameters`, having the following structure:
*
* ```ebnf
* (* Introduced in 0.8.4 *)
* ErrorParameters = ((* item: *) ErrorParameter ((* separator: *) COMMA (* item: *) ErrorParameter)*)?;
* ```
*/
ErrorParameters = "ErrorParameters",
/**
* Represents a node with kind `ErrorParametersDeclaration`, having the following structure:
*
* ```ebnf
* (* Introduced in 0.8.4 *)
* ErrorParametersDeclaration = (* open_paren: *) OPEN_PAREN
* (* parameters: *) ErrorParameters
* (* close_paren: *) CLOSE_PAREN;
* ```
*/
ErrorParametersDeclaration = "ErrorParametersDeclaration",
/**
* Represents a node with kind `EventDefinition`, having the following structure:
*
* ```ebnf
* EventDefinition = (* event_keyword: *) EVENT_KEYWORD
* (* name: *) IDENTIFIER
* (* parameters: *) EventParametersDeclaration
* (* anonymous_keyword: *) ANONYMOUS_KEYWORD?
* (* semicolon: *) SEMICOLON;
* ```
*/
EventDefinition = "EventDefinition",
/**
* Represents a node with kind `EventParameter`, having the following structure:
*
* ```ebnf
* EventParameter = (* type_name: *) TypeName
* (* indexed_keyword: *) INDEXED_KEYWORD?
* (* name: *) IDENTIFIER?;
* ```
*/
EventParameter = "EventParameter",
/**
* Represents a node with kind `EventParameters`, having the following structure:
*
* ```ebnf
* EventParameters = ((* item: *) EventParameter ((* separator: *) COMMA (* item: *) EventParameter)*)?;
* ```
*/
EventParameters = "EventParameters",
/**
* Represents a node with kind `EventParametersDeclaration`, having the following structure:
*
* ```ebnf
* EventParametersDeclaration = (* open_paren: *) OPEN_PAREN
* (* parameters: *) EventParameters
* (* close_paren: *) CLOSE_PAREN;
* ```
*/
EventParametersDeclaration = "EventParametersDeclaration",
/**
* Represents a node with kind `ExperimentalFeature`, having the following structure:
*
* ```ebnf
* ExperimentalFeature = (* variant: *) IDENTIFIER
* | (* variant: *) StringLiteral;
* ```
*/
ExperimentalFeature = "ExperimentalFeature",
/**
* Represents a node with kind `ExperimentalPragma`, having the following structure:
*
* ```ebnf
* ExperimentalPragma = (* experimental_keyword: *) EXPERIMENTAL_KEYWORD
* (* feature: *) ExperimentalFeature;
* ```
*/
ExperimentalPragma = "ExperimentalPragma",
/**
* Represents a node with kind `ExponentiationExpression`, having the following structure:
*
* ```ebnf
* (* Left-associative binary operator *)
* (* Deprecated in 0.8.0 *)
* ExponentiationExpression = (* left_operand: *) Expression
* (* operator: *) ASTERISK_ASTERISK
* (* right_operand: *) Expression;
*
* (* Right-associative binary operator *)
* (* Introduced in 0.8.0 *)
* ExponentiationExpression = (* left_operand: *) Expression
* (* operator: *) ASTERISK_ASTERISK
* (* right_operand: *) Expression;
* ```
*/
ExponentiationExpression = "ExponentiationExpression",
/**
* Represents a node with kind `Expression`, having the following structure:
*
* ```ebnf
* Expression = (* variant: *) AssignmentExpression
* | (* variant: *) ConditionalExpression
* | (* variant: *) OrExpression
* | (* variant: *) AndExpression
* | (* variant: *) EqualityExpression
* | (* variant: *) InequalityExpression
* | (* variant: *) BitwiseOrExpression
* | (* variant: *) BitwiseXorExpression
* | (* variant: *) BitwiseAndExpression
* | (* variant: *) ShiftExpression
* | (* variant: *) AdditiveExpression
* | (* variant: *) MultiplicativeExpression
* | (* variant: *) ExponentiationExpression
* | (* variant: *) PostfixExpression
* | (* variant: *) PrefixExpression
* | (* variant: *) FunctionCallExpression
* | (* variant: *) CallOptionsExpression
* | (* variant: *) MemberAccessExpression
* | (* variant: *) IndexAccessExpression
* | (* variant: *) NewExpression
* | (* variant: *) TupleExpression
* | (* variant: *) TypeExpression (* Introduced in 0.5.3 *)
* | (* variant: *) ArrayExpression
* | (* variant: *) HexNumberExpression
* | (* variant: *) DecimalNumberExpression
* | (* variant: *) StringExpression
* | (* variant: *) ElementaryType
* | (* variant: *) PAYABLE_KEYWORD (* Introduced in 0.6.0 *)
* | (* variant: *) THIS_KEYWORD
* | (* variant: *) SUPER_KEYWORD
* | (* variant: *) TRUE_KEYWORD
* | (* variant: *) FALSE_KEYWORD
* | (* variant: *) IDENTIFIER;
* ```
*/
Expression = "Expression",
/**
* Represents a node with kind `ExpressionStatement`, having the following structure:
*
* ```ebnf
* ExpressionStatement = (* expression: *) Expression
* (* semicolon: *) SEMICOLON;
* ```
*/
ExpressionStatement = "ExpressionStatement",
/**
* Represents a node with kind `FallbackFunctionAttribute`, having the following structure:
*
* ```ebnf
* (* Introduced in 0.6.0 *)
* FallbackFunctionAttribute = (* variant: *) ModifierInvocation
* | (* variant: *) OverrideSpecifier
* | (* variant: *) EXTERNAL_KEYWORD
* | (* variant: *) PAYABLE_KEYWORD
* | (* variant: *) PURE_KEYWORD
* | (* variant: *) VIEW_KEYWORD
* | (* variant: *) VIRTUAL_KEYWORD;
* ```
*/
FallbackFunctionAttribute = "FallbackFunctionAttribute",
/**
* Represents a node with kind `FallbackFunctionAttributes`, having the following structure:
*
* ```ebnf
* (* Introduced in 0.6.0 *)
* FallbackFunctionAttributes = (* item: *) FallbackFunctionAttribute*;
* ```
*/
FallbackFunctionAttributes = "FallbackFunctionAttributes",
/**
* Represents a node with kind `FallbackFunctionDefinition`, having the following structure:
*
* ```ebnf
* (* Introduced in 0.6.0 *)
* FallbackFunctionDefinition = (* fallback_keyword: *) FALLBACK_KEYWORD
* (* parameters: *) ParametersDeclaration
* (* attributes: *) FallbackFunctionAttributes
* (* returns: *) ReturnsDeclaration?
* (* body: *) FunctionBody;
* ```
*/
FallbackFunctionDefinition = "FallbackFunctionDefinition",
/**
* Represents a node with kind `ForStatement`, having the following structure:
*
* ```ebnf
* ForStatement = (* for_keyword: *) FOR_KEYWORD
* (* open_paren: *) OPEN_PAREN
* (* initialization: *) ForStatementInitialization
* (* condition: *) ForStatementCondition
* (* iterator: *) Expression?
* (* close_paren: *) CLOSE_PAREN
* (* body: *) Statement;
* ```
*/
ForStatement = "ForStatement",
/**
* Represents a node with kind `ForStatementCondition`, having the following structure:
*
* ```ebnf
* ForStatementCondition = (* variant: *) ExpressionStatement
* | (* variant: *) SEMICOLON;
* ```
*/
ForStatementCondition = "ForStatementCondition",
/**
* Represents a node with kind `ForStatementInitialization`, having the following structure:
*
* ```ebnf
* ForStatementInitialization = (* variant: *) TupleDeconstructionStatement
* | (* variant: *) VariableDeclarationStatement
* | (* variant: *) ExpressionStatement
* | (* variant: *) SEMICOLON;
* ```
*/
ForStatementInitialization = "ForStatementInitialization",
/**
* Represents a node with kind `FunctionAttribute`, having the following structure:
*
* ```ebnf
* FunctionAttribute = (* variant: *) ModifierInvocation
* | (* variant: *) OverrideSpecifier (* Introduced in 0.6.0 *)
* | (* variant: *) CONSTANT_KEYWORD (* Deprecated in 0.5.0 *)
* | (* variant: *) EXTERNAL_KEYWORD
* | (* variant: *) INTERNAL_KEYWORD
* | (* variant: *) PAYABLE_KEYWORD
* | (* variant: *) PRIVATE_KEYWORD
* | (* variant: *) PUBLIC_KEYWORD
* | (* variant: *) PURE_KEYWORD (* Introduced in 0.4.16 *)
* | (* variant: *) VIEW_KEYWORD (* Introduced in 0.4.16 *)
* | (* variant: *) VIRTUAL_KEYWORD; (* Introduced in 0.6.0 *)
* ```
*/
FunctionAttribute = "FunctionAttribute",
/**
* Represents a node with kind `FunctionAttributes`, having the following structure:
*
* ```ebnf
* FunctionAttributes = (* item: *) FunctionAttribute*;
* ```
*/
FunctionAttributes = "FunctionAttributes",
/**
* Represents a node with kind `FunctionBody`, having the following structure:
*
* ```ebnf
* FunctionBody = (* variant: *) Block
* | (* variant: *) SEMICOLON;
* ```
*/
FunctionBody = "FunctionBody",
/**
* Represents a node with kind `FunctionCallExpression`, having the following structure:
*
* ```ebnf
* (* Postfix unary operator *)
* FunctionCallExpression = (* operand: *) Expression
* (* arguments: *) ArgumentsDeclaration;
* ```
*/
FunctionCallExpression = "FunctionCallExpression",
/**
* Represents a node with kind `FunctionDefinition`, having the following structure:
*
* ```ebnf
* FunctionDefinition = (* function_keyword: *) FUNCTION_KEYWORD
* (* name: *) FunctionName
* (* parameters: *) ParametersDeclaration
* (* attributes: *) FunctionAttributes
* (* returns: *) ReturnsDeclaration?
* (* body: *) FunctionBody;
* ```
*/
FunctionDefinition = "FunctionDefinition",
/**
* Represents a node with kind `FunctionName`, having the following structure:
*
* ```ebnf
* FunctionName = (* variant: *) IDENTIFIER
* | (* variant: *) FALLBACK_KEYWORD
* | (* variant: *) RECEIVE_KEYWORD;
* ```
*/
FunctionName = "FunctionName",
/**
* Represents a node with kind `FunctionType`, having the following structure:
*
* ```ebnf
* FunctionType = (* function_keyword: *) FUNCTION_KEYWORD
* (* parameters: *) ParametersDeclaration
* (* attributes: *) FunctionTypeAttributes
* (* returns: *) ReturnsDeclaration?;
* ```
*/
FunctionType = "FunctionType",
/**
* Represents a node with kind `FunctionTypeAttribute`, having the following structure:
*
* ```ebnf
* FunctionTypeAttribute = (* variant: *) INTERNAL_KEYWORD
* | (* variant: *) EXTERNAL_KEYWORD
* | (* variant: *) PRIVATE_KEYWORD
* | (* variant: *) PUBLIC_KEYWORD
* | (* variant: *) CONSTANT_KEYWORD (* Deprecated in 0.5.0 *)
* | (* variant: *) PURE_KEYWORD (* Introduced in 0.4.16 *)
* | (* variant: *) VIEW_KEYWORD (* Introduced in 0.4.16 *)
* | (* variant: *) PAYABLE_KEYWORD;
* ```
*/
FunctionTypeAttribute = "FunctionTypeAttribute",
/**
* Represents a node with kind `FunctionTypeAttributes`, having the following structure:
*
* ```ebnf
* FunctionTypeAttributes = (* item: *) FunctionTypeAttribute*;
* ```
*/
FunctionTypeAttributes = "FunctionTypeAttributes",
/**
* Represents a node with kind `HexNumberExpression`, having the following structure:
*
* ```ebnf
* HexNumberExpression = (* literal: *) HEX_LITERAL
* (* unit: *) NumberUnit?; (* Deprecated in 0.5.0 *)
* ```
*/
HexNumberExpression = "HexNumberExpression",
/**
* Represents a node with kind `HexStringLiteral`, having the following structure:
*
* ```ebnf
* HexStringLiteral = (* variant: *) SINGLE_QUOTED_HEX_STRING_LITERAL
* | (* variant: *) DOUBLE_QUOTED_HEX_STRING_LITERAL;
* ```
*/
HexStringLiteral = "HexStringLiteral",
/**
* Represents a node with kind `HexStringLiterals`, having the following structure:
*
* ```ebnf
* (* Introduced in 0.5.14 *)
* HexStringLiterals = (* item: *) HexStringLiteral+;
* ```
*/
HexStringLiterals = "HexStringLiterals",
/**
* Represents a node with kind `IdentifierPath`, having the following structure:
*
* ```ebnf
* IdentifierPath = (* item: *) IDENTIFIER ((* separator: *) PERIOD (* item: *) IDENTIFIER)*;
* ```
*/
IdentifierPath = "IdentifierPath",
/**
* Represents a node with kind `IfStatement`, having the following structure:
*
* ```ebnf
* IfStatement = (* if_keyword: *) IF_KEYWORD
* (* open_paren: *) OPEN_PAREN
* (* condition: *) Expression
* (* close_paren: *) CLOSE_PAREN
* (* body: *) Statement
* (* else_branch: *) ElseBranch?;
* ```
*/
IfStatement = "IfStatement",
/**
* Represents a node with kind `ImportAlias`, having the following structure:
*
* ```ebnf
* ImportAlias = (* as_keyword: *) AS_KEYWORD
* (* identifier: *) IDENTIFIER;
* ```
*/
ImportAlias = "ImportAlias",
/**
* Represents a node with kind `ImportClause`, having the following structure:
*
* ```ebnf
* ImportClause = (* variant: *) PathImport
* | (* variant: *) NamedImport
* | (* variant: *) ImportDeconstruction;
* ```
*/
ImportClause = "ImportClause",
/**
* Represents a node with kind `ImportDeconstruction`, having the following structure:
*
* ```ebnf
* ImportDeconstruction = (* open_brace: *) OPEN_BRACE
* (* symbols: *) ImportDeconstructionSymbols
* (* close_brace: *) CLOSE_BRACE
* (* from_keyword: *) FROM_KEYWORD
* (* path: *) StringLiteral;
* ```
*/
ImportDeconstruction = "ImportDeconstruction",
/**
* Represents a node with kind `ImportDeconstructionSymbol`, having the following structure:
*
* ```ebnf
* ImportDeconstructionSymbol = (* name: *) IDENTIFIER
* (* alias: *) ImportAlias?;
* ```
*/
ImportDeconstructionSymbol = "ImportDeconstructionSymbol",
/**
* Represents a node with kind `ImportDeconstructionSymbols`, having the following structure:
*
* ```ebnf
* ImportDeconstructionSymbols = (* item: *) ImportDeconstructionSymbol ((* separator: *) COMMA (* item: *) ImportDeconstructionSymbol)*;
* ```
*/
ImportDeconstructionSymbols = "ImportDeconstructionSymbols",
/**
* Represents a node with kind `ImportDirective`, having the following structure:
*
* ```ebnf
* ImportDirective = (* import_keyword: *) IMPORT_KEYWORD
* (* clause: *) ImportClause
* (* semicolon: *) SEMICOLON;
* ```
*/
ImportDirective = "ImportDirective",
/**
* Represents a node with kind `IndexAccessEnd`, having the following structure:
*
* ```ebnf
* IndexAccessEnd = (* colon: *) COLON
* (* end: *) Expression?;
* ```
*/
IndexAccessEnd = "IndexAccessEnd",
/**
* Represents a node with kind `IndexAccessExpression`, having the following structure:
*
* ```ebnf
* (* Postfix unary operator *)
* IndexAccessExpression = (* operand: *) Expression
* (* open_bracket: *) OPEN_BRACKET
* (* start: *) Expression?
* (* end: *) IndexAccessEnd?
* (* close_bracket: *) CLOSE_BRACKET;
* ```
*/
IndexAccessExpression = "IndexAccessExpression",
/**
* Represents a node with kind `InequalityExpression`, having the following structure:
*
* ```ebnf
* (* Left-associative binary operator *)
* InequalityExpression = (* left_operand: *) Expression
* (* operator: *) LESS_THAN
* (* right_operand: *) Expression;
*
* (* Left-associative binary operator *)
* InequalityExpression = (* left_operand: *) Expression
* (* operator: *) GREATER_THAN
* (* right_operand: *) Expression;
*
* (* Left-associative binary operator *)
* InequalityExpression = (* left_operand: *) Expression
* (* operator: *) LESS_THAN_EQUAL
* (* right_operand: *) Expression;
*
* (* Left-associative binary operator *)
* InequalityExpression = (* left_operand: *) Expression
* (* operator: *) GREATER_THAN_EQUAL
* (* right_operand: *) Expression;
* ```
*/
InequalityExpression = "InequalityExpression",
/**
* Represents a node with kind `InheritanceSpecifier`, having the following structure:
*
* ```ebnf
* InheritanceSpecifier = (* is_keyword: *) IS_KEYWORD
* (* types: *) InheritanceTypes;
* ```
*/
InheritanceSpecifier = "InheritanceSpecifier",
/**
* Represents a node with kind `InheritanceType`, having the following structure:
*
* ```ebnf
* InheritanceType = (* type_name: *) IdentifierPath
* (* arguments: *) ArgumentsDeclaration?;
* ```
*/
InheritanceType = "InheritanceType",
/**
* Represents a node with kind `InheritanceTypes`, having the following structure:
*
* ```ebnf
* InheritanceTypes = (* item: *) InheritanceType ((* separator: *) COMMA (* item: *) InheritanceType)*;
* ```
*/
InheritanceTypes = "InheritanceTypes",
/**
* Represents a node with kind `InterfaceDefinition`, having the following structure:
*
* ```ebnf
* InterfaceDefinition = (* interface_keyword: *) INTERFACE_KEYWORD
* (* name: *) IDENTIFIER
* (* inheritance: *) InheritanceSpecifier?
* (* open_brace: *) OPEN_BRACE
* (* members: *) InterfaceMembers
* (* close_brace: *) CLOSE_BRACE;
* ```
*/
InterfaceDefinition = "InterfaceDefinition",
/**
* Represents a node with kind `InterfaceMembers`, having the following structure:
*
* ```ebnf
* InterfaceMembers = (* item: *) ContractMember*;
* ```
*/
InterfaceMembers = "InterfaceMembers",
/**
* Represents a node with kind `LibraryDefinition`, having the following structure:
*
* ```ebnf
* LibraryDefinition = (* library_keyword: *) LIBRARY_KEYWORD
* (* name: *) IDENTIFIER
* (* open_brace: *) OPEN_BRACE
* (* members: *) LibraryMembers
* (* close_brace: *) CLOSE_BRACE;
* ```
*/
LibraryDefinition = "LibraryDefinition",
/**
* Represents a node with kind `LibraryMembers`, having the following structure:
*
* ```ebnf
* LibraryMembers = (* item: *) ContractMember*;
* ```
*/
LibraryMembers = "LibraryMembers",
/**
* Represents a node with kind `MappingKey`, having the following structure:
*
* ```ebnf
* MappingKey = (* key_type: *) MappingKeyType
* (* name: *) IDENTIFIER?; (* Introduced in 0.8.18 *)
* ```
*/
MappingKey = "MappingKey",
/**
* Represents a node with kind `MappingKeyType`, having the following structure:
*
* ```ebnf
* MappingKeyType = (* variant: *) ElementaryType
* | (* variant: *) IdentifierPath;
* ```
*/
MappingKeyType = "MappingKeyType",
/**
* Represents a node with kind `MappingType`, having the following structure:
*
* ```ebnf
* MappingType = (* mapping_keyword: *) MAPPING_KEYWORD
* (* open_paren: *) OPEN_PAREN
* (* key_type: *) MappingKey
* (* equal_greater_than: *) EQUAL_GREATER_THAN
* (* value_type: *) MappingValue
* (* close_paren: *) CLOSE_PAREN;
* ```
*/
MappingType = "MappingType",
/**
* Represents a node with kind `MappingValue`, having the following structure:
*
* ```ebnf
* MappingValue = (* type_name: *) TypeName
* (* name: *) IDENTIFIER?; (* Introduced in 0.8.18 *)
* ```
*/
MappingValue = "MappingValue",
/**
* Represents a node with kind `MemberAccessExpression`, having the following structure:
*
* ```ebnf
* (* Postfix unary operator *)
* MemberAccessExpression = (* operand: *) Expression
* (* period: *) PERIOD
* (* member: *) IDENTIFIER;
* ```
*/
MemberAccessExpression = "MemberAccessExpression",
/**
* Represents a node with kind `ModifierAttribute`, having the following structure:
*
* ```ebnf
* ModifierAttribute = (* variant: *) OverrideSpecifier (* Introduced in 0.6.0 *)
* | (* variant: *) VIRTUAL_KEYWORD; (* Introduced in 0.6.0 *)
* ```
*/
ModifierAttribute = "ModifierAttribute",
/**
* Represents a node with kind `ModifierAttributes`, having the following structure:
*
* ```ebnf
* ModifierAttributes = (* item: *) ModifierAttribute*;
* ```
*/
ModifierAttributes = "ModifierAttributes",
/**
* Represents a node with kind `ModifierDefinition`, having the following structure:
*
* ```ebnf
* ModifierDefinition = (* modifier_keyword: *) MODIFIER_KEYWORD
* (* name: *) IDENTIFIER
* (* parameters: *) ParametersDeclaration?
* (* attributes: *) ModifierAttributes
* (* body: *) FunctionBody;
* ```
*/
ModifierDefinition = "ModifierDefinition",
/**
* Represents a node with kind `ModifierInvocation`, having the following structure:
*
* ```ebnf
* ModifierInvocation = (* name: *) IdentifierPath
* (* arguments: *) ArgumentsDeclaration?;
* ```
*/
ModifierInvocation = "ModifierInvocation",
/**
* Represents a node with kind `MultiplicativeExpression`, having the following structure:
*
* ```ebnf
* (* Left-associative binary operator *)
* MultiplicativeExpression = (* left_operand: *) Expression
* (* operator: *) ASTERISK
* (* right_operand: *) Expression;
*
* (* Left-associative binary operator *)
* MultiplicativeExpression = (* left_operand: *) Expression
* (* operator: *) SLASH
* (* right_operand: *) Expression;
*
* (* Left-associative binary operator *)
* MultiplicativeExpression = (* left_operand: *) Expression
* (* operator: *) PERCENT
* (* right_operand: *) Expression;
* ```
*/
MultiplicativeExpression = "MultiplicativeExpression",
/**
* Represents a node with kind `NamedArgument`, having the following structure:
*
* ```ebnf
* NamedArgument = (* name: *) IDENTIFIER
* (* colon: *) COLON
* (* value: *) Expression;
* ```
*/
NamedArgument = "NamedArgument",
/**
* Represents a node with kind `NamedArgumentGroup`, having the following structure:
*
* ```ebnf
* NamedArgumentGroup = (* open_brace: *) OPEN_BRACE
* (* arguments: *) NamedArguments
* (* close_brace: *) CLOSE_BRACE;
* ```
*/
NamedArgumentGroup = "NamedArgumentGroup",
/**
* Represents a node with kind `NamedArguments`, having the following structure:
*
* ```ebnf
* NamedArguments = ((* item: *) NamedArgument ((* separator: *) COMMA (* item: *) NamedArgument)*)?;
* ```
*/
NamedArguments = "NamedArguments",
/**
* Represents a node with kind `NamedArgumentsDeclaration`, having the following structure:
*
* ```ebnf
* NamedArgumentsDeclaration = (* open_paren: *) OPEN_PAREN
* (* arguments: *) NamedArgumentGroup?
* (* close_paren: *) CLOSE_PAREN;
* ```
*/
NamedArgumentsDeclaration = "NamedArgumentsDeclaration",
/**
* Represents a node with kind `NamedImport`, having the following structure:
*
* ```ebnf
* NamedImport = (* asterisk: *) ASTERISK
* (* alias: *) ImportAlias
* (* from_keyword: *) FROM_KEYWORD
* (* path: *) StringLiteral;
* ```
*/
NamedImport = "NamedImport",
/**
* Represents a node with kind `NewExpression`, having the following structure:
*
* ```ebnf
* NewExpression = (* new_keyword: *) NEW_KEYWORD
* (* type_name: *) TypeName;
* ```
*/
NewExpression = "NewExpression",
/**
* Represents a node with kind `NumberUnit`, having the following structure:
*
* ```ebnf
* NumberUnit = (* variant: *) WEI_KEYWORD
* | (* variant: *) GWEI_KEYWORD (* Introduced in 0.6.11 *)
* | (* variant: *) SZABO_KEYWORD (* Deprecated in 0.7.0 *)
* | (* variant: *) FINNEY_KEYWORD (* Deprecated in 0.7.0 *)
* | (* variant: *) ETHER_KEYWORD
* | (* variant: *) SECONDS_KEYWORD
* | (* variant: *) MINUTES_KEYWORD
* | (* variant: *) HOURS_KEYWORD
* | (* variant: *) DAYS_KEYWORD
* | (* variant: *) WEEKS_KEYWORD
* | (* variant: *) YEARS_KEYWORD; (* Deprecated in 0.5.0 *)
* ```
*/
NumberUnit = "NumberUnit",
/**
* Represents a node with kind `OrExpression`, having the following structure:
*
* ```ebnf
* (* Left-associative binary operator *)
* OrExpression = (* left_operand: *) Expression
* (* operator: *) BAR_BAR
* (* right_operand: *) Expression;
* ```
*/
OrExpression = "OrExpression",
/**
* Represents a node with kind `OverridePaths`, having the following structure:
*
* ```ebnf
* (* Introduced in 0.6.0 *)
* OverridePaths = (* item: *) IdentifierPath ((* separator: *) COMMA (* item: *) IdentifierPath)*;
* ```
*/
OverridePaths = "OverridePaths",
/**
* Represents a node with kind `OverridePathsDeclaration`, having the following structure:
*
* ```ebnf
* (* Introduced in 0.6.0 *)
* OverridePathsDeclaration = (* open_paren: *) OPEN_PAREN
* (* paths: *) OverridePaths
* (* close_paren: *) CLOSE_PAREN;
* ```
*/
OverridePathsDeclaration = "OverridePathsDeclaration",
/**
* Represents a node with kind `OverrideSpecifier`, having the following structure:
*
* ```ebnf
* (* Introduced in 0.6.0 *)
* OverrideSpecifier = (* override_keyword: *) OVERRIDE_KEYWORD
* (* overridden: *) OverridePathsDeclaration?;
* ```
*/
OverrideSpecifier = "OverrideSpecifier",
/**
* Represents a node with kind `Parameter`, having the following structure:
*
* ```ebnf
* Parameter = (* type_name: *) TypeName
* (* storage_location: *) StorageLocation?
* (* name: *) IDENTIFIER?;
* ```
*/
Parameter = "Parameter",
/**
* Represents a node with kind `Parameters`, having the following structure:
*
* ```ebnf
* Parameters = ((* item: *) Parameter ((* separator: *) COMMA (* item: *) Parameter)*)?;
* ```
*/
Parameters = "Parameters",
/**
* Represents a node with kind `ParametersDeclaration`, having the following structure:
*
* ```ebnf
* ParametersDeclaration = (* open_paren: *) OPEN_PAREN
* (* parameters: *) Parameters
* (* close_paren: *) CLOSE_PAREN;
* ```
*/
ParametersDeclaration = "ParametersDeclaration",
/**
* Represents a node with kind `PathImport`, having the following structure:
*
* ```ebnf
* PathImport = (* path: *) StringLiteral
* (* alias: *) ImportAlias?;
* ```
*/
PathImport = "PathImport",
/**
* Represents a node with kind `PositionalArguments`, having the following structure:
*
* ```ebnf
* PositionalArguments = ((* item: *) Expression ((* separator: *) COMMA (* item: *) Expression)*)?;
* ```
*/
PositionalArguments = "PositionalArguments",
/**
* Represents a node with kind `PositionalArgumentsDeclaration`, having the following structure:
*
* ```ebnf
* PositionalArgumentsDeclaration = (* open_paren: *) OPEN_PAREN
* (* arguments: *) PositionalArguments
* (* close_paren: *) CLOSE_PAREN;
* ```
*/
PositionalArgumentsDeclaration = "PositionalArgumentsDeclaration",
/**
* Represents a node with kind `PostfixExpression`, having the following structure:
*
* ```ebnf
* (* Postfix unary operator *)
* PostfixExpression = (* operand: *) Expression
* (* operator: *) PLUS_PLUS;
*
* (* Postfix unary operator *)
* PostfixExpression = (* operand: *) Expression
* (* operator: *) MINUS_MINUS;
* ```
*/
PostfixExpression = "PostfixExpression",
/**
* Represents a node with kind `Pragma`, having the following structure:
*
* ```ebnf
* Pragma = (* variant: *) AbicoderPragma
* | (* variant: *) Experime