Expand description
Traversal of a mutable AST.
This module provides a VisitMut
trait that is like the Visit
trait
but operates on a mutable borrow, rather than an immutable borrow, of the
syntax tree.
Each method of the VisitMut
trait is a hook that can be overridden to
customize the behavior when visiting the corresponding type of node. By
default, every method recursively visits the substructure of the input by
invoking the right visitor method of each of its fields.
pub trait VisitMut<'ast, T: AstInfo> {
/* ... */
fn visit_function_mut(&mut self, node: &'ast mut Function<T>) {
visit_function_mut(self, node);
}
/* ... */
}
pub fn visit_function_mut<'ast, V, T: AstInfo>(visitor: &mut V, node: &'ast mut Function<T>)
where
V: VisitMut<'ast, T> + ?Sized,
{
visitor.visit_item_name_mut(&mut node.name);
visitor.visit_function_args_mut(&mut node.args);
if let Some(filter) = &mut node.filter {
visitor.visit_expr_mut(&mut *filter);
}
if let Some(over) = &mut node.over {
visitor.visit_window_spec_mut(over);
}
}
§Examples
This visitor removes parentheses from expressions.
use std::error::Error;
use mz_sql_parser::ast::{AstInfo, Expr};
use mz_sql_parser::ast::visit_mut::{self, VisitMut};
struct RemoveParens;
impl<'a, T: AstInfo> VisitMut<'a, T> for RemoveParens {
fn visit_expr_mut(&mut self, expr: &'a mut Expr<T>) {
visit_mut::visit_expr_mut(self, expr);
if let Expr::Nested(e) = expr {
*expr = (**e).clone();
}
}
}
fn main() -> Result<(), Box<dyn Error>> {
let sql = "(a + ((b))) + c";
let mut expr = mz_sql_parser::parser::parse_expr(sql.into())?;
RemoveParens.visit_expr_mut(&mut expr);
let expected = mz_sql_parser::parser::parse_expr("a + b + c".into())?;
assert_eq!(expr, expected);
Ok(())
}
The VisitMutNode
trait is implemented for every node in the AST and can
be used to write generic functions that apply a VisitMut
implementation to
any node in the AST.
§Implementation notes
This module is automatically generated by the crate’s build script. Changes to the AST will be automatically propagated to the visitor.
This approach to AST visitors is inspired by the syn
crate. These module
docs are directly derived from the syn::visit_mut
module docs.
Traits§
Functions§
- visit_
abbreviated_ grant_ or_ revoke_ statement_ mut - visit_
abbreviated_ grant_ statement_ mut - visit_
abbreviated_ revoke_ statement_ mut - visit_
alter_ cluster_ action_ mut - visit_
alter_ cluster_ statement_ mut - visit_
alter_ connection_ action_ mut - visit_
alter_ connection_ option_ mut - visit_
alter_ connection_ option_ name_ mut - visit_
alter_ connection_ statement_ mut - visit_
alter_ default_ privileges_ statement_ mut - visit_
alter_ index_ action_ mut - visit_
alter_ index_ statement_ mut - visit_
alter_ network_ policy_ statement_ mut - visit_
alter_ object_ rename_ statement_ mut - visit_
alter_ object_ swap_ statement_ mut - visit_
alter_ owner_ statement_ mut - visit_
alter_ retain_ history_ statement_ mut - visit_
alter_ role_ option_ mut - visit_
alter_ role_ statement_ mut - visit_
alter_ secret_ statement_ mut - visit_
alter_ set_ cluster_ statement_ mut - visit_
alter_ sink_ action_ mut - visit_
alter_ sink_ statement_ mut - visit_
alter_ source_ action_ mut - visit_
alter_ source_ add_ subsource_ option_ mut - visit_
alter_ source_ add_ subsource_ option_ name_ mut - visit_
alter_ source_ statement_ mut - visit_
alter_ system_ reset_ all_ statement_ mut - visit_
alter_ system_ reset_ statement_ mut - visit_
alter_ system_ set_ statement_ mut - visit_
alter_ table_ add_ column_ statement_ mut - visit_
as_ of_ mut - visit_
assignment_ mut - visit_
avro_ doc_ on_ mut - visit_
avro_ schema_ mut - visit_
avro_ schema_ option_ mut - visit_
avro_ schema_ option_ name_ mut - visit_
catalog_ name_ mut - visit_
close_ statement_ mut - visit_
cluster_ alter_ option_ mut - visit_
cluster_ alter_ option_ name_ mut - visit_
cluster_ alter_ option_ value_ mut - visit_
cluster_ alter_ until_ ready_ option_ mut - visit_
cluster_ alter_ until_ ready_ option_ name_ mut - visit_
cluster_ feature_ mut - visit_
cluster_ feature_ name_ mut - visit_
cluster_ name_ mut - visit_
cluster_ option_ mut - visit_
cluster_ option_ name_ mut - visit_
cluster_ schedule_ option_ value_ mut - visit_
column_ def_ mut - visit_
column_ name_ mut - visit_
column_ option_ def_ mut - visit_
column_ option_ mut - visit_
column_ reference_ mut - visit_
column_ versioned_ mut - visit_
comment_ object_ type_ mut - visit_
comment_ statement_ mut - visit_
commit_ statement_ mut - visit_
connection_ default_ aws_ privatelink_ mut - visit_
connection_ option_ mut - visit_
connection_ option_ name_ mut - visit_
continual_ task_ option_ mut - visit_
continual_ task_ option_ name_ mut - visit_
continual_ task_ stmt_ mut - visit_
copy_ direction_ mut - visit_
copy_ option_ mut - visit_
copy_ option_ name_ mut - visit_
copy_ relation_ mut - visit_
copy_ statement_ mut - visit_
copy_ target_ mut - visit_
create_ cluster_ replica_ statement_ mut - visit_
create_ cluster_ statement_ mut - visit_
create_ connection_ option_ mut - visit_
create_ connection_ option_ name_ mut - visit_
create_ connection_ statement_ mut - visit_
create_ connection_ type_ mut - visit_
create_ continual_ task_ statement_ mut - visit_
create_ continual_ task_ sugar_ mut - visit_
create_ database_ statement_ mut - visit_
create_ index_ statement_ mut - visit_
create_ materialized_ view_ statement_ mut - visit_
create_ network_ policy_ statement_ mut - visit_
create_ role_ statement_ mut - visit_
create_ schema_ statement_ mut - visit_
create_ secret_ statement_ mut - visit_
create_ sink_ connection_ mut - visit_
create_ sink_ option_ mut - visit_
create_ sink_ option_ name_ mut - visit_
create_ sink_ statement_ mut - visit_
create_ source_ connection_ mut - visit_
create_ source_ option_ mut - visit_
create_ source_ option_ name_ mut - visit_
create_ source_ statement_ mut - visit_
create_ subsource_ option_ mut - visit_
create_ subsource_ option_ name_ mut - visit_
create_ subsource_ statement_ mut - visit_
create_ table_ from_ source_ statement_ mut - visit_
create_ table_ statement_ mut - visit_
create_ type_ as_ mut - visit_
create_ type_ list_ option_ mut - visit_
create_ type_ list_ option_ name_ mut - visit_
create_ type_ map_ option_ mut - visit_
create_ type_ map_ option_ name_ mut - visit_
create_ type_ statement_ mut - visit_
create_ view_ statement_ mut - visit_
create_ webhook_ source_ body_ mut - visit_
create_ webhook_ source_ check_ mut - visit_
create_ webhook_ source_ check_ options_ mut - visit_
create_ webhook_ source_ filter_ header_ mut - visit_
create_ webhook_ source_ header_ mut - visit_
create_ webhook_ source_ include_ headers_ mut - visit_
create_ webhook_ source_ map_ header_ mut - visit_
create_ webhook_ source_ secret_ mut - visit_
create_ webhook_ source_ statement_ mut - visit_
csr_ config_ option_ mut - visit_
csr_ config_ option_ name_ mut - visit_
csr_ connection_ avro_ mut - visit_
csr_ connection_ mut - visit_
csr_ connection_ protobuf_ mut - visit_
csr_ seed_ avro_ mut - visit_
csr_ seed_ protobuf_ mut - visit_
csr_ seed_ protobuf_ schema_ mut - visit_
csv_ columns_ mut - visit_
cte_ block_ mut - visit_
cte_ id_ mut - visit_
cte_ mut - visit_
cte_ mut_ rec_ column_ def_ mut - visit_
cte_ mut_ rec_ mut - visit_
data_ type_ mut - visit_
database_ name_ mut - visit_
date_ time_ field_ mut - visit_
deallocate_ statement_ mut - visit_
declare_ statement_ mut - visit_
deferred_ item_ name_ mut - visit_
delete_ statement_ mut - visit_
discard_ statement_ mut - visit_
discard_ target_ mut - visit_
distinct_ mut - visit_
doc_ on_ identifier_ mut - visit_
doc_ on_ schema_ mut - visit_
drop_ objects_ statement_ mut - visit_
drop_ owned_ statement_ mut - visit_
execute_ statement_ mut - visit_
explain_ analyze_ computation_ property_ mut - visit_
explain_ analyze_ property_ mut - visit_
explain_ analyze_ statement_ mut - visit_
explain_ format_ mut - visit_
explain_ plan_ option_ mut - visit_
explain_ plan_ option_ name_ mut - visit_
explain_ plan_ statement_ mut - visit_
explain_ pushdown_ statement_ mut - visit_
explain_ sink_ schema_ for_ mut - visit_
explain_ sink_ schema_ statement_ mut - visit_
explain_ stage_ mut - visit_
explain_ timestamp_ statement_ mut - visit_
explainee_ mut - visit_
expr_ mut - visit_
external_ reference_ export_ mut - visit_
external_ references_ mut - visit_
fetch_ direction_ mut - visit_
fetch_ option_ mut - visit_
fetch_ option_ name_ mut - visit_
fetch_ statement_ mut - visit_
format_ mut - visit_
format_ specifier_ mut - visit_
function_ args_ mut - visit_
function_ mut - visit_
grant_ privileges_ statement_ mut - visit_
grant_ role_ statement_ mut - visit_
grant_ target_ all_ specification_ mut - visit_
grant_ target_ specification_ inner_ mut - visit_
grant_ target_ specification_ mut - visit_
homogenizing_ function_ mut - visit_
ident_ error_ mut - visit_
ident_ mut - visit_
if_ exists_ behavior_ mut - visit_
index_ option_ mut - visit_
index_ option_ name_ mut - visit_
insert_ source_ mut - visit_
insert_ statement_ mut - visit_
inspect_ shard_ statement_ mut - visit_
interval_ value_ mut - visit_
is_ expr_ construct_ mut - visit_
item_ name_ mut - visit_
join_ constraint_ mut - visit_
join_ mut - visit_
join_ operator_ mut - visit_
kafka_ broker_ aws_ privatelink_ mut - visit_
kafka_ broker_ aws_ privatelink_ option_ mut - visit_
kafka_ broker_ aws_ privatelink_ option_ name_ mut - visit_
kafka_ broker_ mut - visit_
kafka_ broker_ tunnel_ mut - visit_
kafka_ sink_ config_ option_ mut - visit_
kafka_ sink_ config_ option_ name_ mut - visit_
kafka_ sink_ key_ mut - visit_
kafka_ source_ config_ option_ mut - visit_
kafka_ source_ config_ option_ name_ mut - visit_
key_ constraint_ mut - visit_
limit_ mut - visit_
load_ generator_ mut - visit_
load_ generator_ option_ mut - visit_
load_ generator_ option_ name_ mut - visit_
map_ entry_ mut - visit_
materialized_ view_ option_ mut - visit_
materialized_ view_ option_ name_ mut - visit_
mut_ rec_ block_ mut - visit_
mut_ rec_ block_ option_ mut - visit_
mut_ rec_ block_ option_ name_ mut - visit_
my_ sql_ config_ option_ mut - visit_
my_ sql_ config_ option_ name_ mut - visit_
named_ plan_ mut - visit_
nested_ statement_ mut - visit_
network_ policy_ name_ mut - visit_
network_ policy_ option_ mut - visit_
network_ policy_ option_ name_ mut - visit_
network_ policy_ rule_ definition_ mut - visit_
network_ policy_ rule_ option_ mut - visit_
network_ policy_ rule_ option_ name_ mut - visit_
notice_ severity_ mut - visit_
object_ name_ mut - visit_
object_ type_ mut - visit_
op_ mut - visit_
order_ by_ expr_ mut - visit_
pg_ config_ option_ mut - visit_
pg_ config_ option_ name_ mut - visit_
prepare_ statement_ mut - visit_
privilege_ mut - visit_
privilege_ specification_ mut - visit_
protobuf_ schema_ mut - visit_
qualified_ replica_ mut - visit_
query_ mut - visit_
raise_ statement_ mut - visit_
reader_ schema_ selection_ strategy_ mut - visit_
reassign_ owned_ statement_ mut - visit_
refresh_ at_ option_ value_ mut - visit_
refresh_ every_ option_ value_ mut - visit_
refresh_ option_ value_ mut - visit_
replica_ definition_ mut - visit_
replica_ option_ mut - visit_
replica_ option_ name_ mut - visit_
reset_ variable_ statement_ mut - visit_
revoke_ privileges_ statement_ mut - visit_
revoke_ role_ statement_ mut - visit_
role_ attribute_ mut - visit_
role_ name_ mut - visit_
rollback_ statement_ mut - visit_
schema_ mut - visit_
schema_ name_ mut - visit_
select_ item_ mut - visit_
select_ mut - visit_
select_ option_ mut - visit_
select_ option_ name_ mut - visit_
select_ statement_ mut - visit_
set_ expr_ mut - visit_
set_ operator_ mut - visit_
set_ role_ var_ mut - visit_
set_ transaction_ statement_ mut - visit_
set_ variable_ statement_ mut - visit_
set_ variable_ to_ mut - visit_
set_ variable_ value_ mut - visit_
show_ columns_ statement_ mut - visit_
show_ create_ cluster_ statement_ mut - visit_
show_ create_ connection_ statement_ mut - visit_
show_ create_ index_ statement_ mut - visit_
show_ create_ materialized_ view_ statement_ mut - visit_
show_ create_ sink_ statement_ mut - visit_
show_ create_ source_ statement_ mut - visit_
show_ create_ table_ statement_ mut - visit_
show_ create_ view_ statement_ mut - visit_
show_ object_ type_ mut - visit_
show_ objects_ statement_ mut - visit_
show_ statement_ filter_ mut - visit_
show_ statement_ mut - visit_
show_ variable_ statement_ mut - visit_
sink_ envelope_ mut - visit_
source_ envelope_ mut - visit_
source_ error_ policy_ mut - visit_
source_ include_ metadata_ mut - visit_
sql_ server_ config_ option_ mut - visit_
sql_ server_ config_ option_ name_ mut - visit_
start_ transaction_ statement_ mut - visit_
statement_ mut - visit_
subscribe_ option_ mut - visit_
subscribe_ option_ name_ mut - visit_
subscribe_ output_ mut - visit_
subscribe_ relation_ mut - visit_
subscribe_ statement_ mut - visit_
subscript_ position_ mut - visit_
system_ object_ type_ mut - visit_
table_ alias_ mut - visit_
table_ constraint_ mut - visit_
table_ factor_ mut - visit_
table_ from_ source_ columns_ mut - visit_
table_ from_ source_ option_ mut - visit_
table_ from_ source_ option_ name_ mut - visit_
table_ option_ mut - visit_
table_ option_ name_ mut - visit_
table_ with_ joins_ mut - visit_
target_ role_ specification_ mut - visit_
transaction_ access_ mode_ mut - visit_
transaction_ isolation_ level_ mut - visit_
transaction_ mode_ mut - visit_
unresolved_ database_ name_ mut - visit_
unresolved_ item_ name_ mut - visit_
unresolved_ object_ name_ mut - visit_
unresolved_ schema_ name_ mut - visit_
update_ statement_ mut - visit_
validate_ connection_ statement_ mut - visit_
value_ error_ mut - visit_
value_ mut - visit_
values_ mut - visit_
version_ mut - visit_
view_ definition_ mut - visit_
window_ frame_ bound_ mut - visit_
window_ frame_ mut - visit_
window_ frame_ units_ mut - visit_
window_ spec_ mut - visit_
with_ option_ value_ mut