;; conditional (@if a (@then a is true) (@else a is false)) (@if b (@then b is true) (@else b is false)) (@if a (@then a is true)) (@if b (@then b is true)) ;; nested conditionals (@if a (@then (@if b (@then a and b are true) (@else a is true and b is false))) (@else (@if b (@then a is false and b is true) (@else a and b are false)))) ;; not (@if (not a) (@then a is false)) (@if (not b) (@then b is false)) ;; and (@if (and) (@then true)) (@if (and a) (@then a is true)) (@if (and b) (@then b is true)) (@if (and a b) (@then a and b are true)) (@if (and a (not b)) (@then a is true and b is false)) (@if (and (not a) b) (@then a is false and b is true)) (@if (and (not a) (not b)) (@then a and b are false)) ;; or (@if (or) (@then false)) (@if (or a) (@then a is true)) (@if (or b) (@then b is true)) (@if (or a b) (@then a or b is true)) (@if (or a (not b)) (@then a is true or b is false)) (@if (or (not a) b) (@then a is false or b is true)) (@if (or (not a) (not b)) (@then a or b is false)) ;; strings (@if (= "\n" "\0a") (@then newline)) (@if (= "\'" "'") (@then quote)) ;; string comparisons (@if (= c "1") (@then c is 1)) (@if (= c "2") (@then c is 2)) (@if (<> c "1") (@then c is not 1)) (@if (<> c "2") (@then c is not 2)) ;; version comparisons (@if (= (4 1 1) (4 1 0)) (@then (4 1 1) = (4 1 0))) (@if (= (4 1 1) (4 1 1)) (@then (4 1 1) = (4 1 1))) (@if (= (4 1 1) (4 1 2)) (@then (4 1 1) = (4 1 2))) (@if (<> (4 1 1) (4 1 0)) (@then (4 1 1) <> (4 1 0))) (@if (<> (4 1 1) (4 1 1)) (@then (4 1 1) <> (4 1 1))) (@if (<> (4 1 1) (4 1 2)) (@then (4 1 1) <> (4 1 2))) (@if (<= (4 1 1) (4 1 0)) (@then (4 1 1) <= (4 1 0))) (@if (<= (4 1 1) (4 1 1)) (@then (4 1 1) <= (4 1 1))) (@if (<= (4 1 1) (4 1 2)) (@then (4 1 1) <= (4 1 2))) (@if (>= (4 1 1) (4 1 0)) (@then (4 1 1) >= (4 1 0))) (@if (>= (4 1 1) (4 1 1)) (@then (4 1 1) >= (4 1 1))) (@if (>= (4 1 1) (4 1 2)) (@then (4 1 1) >= (4 1 2))) (@if (> (4 1 1) (4 1 0)) (@then (4 1 1) > (4 1 0))) (@if (> (4 1 1) (4 1 1)) (@then (4 1 1) > (4 1 1))) (@if (> (4 1 1) (4 1 2)) (@then (4 1 1) > (4 1 2))) ;; version comparisons: lexicographic order (@if (< (4 1 1) (4 1 0)) (@then (4 1 1) < (4 1 0))) (@if (< (4 1 1) (4 1 1)) (@then (4 1 1) < (4 1 1))) (@if (< (4 1 1) (4 1 2)) (@then (4 1 1) < (4 1 2))) (@if (< (4 1 1) (4 0 2)) (@then (4 1 1) < (4 0 2))) (@if (< (4 1 1) (4 2 0)) (@then (4 1 1) < (4 2 0))) (@if (< (4 1 1) (5 0 1)) (@then (4 1 1) < (5 0 1))) (@if (< (4 1 1) (3 2 1)) (@then (4 1 1) < (3 2 1))) ;; strings (@string $s "abcd") (@string "abcd") (@string "\\\'\28\n") (@if (and) (@then (@string "abcd"))) (@if (or) (@then) (@else (@string "abcd"))) ;; chars (@string "0") (@string "\n")