Expand expression desugaring
This commit is contained in:
parent
13b7db79b0
commit
8278442d3f
3 changed files with 81 additions and 1 deletions
79
src/desugar/expr.rs
Normal file
79
src/desugar/expr.rs
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
use crate::ast::Expr;
|
||||
|
||||
impl Expr {
|
||||
pub fn desugar(self) -> (Self, bool) {
|
||||
match self {
|
||||
Self::Lit(lit) => (Self::Lit(lit), false), // TODO Implement
|
||||
Self::Call(call) => (Self::Call(call), false), // TODO Implement
|
||||
Self::Field(field) => (Self::Field(field), false), // TODO Implement
|
||||
Self::Var(var) => (Self::Var(var), false), // TODO Implement
|
||||
Self::TableConstr(constr) => (Self::TableConstr(constr), false), // TODO Implement
|
||||
Self::TableDestr(destr) => (Self::TableDestr(destr), false), // TODO Implement
|
||||
Self::FuncDef(def) => (Self::FuncDef(def), false), // TODO Implement
|
||||
|
||||
Self::Paren {
|
||||
s0,
|
||||
inner,
|
||||
s1,
|
||||
span,
|
||||
} => (
|
||||
Self::Paren {
|
||||
s0,
|
||||
inner,
|
||||
s1,
|
||||
span,
|
||||
},
|
||||
false,
|
||||
), // TODO Implement
|
||||
|
||||
Self::Neg {
|
||||
minus,
|
||||
s0,
|
||||
expr,
|
||||
span,
|
||||
} => (
|
||||
Self::Neg {
|
||||
minus,
|
||||
s0,
|
||||
expr,
|
||||
span,
|
||||
},
|
||||
false,
|
||||
), // TODO Implement
|
||||
|
||||
Self::Not {
|
||||
not,
|
||||
s0,
|
||||
expr,
|
||||
span,
|
||||
} => (
|
||||
Self::Not {
|
||||
not,
|
||||
s0,
|
||||
expr,
|
||||
span,
|
||||
},
|
||||
false,
|
||||
), // TODO Implement
|
||||
|
||||
Self::BinOp {
|
||||
left,
|
||||
s0,
|
||||
op,
|
||||
s1,
|
||||
right,
|
||||
span,
|
||||
} => (
|
||||
Self::BinOp {
|
||||
left,
|
||||
s0,
|
||||
op,
|
||||
s1,
|
||||
right,
|
||||
span,
|
||||
},
|
||||
false,
|
||||
), // TODO Implement
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -5,7 +5,7 @@ impl Program {
|
|||
pub fn desugar(self) -> (Self, bool) {
|
||||
match self {
|
||||
Self::Expr { s0, expr, s1, span } => {
|
||||
let (expr, desugared) = (expr, false); // TODO Implement
|
||||
let (expr, desugared) = expr.desugar();
|
||||
(Self::Expr { s0, expr, s1, span }, desugared)
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue