pub trait ParserCallbacks<'a> {
type Diagnostic;
type Context;
Show 34 methods
// Required methods
fn create_tokens(
context: &mut Self::Context,
source: &'a str,
diags: &mut Vec<Self::Diagnostic>,
) -> (Vec<Token>, Vec<Span>);
fn create_diagnostic(&self, span: Span, message: String) -> Self::Diagnostic;
fn predicate_decl_1(&self) -> bool;
// Provided methods
fn predicate_skip(&self, _token: Token) -> bool { ... }
fn create_node_action(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
) { ... }
fn create_node_alternation(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
) { ... }
fn create_node_assertion(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
) { ... }
fn create_node_commit(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
) { ... }
fn create_node_concat(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
) { ... }
fn create_node_decl(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
) { ... }
fn create_node_error(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
) { ... }
fn create_node_file(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
) { ... }
fn create_node_name(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
) { ... }
fn create_node_node_creation(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
) { ... }
fn create_node_node_elision(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
) { ... }
fn create_node_node_marker(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
) { ... }
fn create_node_node_rename(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
) { ... }
fn create_node_optional(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
) { ... }
fn create_node_ordered_choice(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
) { ... }
fn create_node_paren(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
) { ... }
fn create_node_part_decl(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
) { ... }
fn create_node_plus(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
) { ... }
fn create_node_postfix(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
) { ... }
fn create_node_predicate(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
) { ... }
fn create_node_regex(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
) { ... }
fn create_node_return(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
) { ... }
fn create_node_right_decl(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
) { ... }
fn create_node_rule_decl(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
) { ... }
fn create_node_skip_decl(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
) { ... }
fn create_node_star(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
) { ... }
fn create_node_start_decl(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
) { ... }
fn create_node_symbol(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
) { ... }
fn create_node_token_decl(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
) { ... }
fn create_node_token_list(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
) { ... }
}Required Associated Types§
type Diagnostic
type Context
Required Methods§
Sourcefn create_tokens(
context: &mut Self::Context,
source: &'a str,
diags: &mut Vec<Self::Diagnostic>,
) -> (Vec<Token>, Vec<Span>)
fn create_tokens( context: &mut Self::Context, source: &'a str, diags: &mut Vec<Self::Diagnostic>, ) -> (Vec<Token>, Vec<Span>)
Called at the start of the parse to generate all tokens and corresponding spans.
Sourcefn create_diagnostic(&self, span: Span, message: String) -> Self::Diagnostic
fn create_diagnostic(&self, span: Span, message: String) -> Self::Diagnostic
Called when diagnostic is created.
Sourcefn predicate_decl_1(&self) -> bool
fn predicate_decl_1(&self) -> bool
Called when semantic predicate ?1 in rule decl is visited.
Provided Methods§
Sourcefn predicate_skip(&self, _token: Token) -> bool
fn predicate_skip(&self, _token: Token) -> bool
This predicate can be used to skip normal tokens.
Sourcefn create_node_action(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
)
fn create_node_action( &mut self, _node_ref: NodeRef, _diags: &mut Vec<Self::Diagnostic>, )
Called when action node is created.
Sourcefn create_node_alternation(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
)
fn create_node_alternation( &mut self, _node_ref: NodeRef, _diags: &mut Vec<Self::Diagnostic>, )
Called when alternation node is created.
Sourcefn create_node_assertion(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
)
fn create_node_assertion( &mut self, _node_ref: NodeRef, _diags: &mut Vec<Self::Diagnostic>, )
Called when assertion node is created.
Sourcefn create_node_commit(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
)
fn create_node_commit( &mut self, _node_ref: NodeRef, _diags: &mut Vec<Self::Diagnostic>, )
Called when commit node is created.
Sourcefn create_node_concat(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
)
fn create_node_concat( &mut self, _node_ref: NodeRef, _diags: &mut Vec<Self::Diagnostic>, )
Called when concat node is created.
Sourcefn create_node_decl(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
)
fn create_node_decl( &mut self, _node_ref: NodeRef, _diags: &mut Vec<Self::Diagnostic>, )
Called when decl node is created.
Sourcefn create_node_error(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
)
fn create_node_error( &mut self, _node_ref: NodeRef, _diags: &mut Vec<Self::Diagnostic>, )
Called when error node is created.
Sourcefn create_node_file(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
)
fn create_node_file( &mut self, _node_ref: NodeRef, _diags: &mut Vec<Self::Diagnostic>, )
Called when file node is created.
Sourcefn create_node_name(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
)
fn create_node_name( &mut self, _node_ref: NodeRef, _diags: &mut Vec<Self::Diagnostic>, )
Called when name node is created.
Sourcefn create_node_node_creation(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
)
fn create_node_node_creation( &mut self, _node_ref: NodeRef, _diags: &mut Vec<Self::Diagnostic>, )
Called when node_creation node is created.
Sourcefn create_node_node_elision(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
)
fn create_node_node_elision( &mut self, _node_ref: NodeRef, _diags: &mut Vec<Self::Diagnostic>, )
Called when node_elision node is created.
Sourcefn create_node_node_marker(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
)
fn create_node_node_marker( &mut self, _node_ref: NodeRef, _diags: &mut Vec<Self::Diagnostic>, )
Called when node_marker node is created.
Sourcefn create_node_node_rename(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
)
fn create_node_node_rename( &mut self, _node_ref: NodeRef, _diags: &mut Vec<Self::Diagnostic>, )
Called when node_rename node is created.
Sourcefn create_node_optional(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
)
fn create_node_optional( &mut self, _node_ref: NodeRef, _diags: &mut Vec<Self::Diagnostic>, )
Called when optional node is created.
Sourcefn create_node_ordered_choice(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
)
fn create_node_ordered_choice( &mut self, _node_ref: NodeRef, _diags: &mut Vec<Self::Diagnostic>, )
Called when ordered_choice node is created.
Sourcefn create_node_paren(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
)
fn create_node_paren( &mut self, _node_ref: NodeRef, _diags: &mut Vec<Self::Diagnostic>, )
Called when paren node is created.
Sourcefn create_node_part_decl(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
)
fn create_node_part_decl( &mut self, _node_ref: NodeRef, _diags: &mut Vec<Self::Diagnostic>, )
Called when part_decl node is created.
Sourcefn create_node_plus(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
)
fn create_node_plus( &mut self, _node_ref: NodeRef, _diags: &mut Vec<Self::Diagnostic>, )
Called when plus node is created.
Sourcefn create_node_postfix(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
)
fn create_node_postfix( &mut self, _node_ref: NodeRef, _diags: &mut Vec<Self::Diagnostic>, )
Called when postfix node is created.
Sourcefn create_node_predicate(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
)
fn create_node_predicate( &mut self, _node_ref: NodeRef, _diags: &mut Vec<Self::Diagnostic>, )
Called when predicate node is created.
Sourcefn create_node_regex(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
)
fn create_node_regex( &mut self, _node_ref: NodeRef, _diags: &mut Vec<Self::Diagnostic>, )
Called when regex node is created.
Sourcefn create_node_return(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
)
fn create_node_return( &mut self, _node_ref: NodeRef, _diags: &mut Vec<Self::Diagnostic>, )
Called when return node is created.
Sourcefn create_node_right_decl(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
)
fn create_node_right_decl( &mut self, _node_ref: NodeRef, _diags: &mut Vec<Self::Diagnostic>, )
Called when right_decl node is created.
Sourcefn create_node_rule_decl(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
)
fn create_node_rule_decl( &mut self, _node_ref: NodeRef, _diags: &mut Vec<Self::Diagnostic>, )
Called when rule_decl node is created.
Sourcefn create_node_skip_decl(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
)
fn create_node_skip_decl( &mut self, _node_ref: NodeRef, _diags: &mut Vec<Self::Diagnostic>, )
Called when skip_decl node is created.
Sourcefn create_node_star(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
)
fn create_node_star( &mut self, _node_ref: NodeRef, _diags: &mut Vec<Self::Diagnostic>, )
Called when star node is created.
Sourcefn create_node_start_decl(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
)
fn create_node_start_decl( &mut self, _node_ref: NodeRef, _diags: &mut Vec<Self::Diagnostic>, )
Called when start_decl node is created.
Sourcefn create_node_symbol(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
)
fn create_node_symbol( &mut self, _node_ref: NodeRef, _diags: &mut Vec<Self::Diagnostic>, )
Called when symbol node is created.
Sourcefn create_node_token_decl(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
)
fn create_node_token_decl( &mut self, _node_ref: NodeRef, _diags: &mut Vec<Self::Diagnostic>, )
Called when token_decl node is created.
Sourcefn create_node_token_list(
&mut self,
_node_ref: NodeRef,
_diags: &mut Vec<Self::Diagnostic>,
)
fn create_node_token_list( &mut self, _node_ref: NodeRef, _diags: &mut Vec<Self::Diagnostic>, )
Called when token_list node is created.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.