id,summary,reporter,owner,description,type,status,priority,milestone,component,version,resolution,keywords,cc,cpu,platform 2770,r.mapcalc reports syntax error for valid script but no error for separate expressions,marisn,grass-dev@…,"Seems that r.mapcalc doesn't like some sequences of valid expressions. Following examples show the same expressions copy/pasted into interactive r.mapcalc session all together and one by one. Notice - same syntax once causes ""syntax error"" but no ""syntax error"" is generated if execution happens to be performed on a separate r.mapcalc process. {{{ r.mapcalc --overwrite Enter expressions, ""end"" when done. mapcalc> speed_up = if(speed < 5, speed + 1, speed) mapcalc> max_speed = if( !isnull(speed[0,1]), 0,\ mapcalc> if( !isnull(speed[0,2]), 1,\ mapcalc> if( !isnull(speed[0,3]), 2,\ mapcalc> if( !isnull(speed[0,4]), 3,\ mapcalc> if( !isnull(speed[0,5]), 4, 5))))) mapcalc> res_speed = if(speed_up > max_speed, max_speed, speed_up) mapcalc> moved = if( res_speed[0, 0] == 0, 0,\ syntax error, unexpected '[', expecting ')' mapcalc> if( res_speed[0,-1] == 1, 1,\ mapcalc> if( res_speed[0,-2] == 2, 2,\ mapcalc> if( res_speed[0,-3] == 3, 3,\ mapcalc> if( res_speed[0,-4] == 4, 4,\ mapcalc> if( res_speed[0,-5] == 5, 5, null())))))) mapcalc> end Parse error }}} {{{ r.mapcalc --overwrite Enter expressions, ""end"" when done. mapcalc> speed_up = if(speed < 5, speed + 1, speed) mapcalc> end 100% GRASS 7.1.svn (xy_loc):~/soft/grass_trunk > r.mapcalc --overwrite Enter expressions, ""end"" when done. mapcalc> max_speed = if( !isnull(speed[0,1]), 0,\ mapcalc> if( !isnull(speed[0,2]), 1,\ mapcalc> if( !isnull(speed[0,3]), 2,\ mapcalc> if( !isnull(speed[0,4]), 3,\ mapcalc> if( !isnull(speed[0,5]), 4, 5))))) mapcalc> end 100% GRASS 7.1.svn (xy_loc):~/soft/grass_trunk > r.mapcalc --overwrite Enter expressions, ""end"" when done. mapcalc> res_speed = if(speed_up > max_speed, max_speed, speed_up) mapcalc> end 100% GRASS 7.1.svn (xy_loc):~/soft/grass_trunk > r.mapcalc --overwrite Enter expressions, ""end"" when done. mapcalc> moved = if( res_speed[0, 0] == 0, 0,\ mapcalc> if( res_speed[0,-1] == 1, 1,\ mapcalc> if( res_speed[0,-2] == 2, 2,\ mapcalc> if( res_speed[0,-3] == 3, 3,\ mapcalc> if( res_speed[0,-4] == 4, 4,\ mapcalc> if( res_speed[0,-5] == 5, 5, null())))))) mapcalc> end 100% }}} ",defect,closed,normal,7.0.4,Raster,svn-trunk,fixed,r.mapcalc,,Unspecified,Unspecified