/* ===================================================================== Source: arr_expr.rule ===================================================================== */ arr_expr_e : OPEN_BRACKET arr_expr_e CLOSE_BRACKET { $$=A4GL_new_expr_simple_expr($2,ET_EXPR_BRACKET);} | arr_expr_e KW_PLUS arr_expr_e { $$=A4GL_new_op_expr($1,$3,ET_EXPR_OP_ADD,0); } | arr_expr_e KW_MINUS arr_expr_e { $$=A4GL_new_op_expr($1,$3,ET_EXPR_OP_SUB,0); } | arr_expr_e KW_MULTIPLY arr_expr_e { $$=A4GL_new_op_expr($1,$3,ET_EXPR_OP_MULT,0); } | arr_expr_e KW_DIVIDE arr_expr_e { $$=A4GL_new_op_expr($1,$3,ET_EXPR_OP_DIV,0); } | arr_expr_e KW_MOD arr_expr_e { $$=A4GL_new_op_expr($1,$3,ET_EXPR_OP_MOD,0); } | INT_VALUE { $$=A4GL_new_literal_long_str($1);} | arr_int_sign INT_VALUE { if ($1==ET_EXPR_OP_SUB) { SPRINTF1($$,"-%s",$2); } $$=A4GL_new_literal_long_str($$); } | member_fcall {$$=$1;} /* | variable_usage_expression OPEN_BRACKET opt_func_call_args CLOSE_BRACKET { struct variable *v; struct variable_usage *vu_top; char errbuff[256]; enum e_scope scope; vu_top=$1->expr_str_u.expr_variable_usage; v=find_variable_vu_ptr(errbuff, vu_top, &scope,0); $$=A4GL_new_expr_member_fcall($1,$3,A4GL_compiling_module_basename(),lastlineno,get_namespace($1)); inc_var_usage($$); } */ | variable_usage_expression { int a; char errbuff[256]; a=get_variable_dtype_from_variable_usage_expression(errbuff, $1); if (a==-1) { a4gl_yyerror(errbuff); YYERROR; } else { a=a&DTYPE_MASK; if (A4GL_isyes(acl_getenv("AUTOCASTSUBSCRIPT"))) { // @env AUTOCAST - Automatically cast Character strings to integers when used as subscripts if (a==DTYPE_CHAR) { make_cast(A4GL_compiling_module_basename(),lastlineno, $1,2,0,1); a=2; } } if (a!=DTYPE_INT&&a!=DTYPE_SMINT && a!=DTYPE_SERIAL && a!=90) { a4gl_yyerror("Only INTEGER/SMALLINT variables may be used as subscripts"); YYERROR; /* error processing */; } } $$=$1; inc_var_usage($$); } | function_call_expr { $$=$1; } ; arr_int_sign : KW_PLUS {$$=ET_EXPR_OP_ADD;} | KW_MINUS {$$=ET_EXPR_OP_SUB;} ;