diff --git a/src/build/opcode/test.rs b/src/build/opcode/test.rs index 3740824..c16e360 100644 --- a/src/build/opcode/test.rs +++ b/src/build/opcode/test.rs @@ -559,3 +559,11 @@ fn simple_binary_expr() { //"true && false;" => P(Bool(false)), ) } + +#[test] +fn simple_not_expr() { + assert_parse_cases!( + "not 1==1;" => P(Bool(false)), + "not 1!=1;" => P(Bool(true)), + ) +} diff --git a/src/build/opcode/translate.rs b/src/build/opcode/translate.rs index 783ac02..bc9b206 100644 --- a/src/build/opcode/translate.rs +++ b/src/build/opcode/translate.rs @@ -105,7 +105,10 @@ impl AST { Expression::Import(_) => unimplemented!("Import expressions are not implmented yet"), Expression::Include(_) => unimplemented!("Include expressions are not implmented yet"), Expression::Module(_) => unimplemented!("Module expressions are not implmented yet"), - Expression::Not(_) => unimplemented!("Not expressions are not implmented yet"), + Expression::Not(def) => { + Self::translate_expr(*def.expr, &mut ops); + ops.push(Op::Not); + } Expression::Range(_) => unimplemented!("Range expressions are not implmented yet"), Expression::Select(_) => unimplemented!("Select expressions are not implmented yet"), Expression::Call(_) => unimplemented!("Call expressions are not implmented yet"),