17 var expr =
cVarOrDeref( FB_VAREXPROPT_NOARRAYCHECK )
18 if( expr = NULL )
then
23 if( astIsNIDXARRAY( expr ) )
then
24 var expr2 = astGetLeft( expr )
30 var s = astGetSymbol( expr )
41 if( typeIsConst( astGetFullType( expr ) ) )
then
42 errReport( FB_ERRMSG_CONSTANTCANTBECHANGED )
47 if( symbGetIsDynamic( s ) )
then
56 loop while(
hMatch( CHAR_COMMA ) )
63 byval t
as ASTNODE
ptr, _
64 byref expr
as ASTNODE
ptr _
79 astGetSubtype( expr ) )
102 errReport( FB_ERRMSG_CONSTANTCANTBECHANGED, TRUE )
109 errReport( FB_ERRMSG_EXPECTEDIDENTIFIER )
116 errReport( FB_ERRMSG_CONSTANTCANTBECHANGED, TRUE )
119 dim as integer ldtype = astGetDataType( l )
120 dim as integer rdtype = astGetDataType( r )
123 case FB_DATATYPE_STRING, FB_DATATYPE_FIXSTR, FB_DATATYPE_CHAR
125 case FB_DATATYPE_STRING, FB_DATATYPE_FIXSTR, FB_DATATYPE_CHAR
133 if( ldtype = FB_DATATYPE_WCHAR )
then
134 if( rdtype = FB_DATATYPE_WCHAR )
then
152 if( (ldtype = FB_DATATYPE_STRUCT)
or (rdtype = FB_DATATYPE_STRUCT) )
then
154 assert( ldtype = FB_DATATYPE_STRUCT )
155 assert( rdtype = FB_DATATYPE_STRUCT )
156 assert( astGetSubtype( l ) = astGetSubtype( r ) )
176 dim as integer use_pushpop = TRUE
177 use_pushpop
and= (env.clopt.backend = FB_BACKEND_GAS)
178 use_pushpop
and= (typeGetSize( ldtype ) = typeGetSize( rdtype ))
179 use_pushpop
and= (typeGetClass( ldtype ) = typeGetClass( rdtype ))
180 use_pushpop
and= (astIsBITFIELD( l ) = FALSE)
181 use_pushpop
and= (astIsBITFIELD( r ) = FALSE)
185 dim as ASTNODE
ptr t = NULL
196 if( use_pushpop )
then
207 var temp =
symbAddTempVar( astGetFullType( l ), astGetSubtype( l ) )
226 dim as ASTNODE
ptr arrayexpr =
any, dimexpr =
any
227 dim as FBSYMBOL
ptr s =
any
233 case FB_TK_LBOUND, FB_TK_UBOUND
240 arrayexpr =
cVarOrDeref( FB_VAREXPROPT_NOARRAYCHECK )
241 if( arrayexpr = NULL )
then
242 errReport( FB_ERRMSG_EXPECTEDIDENTIFIER )
249 if( astIsNIDXARRAY( arrayexpr ) )
then
250 dim as ASTNODE
ptr expr = astGetLeft( arrayexpr )
256 s = astGetSymbol( arrayexpr )
264 errReport( FB_ERRMSG_EXPECTEDARRAY, TRUE )
271 if(
hMatch( CHAR_COMMA ) )
then
272 hMatchExpressionEx( dimexpr, FB_DATATYPE_INTEGER )