дерево вида:
enum Statement {
Analyze {
table_name: ObjectName,
partitions: Option<Vec<Expr>>,
....
},
Truncate {
table_name: ObjectName,
partitions: Option<Vec<Expr>>,
},
Query(Query),
}
pub struct Query {
pub body: SetExpr,
pub order_by: Vec<OrderByExpr>,
...
}
...
Я разбираю текст на входе и получаю ast кусок которого описан выше (получаю именно Statement) .
Вопрос в том есть ли способ написать к Statement итератор, который бы обходил это дерево?
Насколько я понял итератор можно сделать только для одного типа а не их иерархии...
Подскажите насчёт итератора плиз
Это скорее будет Visitor, наверн
а что он должен возвращать?
бтв а зачем Option<Vec<Expr>>? Пустой вектор недостаточно пустой? Или это эмуляция undefined/null?
Реализация не моя а из https://github.com/sqlparser-rs/sqlparser-rs
Обсуждают сегодня