diff --git a/Cargo.lock b/Cargo.lock index 0216164..8656bd0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -261,7 +261,7 @@ checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" [[package]] name = "mindustry_logic_bang_lang" -version = "0.6.1" +version = "0.6.2" dependencies = [ "lalrpop", "lalrpop-util", diff --git a/Cargo.toml b/Cargo.toml index 43aa3d7..8e691b9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "mindustry_logic_bang_lang" -version = "0.6.1" +version = "0.6.2" edition = "2021" authors = ["A4-Tacks "] diff --git a/src/syntax.rs b/src/syntax.rs index 62defef..d3ca780 100644 --- a/src/syntax.rs +++ b/src/syntax.rs @@ -1365,6 +1365,15 @@ mod tests { [r#"goto :a ! x;"#, r#"goto :a x == false;"#], [r#"goto :a ! _;"#, r#"goto :a 0 != 0;"#], [r#"goto :a lnot _;"#, r#"goto :a 0 != 0;"#], + // 多次取反 + [r#"goto :a !!! x == y;"#, r#"goto :a x != y;"#], + [r#"goto :a !!! x != y;"#, r#"goto :a x == y;"#], + [r#"goto :a !!! x < y;"#, r#"goto :a x >= y;"#], + [r#"goto :a !!! x > y;"#, r#"goto :a x <= y;"#], + [r#"goto :a !!! x <= y;"#, r#"goto :a x > y;"#], + [r#"goto :a !!! x >= y;"#, r#"goto :a x < y;"#], + [r#"goto :a !!! x;"#, r#"goto :a x == false;"#], + [r#"goto :a !!! _;"#, r#"goto :a 0 != 0;"#], ]; for [src, dst] in datas { assert_eq!( diff --git a/src/syntax_def.lalrpop b/src/syntax_def.lalrpop index 24a57d3..3c6fb88 100644 --- a/src/syntax_def.lalrpop +++ b/src/syntax_def.lalrpop @@ -112,7 +112,7 @@ JumpCmpBody: JumpCmp = { pub JumpCmp: JumpCmp = { JumpCmpBody, - Or<"lnot", "!"> => <>.reverse(), + Or<"lnot", "!"> => <>.reverse(), } pub Op: Op = {