Rip out objects

This commit is contained in:
Dane Johnson 2024-11-13 10:43:00 -06:00
parent 25fe7933f2
commit 0524efef03

View File

@ -20,7 +20,6 @@ pub enum Expr {
Mult(Box<Expr>, Box<Expr>),
Div(Box<Expr>, Box<Expr>),
Block(Vec<Stmt>),
Object(Vec<Stmt>),
}
#[derive(Debug,PartialEq,Clone)]
@ -69,7 +68,6 @@ peg::parser! {
f:funcall() { f }
f:funcdef() { f }
b:boolean() _ { Expr::Atom(Atom::Bool(b)) }
o:object() { o }
i:id() _ { Expr::Id(i) }
n:num() _ { Expr::Atom(Atom::Num(n)) }
@ -89,9 +87,6 @@ peg::parser! {
= i:id()? "->" _ e:(expr() / block()) { Expr::Funcdef(i, Box::new(e)) }
rule conditional() -> Stmt
= i:_if() __* ei:elif()* __* e:_else()? __* { Stmt::Conditional([vec![i], ei].concat(), e) }
rule object() -> Expr
= "{" _ stop() indent() __* a:assignment()+ dedent() __* "}" _ { Expr::Object(a) }
rule _if() -> GuardedBlock
= "if" _ g:expr() b:block() {
GuardedBlock {
@ -344,22 +339,6 @@ else
)];
assert_eq!(deelang_parser::program(prgm).unwrap(), expected);
}
#[test]
fn test_object() {
let prgm = r"fruit <- {
>>>apple <- 1
pear <- 2
<<<
}";
let expected = vec![Stmt::Assignment(
"fruit".to_string(),
Expr::Object(vec![
Stmt::Assignment("apple".to_string(), Expr::Atom(Atom::Num(1.0))),
Stmt::Assignment("pear".to_string(), Expr::Atom(Atom::Num(2.0))),
]),
)];
assert_eq!(deelang_parser::program(prgm).unwrap(), expected);
}
#[test]
fn test_preprocess() {