The following currently triggers parser errors, but should probably work:
type a as zstring * iif(1 = 1, 1, 1)
type b as zstring * len(str(1 = 1))
I think it's related to the special handling of '=' vs. parentheses in the N expression of STRING * N. Normal parentheses are handled and '=' is allowed inside them, but the parentheses of iif() and other such "functions" are handled differently.
It also happens with
>:The simplest solution might be to ditch the
parser.optionsflags, and pass down aflagsparameter throughcExpression()->cBoolExpression()->cLogExpression()->cLogOrExpression()->cLogAndExpression()->cRelExpression().Actually the lexer uses
fbGetGtInParensOnly( )to prevent mis-parsing '>=' in e.g.a as integer<32>=1..So the above suggestion would require either: