I did add a new math expression format to the compiler. The old way did only support one calculation per bracket:

((a b +) c =)
(((a b +)(c d *) +) x =)

Or this form:

{x = (a + b) + (c * d)}

The new one has the target variable on the right side:

((a + b) + (c * d) x :=)

Note: you have to use the := as assign operator.

Here is a full example:

// math-test-right-assign.l1com - Brackets - new math expression test
//
//
#include <intr-func.l1h>
(main func)
    (set int64 1 zero 0)
    (set int64 1 xd 23)
    (set int64 1 yd 42)
    (set int64 1 zd 0)
    (set int64 1 zerod 0)
    (set int64 1 i 0)
    (set int64 1 f 0)
    (set string s messagestr "xd < yd and xd > 0")
    // new math expression:
    ((xd < yd) && (xd > zerod) i :=)
    (i :print_i !)
    (:print_n !)
    (i if)
        (messagestr :print_s !)
        (:print_n !)
    (endif)
    (xd * yd zd :=)
    (zd :print_i !)
    (:print_n !)
    (zero :exit !)
(funcend)

Here is the output:

$ l1vm prog/math-test-right-assign -q
1
xd < yd and xd > 0
966

Have fun!