qr{ (?(DEFINE) (? (?&number) | (?&expr) \s+ (&unary_op) | (?&expr) \s+ (?&expr) \s+ (&binary_op) ) (? \d+ (?: [.] \d* )? | [.] \d+ ) (? (?: chs | abs | sqr | sqrt | sin | cos | tan ) ) (? [-+/*^] ) ) \A \s* (?&expr) \s* \z }msx;