pub trait AstConverting {
Show 48 methods
// Required methods
fn push_source_position(
&mut self,
start: &SourcePosition,
end: &SourcePosition,
);
fn pop_source_position(&mut self);
fn emit_byte_str(
&mut self,
mode: TreeTraversalMode,
node: &NodeByteStr,
) -> Result<TraversalResult, String>;
fn emit_type_name_identifier(
&mut self,
mode: TreeTraversalMode,
node: &NodeTypeNameIdentifier,
) -> Result<TraversalResult, String>;
fn emit_imported_name(
&mut self,
mode: TreeTraversalMode,
node: &NodeImportedName,
) -> Result<TraversalResult, String>;
fn emit_import_declarations(
&mut self,
mode: TreeTraversalMode,
node: &NodeImportDeclarations,
) -> Result<TraversalResult, String>;
fn emit_meta_identifier(
&mut self,
mode: TreeTraversalMode,
node: &NodeMetaIdentifier,
) -> Result<TraversalResult, String>;
fn emit_variable_identifier(
&mut self,
mode: TreeTraversalMode,
node: &NodeVariableIdentifier,
) -> Result<TraversalResult, String>;
fn emit_builtin_arguments(
&mut self,
mode: TreeTraversalMode,
node: &NodeBuiltinArguments,
) -> Result<TraversalResult, String>;
fn emit_type_map_key(
&mut self,
mode: TreeTraversalMode,
node: &NodeTypeMapKey,
) -> Result<TraversalResult, String>;
fn emit_type_map_value(
&mut self,
mode: TreeTraversalMode,
node: &NodeTypeMapValue,
) -> Result<TraversalResult, String>;
fn emit_type_argument(
&mut self,
mode: TreeTraversalMode,
node: &NodeTypeArgument,
) -> Result<TraversalResult, String>;
fn emit_scilla_type(
&mut self,
mode: TreeTraversalMode,
node: &NodeScillaType,
) -> Result<TraversalResult, String>;
fn emit_type_map_entry(
&mut self,
mode: TreeTraversalMode,
node: &NodeTypeMapEntry,
) -> Result<TraversalResult, String>;
fn emit_address_type_field(
&mut self,
mode: TreeTraversalMode,
node: &NodeAddressTypeField,
) -> Result<TraversalResult, String>;
fn emit_address_type(
&mut self,
mode: TreeTraversalMode,
node: &NodeAddressType,
) -> Result<TraversalResult, String>;
fn emit_full_expression(
&mut self,
mode: TreeTraversalMode,
node: &NodeFullExpression,
) -> Result<TraversalResult, String>;
fn emit_message_entry(
&mut self,
mode: TreeTraversalMode,
node: &NodeMessageEntry,
) -> Result<TraversalResult, String>;
fn emit_pattern_match_expression_clause(
&mut self,
mode: TreeTraversalMode,
node: &NodePatternMatchExpressionClause,
) -> Result<TraversalResult, String>;
fn emit_atomic_expression(
&mut self,
mode: TreeTraversalMode,
node: &NodeAtomicExpression,
) -> Result<TraversalResult, String>;
fn emit_contract_type_arguments(
&mut self,
mode: TreeTraversalMode,
node: &NodeContractTypeArguments,
) -> Result<TraversalResult, String>;
fn emit_value_literal(
&mut self,
mode: TreeTraversalMode,
node: &NodeValueLiteral,
) -> Result<TraversalResult, String>;
fn emit_map_access(
&mut self,
mode: TreeTraversalMode,
node: &NodeMapAccess,
) -> Result<TraversalResult, String>;
fn emit_pattern(
&mut self,
mode: TreeTraversalMode,
node: &NodePattern,
) -> Result<TraversalResult, String>;
fn emit_argument_pattern(
&mut self,
mode: TreeTraversalMode,
node: &NodeArgumentPattern,
) -> Result<TraversalResult, String>;
fn emit_pattern_match_clause(
&mut self,
mode: TreeTraversalMode,
node: &NodePatternMatchClause,
) -> Result<TraversalResult, String>;
fn emit_blockchain_fetch_arguments(
&mut self,
mode: TreeTraversalMode,
node: &NodeBlockchainFetchArguments,
) -> Result<TraversalResult, String>;
fn emit_statement(
&mut self,
mode: TreeTraversalMode,
node: &NodeStatement,
) -> Result<TraversalResult, String>;
fn emit_remote_fetch_statement(
&mut self,
mode: TreeTraversalMode,
node: &NodeRemoteFetchStatement,
) -> Result<TraversalResult, String>;
fn emit_component_id(
&mut self,
mode: TreeTraversalMode,
node: &NodeComponentId,
) -> Result<TraversalResult, String>;
fn emit_component_parameters(
&mut self,
mode: TreeTraversalMode,
node: &NodeComponentParameters,
) -> Result<TraversalResult, String>;
fn emit_parameter_pair(
&mut self,
mode: TreeTraversalMode,
node: &NodeParameterPair,
) -> Result<TraversalResult, String>;
fn emit_component_body(
&mut self,
mode: TreeTraversalMode,
node: &NodeComponentBody,
) -> Result<TraversalResult, String>;
fn emit_statement_block(
&mut self,
mode: TreeTraversalMode,
node: &NodeStatementBlock,
) -> Result<TraversalResult, String>;
fn emit_typed_identifier(
&mut self,
mode: TreeTraversalMode,
node: &NodeTypedIdentifier,
) -> Result<TraversalResult, String>;
fn emit_type_annotation(
&mut self,
mode: TreeTraversalMode,
node: &NodeTypeAnnotation,
) -> Result<TraversalResult, String>;
fn emit_program(
&mut self,
mode: TreeTraversalMode,
node: &NodeProgram,
) -> Result<TraversalResult, String>;
fn emit_library_definition(
&mut self,
mode: TreeTraversalMode,
node: &NodeLibraryDefinition,
) -> Result<TraversalResult, String>;
fn emit_library_single_definition(
&mut self,
mode: TreeTraversalMode,
node: &NodeLibrarySingleDefinition,
) -> Result<TraversalResult, String>;
fn emit_contract_definition(
&mut self,
mode: TreeTraversalMode,
node: &NodeContractDefinition,
) -> Result<TraversalResult, String>;
fn emit_contract_field(
&mut self,
mode: TreeTraversalMode,
node: &NodeContractField,
) -> Result<TraversalResult, String>;
fn emit_with_constraint(
&mut self,
mode: TreeTraversalMode,
node: &NodeWithConstraint,
) -> Result<TraversalResult, String>;
fn emit_component_definition(
&mut self,
mode: TreeTraversalMode,
node: &NodeComponentDefinition,
) -> Result<TraversalResult, String>;
fn emit_procedure_definition(
&mut self,
mode: TreeTraversalMode,
node: &NodeProcedureDefinition,
) -> Result<TraversalResult, String>;
fn emit_transition_definition(
&mut self,
mode: TreeTraversalMode,
node: &NodeTransitionDefinition,
) -> Result<TraversalResult, String>;
fn emit_type_alternative_clause(
&mut self,
mode: TreeTraversalMode,
node: &NodeTypeAlternativeClause,
) -> Result<TraversalResult, String>;
fn emit_type_map_value_arguments(
&mut self,
mode: TreeTraversalMode,
node: &NodeTypeMapValueArguments,
) -> Result<TraversalResult, String>;
fn emit_type_map_value_allowing_type_arguments(
&mut self,
mode: TreeTraversalMode,
node: &NodeTypeMapValueAllowingTypeArguments,
) -> Result<TraversalResult, String>;
}
Expand description
The AstConverting
trait is used for converting an Abstract Syntax Tree (AST)
to some other form, such as an internal or intermediate representation.
Each method corresponds to a specific node in the AST and is responsible for
converting that node and its children. The methods are called upon entering and
exiting the tree traversal and the return result informs the visitor algorithm
how to proceed.
Required Methods§
Sourcefn push_source_position(&mut self, start: &SourcePosition, end: &SourcePosition)
fn push_source_position(&mut self, start: &SourcePosition, end: &SourcePosition)
Pushes the source position of the current node onto a stack.
Sourcefn pop_source_position(&mut self)
fn pop_source_position(&mut self)
Pops the source position of the current node from the stack.
Sourcefn emit_byte_str(
&mut self,
mode: TreeTraversalMode,
node: &NodeByteStr,
) -> Result<TraversalResult, String>
fn emit_byte_str( &mut self, mode: TreeTraversalMode, node: &NodeByteStr, ) -> Result<TraversalResult, String>
Converts a NodeByteStr
node.
Sourcefn emit_type_name_identifier(
&mut self,
mode: TreeTraversalMode,
node: &NodeTypeNameIdentifier,
) -> Result<TraversalResult, String>
fn emit_type_name_identifier( &mut self, mode: TreeTraversalMode, node: &NodeTypeNameIdentifier, ) -> Result<TraversalResult, String>
Converts a NodeTypeNameIdentifier
node.
Sourcefn emit_imported_name(
&mut self,
mode: TreeTraversalMode,
node: &NodeImportedName,
) -> Result<TraversalResult, String>
fn emit_imported_name( &mut self, mode: TreeTraversalMode, node: &NodeImportedName, ) -> Result<TraversalResult, String>
Converts a NodeImportedName
node.
Sourcefn emit_import_declarations(
&mut self,
mode: TreeTraversalMode,
node: &NodeImportDeclarations,
) -> Result<TraversalResult, String>
fn emit_import_declarations( &mut self, mode: TreeTraversalMode, node: &NodeImportDeclarations, ) -> Result<TraversalResult, String>
Converts a NodeImportDeclarations
node.
Sourcefn emit_meta_identifier(
&mut self,
mode: TreeTraversalMode,
node: &NodeMetaIdentifier,
) -> Result<TraversalResult, String>
fn emit_meta_identifier( &mut self, mode: TreeTraversalMode, node: &NodeMetaIdentifier, ) -> Result<TraversalResult, String>
Converts a NodeMetaIdentifier
node.
Sourcefn emit_variable_identifier(
&mut self,
mode: TreeTraversalMode,
node: &NodeVariableIdentifier,
) -> Result<TraversalResult, String>
fn emit_variable_identifier( &mut self, mode: TreeTraversalMode, node: &NodeVariableIdentifier, ) -> Result<TraversalResult, String>
Converts a NodeVariableIdentifier
node.
Sourcefn emit_builtin_arguments(
&mut self,
mode: TreeTraversalMode,
node: &NodeBuiltinArguments,
) -> Result<TraversalResult, String>
fn emit_builtin_arguments( &mut self, mode: TreeTraversalMode, node: &NodeBuiltinArguments, ) -> Result<TraversalResult, String>
Converts a NodeBuiltinArguments
node.
Sourcefn emit_type_map_key(
&mut self,
mode: TreeTraversalMode,
node: &NodeTypeMapKey,
) -> Result<TraversalResult, String>
fn emit_type_map_key( &mut self, mode: TreeTraversalMode, node: &NodeTypeMapKey, ) -> Result<TraversalResult, String>
Converts a NodeTypeMapKey
node.
Sourcefn emit_type_map_value(
&mut self,
mode: TreeTraversalMode,
node: &NodeTypeMapValue,
) -> Result<TraversalResult, String>
fn emit_type_map_value( &mut self, mode: TreeTraversalMode, node: &NodeTypeMapValue, ) -> Result<TraversalResult, String>
Converts a NodeTypeMapValue
node.
Sourcefn emit_type_argument(
&mut self,
mode: TreeTraversalMode,
node: &NodeTypeArgument,
) -> Result<TraversalResult, String>
fn emit_type_argument( &mut self, mode: TreeTraversalMode, node: &NodeTypeArgument, ) -> Result<TraversalResult, String>
Converts a NodeTypeArgument
node.
Sourcefn emit_scilla_type(
&mut self,
mode: TreeTraversalMode,
node: &NodeScillaType,
) -> Result<TraversalResult, String>
fn emit_scilla_type( &mut self, mode: TreeTraversalMode, node: &NodeScillaType, ) -> Result<TraversalResult, String>
Converts a NodeScillaType
node.
Sourcefn emit_type_map_entry(
&mut self,
mode: TreeTraversalMode,
node: &NodeTypeMapEntry,
) -> Result<TraversalResult, String>
fn emit_type_map_entry( &mut self, mode: TreeTraversalMode, node: &NodeTypeMapEntry, ) -> Result<TraversalResult, String>
Converts a NodeTypeMapEntry
node.
Sourcefn emit_address_type_field(
&mut self,
mode: TreeTraversalMode,
node: &NodeAddressTypeField,
) -> Result<TraversalResult, String>
fn emit_address_type_field( &mut self, mode: TreeTraversalMode, node: &NodeAddressTypeField, ) -> Result<TraversalResult, String>
Converts a NodeAddressTypeField
node.
Sourcefn emit_address_type(
&mut self,
mode: TreeTraversalMode,
node: &NodeAddressType,
) -> Result<TraversalResult, String>
fn emit_address_type( &mut self, mode: TreeTraversalMode, node: &NodeAddressType, ) -> Result<TraversalResult, String>
Converts a NodeAddressType
node.
Sourcefn emit_full_expression(
&mut self,
mode: TreeTraversalMode,
node: &NodeFullExpression,
) -> Result<TraversalResult, String>
fn emit_full_expression( &mut self, mode: TreeTraversalMode, node: &NodeFullExpression, ) -> Result<TraversalResult, String>
Converts a NodeFullExpression
node.
Sourcefn emit_message_entry(
&mut self,
mode: TreeTraversalMode,
node: &NodeMessageEntry,
) -> Result<TraversalResult, String>
fn emit_message_entry( &mut self, mode: TreeTraversalMode, node: &NodeMessageEntry, ) -> Result<TraversalResult, String>
Converts a NodeMessageEntry
node.
Sourcefn emit_pattern_match_expression_clause(
&mut self,
mode: TreeTraversalMode,
node: &NodePatternMatchExpressionClause,
) -> Result<TraversalResult, String>
fn emit_pattern_match_expression_clause( &mut self, mode: TreeTraversalMode, node: &NodePatternMatchExpressionClause, ) -> Result<TraversalResult, String>
Converts a NodePatternMatchExpressionClause
node.
Sourcefn emit_atomic_expression(
&mut self,
mode: TreeTraversalMode,
node: &NodeAtomicExpression,
) -> Result<TraversalResult, String>
fn emit_atomic_expression( &mut self, mode: TreeTraversalMode, node: &NodeAtomicExpression, ) -> Result<TraversalResult, String>
Converts a NodeAtomicExpression
node.
Sourcefn emit_contract_type_arguments(
&mut self,
mode: TreeTraversalMode,
node: &NodeContractTypeArguments,
) -> Result<TraversalResult, String>
fn emit_contract_type_arguments( &mut self, mode: TreeTraversalMode, node: &NodeContractTypeArguments, ) -> Result<TraversalResult, String>
Converts a NodeContractTypeArguments
node.
Sourcefn emit_value_literal(
&mut self,
mode: TreeTraversalMode,
node: &NodeValueLiteral,
) -> Result<TraversalResult, String>
fn emit_value_literal( &mut self, mode: TreeTraversalMode, node: &NodeValueLiteral, ) -> Result<TraversalResult, String>
Converts a NodeValueLiteral
node.
Sourcefn emit_map_access(
&mut self,
mode: TreeTraversalMode,
node: &NodeMapAccess,
) -> Result<TraversalResult, String>
fn emit_map_access( &mut self, mode: TreeTraversalMode, node: &NodeMapAccess, ) -> Result<TraversalResult, String>
Converts a NodeMapAccess
node.
Sourcefn emit_pattern(
&mut self,
mode: TreeTraversalMode,
node: &NodePattern,
) -> Result<TraversalResult, String>
fn emit_pattern( &mut self, mode: TreeTraversalMode, node: &NodePattern, ) -> Result<TraversalResult, String>
Converts a NodePattern
node.
Sourcefn emit_argument_pattern(
&mut self,
mode: TreeTraversalMode,
node: &NodeArgumentPattern,
) -> Result<TraversalResult, String>
fn emit_argument_pattern( &mut self, mode: TreeTraversalMode, node: &NodeArgumentPattern, ) -> Result<TraversalResult, String>
Converts a NodeArgumentPattern
node.
Sourcefn emit_pattern_match_clause(
&mut self,
mode: TreeTraversalMode,
node: &NodePatternMatchClause,
) -> Result<TraversalResult, String>
fn emit_pattern_match_clause( &mut self, mode: TreeTraversalMode, node: &NodePatternMatchClause, ) -> Result<TraversalResult, String>
Converts a NodePatternMatchClause
node.
Sourcefn emit_blockchain_fetch_arguments(
&mut self,
mode: TreeTraversalMode,
node: &NodeBlockchainFetchArguments,
) -> Result<TraversalResult, String>
fn emit_blockchain_fetch_arguments( &mut self, mode: TreeTraversalMode, node: &NodeBlockchainFetchArguments, ) -> Result<TraversalResult, String>
Converts a NodeBlockchainFetchArguments
node.
Sourcefn emit_statement(
&mut self,
mode: TreeTraversalMode,
node: &NodeStatement,
) -> Result<TraversalResult, String>
fn emit_statement( &mut self, mode: TreeTraversalMode, node: &NodeStatement, ) -> Result<TraversalResult, String>
Converts a NodeStatement
node.
Sourcefn emit_remote_fetch_statement(
&mut self,
mode: TreeTraversalMode,
node: &NodeRemoteFetchStatement,
) -> Result<TraversalResult, String>
fn emit_remote_fetch_statement( &mut self, mode: TreeTraversalMode, node: &NodeRemoteFetchStatement, ) -> Result<TraversalResult, String>
Converts a NodeRemoteFetchStatement
node.
Sourcefn emit_component_id(
&mut self,
mode: TreeTraversalMode,
node: &NodeComponentId,
) -> Result<TraversalResult, String>
fn emit_component_id( &mut self, mode: TreeTraversalMode, node: &NodeComponentId, ) -> Result<TraversalResult, String>
Converts a NodeComponentId
node.
Sourcefn emit_component_parameters(
&mut self,
mode: TreeTraversalMode,
node: &NodeComponentParameters,
) -> Result<TraversalResult, String>
fn emit_component_parameters( &mut self, mode: TreeTraversalMode, node: &NodeComponentParameters, ) -> Result<TraversalResult, String>
Converts a NodeComponentParameters
node.
Sourcefn emit_parameter_pair(
&mut self,
mode: TreeTraversalMode,
node: &NodeParameterPair,
) -> Result<TraversalResult, String>
fn emit_parameter_pair( &mut self, mode: TreeTraversalMode, node: &NodeParameterPair, ) -> Result<TraversalResult, String>
Converts a NodeParameterPair
node.
Sourcefn emit_component_body(
&mut self,
mode: TreeTraversalMode,
node: &NodeComponentBody,
) -> Result<TraversalResult, String>
fn emit_component_body( &mut self, mode: TreeTraversalMode, node: &NodeComponentBody, ) -> Result<TraversalResult, String>
Converts a NodeComponentBody
node.
Sourcefn emit_statement_block(
&mut self,
mode: TreeTraversalMode,
node: &NodeStatementBlock,
) -> Result<TraversalResult, String>
fn emit_statement_block( &mut self, mode: TreeTraversalMode, node: &NodeStatementBlock, ) -> Result<TraversalResult, String>
Converts a NodeStatementBlock
node.
Sourcefn emit_typed_identifier(
&mut self,
mode: TreeTraversalMode,
node: &NodeTypedIdentifier,
) -> Result<TraversalResult, String>
fn emit_typed_identifier( &mut self, mode: TreeTraversalMode, node: &NodeTypedIdentifier, ) -> Result<TraversalResult, String>
Converts a NodeTypedIdentifier
node.
Sourcefn emit_type_annotation(
&mut self,
mode: TreeTraversalMode,
node: &NodeTypeAnnotation,
) -> Result<TraversalResult, String>
fn emit_type_annotation( &mut self, mode: TreeTraversalMode, node: &NodeTypeAnnotation, ) -> Result<TraversalResult, String>
Converts a NodeTypeAnnotation
node.
Sourcefn emit_program(
&mut self,
mode: TreeTraversalMode,
node: &NodeProgram,
) -> Result<TraversalResult, String>
fn emit_program( &mut self, mode: TreeTraversalMode, node: &NodeProgram, ) -> Result<TraversalResult, String>
Converts a NodeProgram
node.
Sourcefn emit_library_definition(
&mut self,
mode: TreeTraversalMode,
node: &NodeLibraryDefinition,
) -> Result<TraversalResult, String>
fn emit_library_definition( &mut self, mode: TreeTraversalMode, node: &NodeLibraryDefinition, ) -> Result<TraversalResult, String>
Converts a NodeLibraryDefinition
node.
Sourcefn emit_library_single_definition(
&mut self,
mode: TreeTraversalMode,
node: &NodeLibrarySingleDefinition,
) -> Result<TraversalResult, String>
fn emit_library_single_definition( &mut self, mode: TreeTraversalMode, node: &NodeLibrarySingleDefinition, ) -> Result<TraversalResult, String>
Converts a NodeLibrarySingleDefinition
node.
Sourcefn emit_contract_definition(
&mut self,
mode: TreeTraversalMode,
node: &NodeContractDefinition,
) -> Result<TraversalResult, String>
fn emit_contract_definition( &mut self, mode: TreeTraversalMode, node: &NodeContractDefinition, ) -> Result<TraversalResult, String>
Converts a NodeContractDefinition
node.
Sourcefn emit_contract_field(
&mut self,
mode: TreeTraversalMode,
node: &NodeContractField,
) -> Result<TraversalResult, String>
fn emit_contract_field( &mut self, mode: TreeTraversalMode, node: &NodeContractField, ) -> Result<TraversalResult, String>
Converts a NodeContractField
node.
Sourcefn emit_with_constraint(
&mut self,
mode: TreeTraversalMode,
node: &NodeWithConstraint,
) -> Result<TraversalResult, String>
fn emit_with_constraint( &mut self, mode: TreeTraversalMode, node: &NodeWithConstraint, ) -> Result<TraversalResult, String>
Converts a NodeWithConstraint
node.
Sourcefn emit_component_definition(
&mut self,
mode: TreeTraversalMode,
node: &NodeComponentDefinition,
) -> Result<TraversalResult, String>
fn emit_component_definition( &mut self, mode: TreeTraversalMode, node: &NodeComponentDefinition, ) -> Result<TraversalResult, String>
Converts a NodeComponentDefinition
node.
Sourcefn emit_procedure_definition(
&mut self,
mode: TreeTraversalMode,
node: &NodeProcedureDefinition,
) -> Result<TraversalResult, String>
fn emit_procedure_definition( &mut self, mode: TreeTraversalMode, node: &NodeProcedureDefinition, ) -> Result<TraversalResult, String>
Converts a NodeProcedureDefinition
node.
Sourcefn emit_transition_definition(
&mut self,
mode: TreeTraversalMode,
node: &NodeTransitionDefinition,
) -> Result<TraversalResult, String>
fn emit_transition_definition( &mut self, mode: TreeTraversalMode, node: &NodeTransitionDefinition, ) -> Result<TraversalResult, String>
Converts a NodeTransitionDefinition
node.
Sourcefn emit_type_alternative_clause(
&mut self,
mode: TreeTraversalMode,
node: &NodeTypeAlternativeClause,
) -> Result<TraversalResult, String>
fn emit_type_alternative_clause( &mut self, mode: TreeTraversalMode, node: &NodeTypeAlternativeClause, ) -> Result<TraversalResult, String>
Converts a NodeTypeAlternativeClause
node.
Sourcefn emit_type_map_value_arguments(
&mut self,
mode: TreeTraversalMode,
node: &NodeTypeMapValueArguments,
) -> Result<TraversalResult, String>
fn emit_type_map_value_arguments( &mut self, mode: TreeTraversalMode, node: &NodeTypeMapValueArguments, ) -> Result<TraversalResult, String>
Converts a NodeTypeMapValueArguments
node.
Sourcefn emit_type_map_value_allowing_type_arguments(
&mut self,
mode: TreeTraversalMode,
node: &NodeTypeMapValueAllowingTypeArguments,
) -> Result<TraversalResult, String>
fn emit_type_map_value_allowing_type_arguments( &mut self, mode: TreeTraversalMode, node: &NodeTypeMapValueAllowingTypeArguments, ) -> Result<TraversalResult, String>
Converts a NodeTypeMapValueAllowingTypeArguments
node.