Expand expression desugaring
This commit is contained in:
parent
13b7db79b0
commit
8278442d3f
3 changed files with 81 additions and 1 deletions
|
|
@ -1,2 +1,3 @@
|
||||||
mod basic;
|
mod basic;
|
||||||
|
mod expr;
|
||||||
mod program;
|
mod program;
|
||||||
|
|
|
||||||
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) {
|
pub fn desugar(self) -> (Self, bool) {
|
||||||
match self {
|
match self {
|
||||||
Self::Expr { s0, expr, s1, span } => {
|
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)
|
(Self::Expr { s0, expr, s1, span }, desugared)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue