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.