OSDN Git Service

upgrade to 3.6.2
[jnethack/source.git] / sys / share / lev_yacc.c
index 19b4232..b6ac4d9 100644 (file)
@@ -11,7 +11,7 @@
 #define yyerrok (yyerrflag=0)
 #define YYRECOVERING (yyerrflag!=0)
 #define YYPREFIX "yy"
-/* NetHack 3.6  lev_comp.y     $NHDT-Date: 1455747019 2016/02/17 22:10:19 $  $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.22 $ */
+/* NetHack 3.6  lev_comp.y     $NHDT-Date: 1551901401 2019/03/06 19:43:21 $  $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.26 $ */
 /*      Copyright (c) 1989 by Jean-Christophe Collet */
 /* NetHack may be freely redistributed.  See license for details. */
 
@@ -126,7 +126,8 @@ int obj_containment = 0;
 
 int in_container_obj = 0;
 
-/* integer value is possibly an inconstant value (eg. dice notation or a variable) */
+/* integer value is possibly an inconstant value (eg. dice notation
+   or a variable) */
 int is_inconstant_number = 0;
 
 int in_switch_statement = 0;
@@ -139,7 +140,7 @@ int n_switch_case_list = 0;
 int allow_break_statements = 0;
 struct lc_breakdef *break_list = NULL;
 
-extern struct lc_vardefs *variable_definitions;
+extern struct lc_vardefs *vardefs; /* variable definitions */
 
 
 struct lc_vardefs *function_tmp_var_defs = NULL;
@@ -158,39 +159,39 @@ extern char curr_token[512];
 
 typedef union
 {
-       long    i;
-       char*   map;
-       struct {
-               long room;
-               long wall;
-               long door;
-       } corpos;
+    long    i;
+    char    *map;
     struct {
-       long area;
-       long x1;
-       long y1;
-       long x2;
-       long y2;
+        long room;
+        long wall;
+        long door;
+    } corpos;
+    struct {
+        long area;
+        long x1;
+        long y1;
+        long x2;
+        long y2;
     } lregn;
     struct {
-       long x;
-       long y;
+        long x;
+        long y;
     } crd;
     struct {
-       long ter;
-       long lit;
+        long ter;
+        long lit;
     } terr;
     struct {
-       long height;
-       long width;
+        long height;
+        long width;
     } sze;
     struct {
-       long die;
-       long num;
+        long die;
+        long num;
     } dice;
     struct {
-       long cfunc;
-       char *varstr;
+        long cfunc;
+        char *varstr;
     } meth;
 } YYSTYPE;
 #define CHAR 257
@@ -2605,21 +2606,22 @@ case 5:
 {
                        if (fatal_error > 0) {
                                (void) fprintf(stderr,
-                               "%s: %d errors detected for level \"%s\". No output created!\n",
+              "%s: %d errors detected for level \"%s\". No output created!\n",
                                               fname, fatal_error, yyvsp[-2].map);
                                fatal_error = 0;
                                got_errors++;
                        } else if (!got_errors) {
                                if (!write_level_file(yyvsp[-2].map, splev)) {
-                                   lc_error("Can't write output file for '%s'!", yyvsp[-2].map);
+                                    lc_error("Can't write output file for '%s'!",
+                                             yyvsp[-2].map);
                                    exit(EXIT_FAILURE);
                                }
                        }
                        Free(yyvsp[-2].map);
                        Free(splev);
                        splev = NULL;
-                       vardef_free_all(variable_definitions);
-                       variable_definitions = NULL;
+                       vardef_free_all(vardefs);
+                       vardefs = NULL;
                  }
 break;
 case 6:
@@ -2633,10 +2635,11 @@ case 7:
                      start_level_def(&splev, yyvsp[-2].map);
                      if (yyvsp[0].i == -1) {
                          add_opvars(splev, "iiiiiiiio",
-                                    VA_PASS9(LVLINIT_MAZEGRID,HWALL,0,0,
+                                    VA_PASS9(LVLINIT_MAZEGRID, HWALL, 0,0,
                                              0,0,0,0, SPO_INITLEVEL));
                      } else {
-                         long bg = what_map_char((char) yyvsp[0].i);
+                         int bg = (int) what_map_char((char) yyvsp[0].i);
+
                          add_opvars(splev, "iiiiiiiio",
                                     VA_PASS9(LVLINIT_SOLIDFILL, bg, 0,0,
                                              0,0,0,0, SPO_INITLEVEL));
@@ -2660,22 +2663,26 @@ case 9:
 break;
 case 10:
 {
-                     long filling = yyvsp[0].terr.ter;
+                     int filling = (int) yyvsp[0].terr.ter;
+
                      if (filling == INVALID_TYPE || filling >= MAX_TYPE)
                          lc_error("INIT_MAP: Invalid fill char type.");
                      add_opvars(splev, "iiiiiiiio",
-                                LVLINIT_SOLIDFILL,filling,0,(long)yyvsp[0].terr.lit, 0,0,0,0, SPO_INITLEVEL);
+                                VA_PASS9(LVLINIT_SOLIDFILL, filling,
+                                          0, (int) yyvsp[0].terr.lit,
+                                          0,0,0,0, SPO_INITLEVEL));
                      max_x_map = COLNO-1;
                      max_y_map = ROWNO;
                  }
 break;
 case 11:
 {
-                     long filling = what_map_char((char) yyvsp[0].i);
+                     int filling = (int) what_map_char((char) yyvsp[0].i);
+
                      if (filling == INVALID_TYPE || filling >= MAX_TYPE)
                          lc_error("INIT_MAP: Invalid fill char type.");
-                     add_opvars(splev, "iiiiiiiio",
-                                VA_PASS9(LVLINIT_MAZEGRID,filling,0,0,
+                      add_opvars(splev, "iiiiiiiio",
+                                VA_PASS9(LVLINIT_MAZEGRID, filling, 0,0,
                                          0,0,0,0, SPO_INITLEVEL));
                      max_x_map = COLNO-1;
                      max_y_map = ROWNO;
@@ -2690,13 +2697,14 @@ case 12:
 break;
 case 13:
 {
-                     long fg = what_map_char((char) yyvsp[-11].i);
-                     long bg = what_map_char((char) yyvsp[-9].i);
-                     long smoothed = yyvsp[-7].i;
-                     long joined = yyvsp[-5].i;
-                     long lit = yyvsp[-3].i;
-                     long walled = yyvsp[-1].i;
-                     long filling = yyvsp[0].i;
+                      int fg = (int) what_map_char((char) yyvsp[-11].i),
+                          bg = (int) what_map_char((char) yyvsp[-9].i);
+                      int smoothed = (int) yyvsp[-7].i,
+                          joined = (int) yyvsp[-5].i,
+                          lit = (int) yyvsp[-3].i,
+                          walled = (int) yyvsp[-1].i,
+                          filling = (int) yyvsp[0].i;
+
                      if (fg == INVALID_TYPE || fg >= MAX_TYPE)
                          lc_error("INIT_MAP: Invalid foreground type.");
                      if (bg == INVALID_TYPE || bg >= MAX_TYPE)
@@ -2708,8 +2716,8 @@ case 13:
                          lc_error("INIT_MAP: Invalid fill char type.");
 
                      add_opvars(splev, "iiiiiiiio",
-                                VA_PASS9(LVLINIT_MINES,filling,walled,lit,
-                                         joined,smoothed,bg,fg,
+                                VA_PASS9(LVLINIT_MINES, filling, walled, lit,
+                                         joined, smoothed, bg, fg,
                                          SPO_INITLEVEL));
                        max_x_map = COLNO-1;
                        max_y_map = ROWNO;
@@ -2753,7 +2761,8 @@ case 22:
 break;
 case 23:
 {
-                     add_opvars(splev, "io", VA_PASS2(yyvsp[0].i, SPO_LEVEL_FLAGS));
+                     add_opvars(splev, "io",
+                                 VA_PASS2((int) yyvsp[0].i, SPO_LEVEL_FLAGS));
                  }
 break;
 case 24:
@@ -2784,74 +2793,80 @@ break;
 case 96:
 {
                      struct lc_vardefs *vd;
-                     if ((vd = vardef_defined(variable_definitions, yyvsp[0].map, 1))) {
+
+                     if ((vd = vardef_defined(vardefs, yyvsp[0].map, 1))) {
                          if (!(vd->var_type & SPOVAR_ARRAY))
-                             lc_error("Trying to shuffle non-array variable '%s'", yyvsp[0].map);
-                     } else lc_error("Trying to shuffle undefined variable '%s'", yyvsp[0].map);
+                             lc_error("Trying to shuffle non-array variable '%s'",
+                                       yyvsp[0].map);
+                     } else
+                          lc_error("Trying to shuffle undefined variable '%s'",
+                                   yyvsp[0].map);
                      add_opvars(splev, "so", VA_PASS2(yyvsp[0].map, SPO_SHUFFLE_ARRAY));
                      Free(yyvsp[0].map);
                  }
 break;
 case 97:
 {
-                     variable_definitions = add_vardef_type(variable_definitions, yyvsp[-2].map, SPOVAR_INT);
+                     vardefs = add_vardef_type(vardefs, yyvsp[-2].map, SPOVAR_INT);
                      add_opvars(splev, "iso", VA_PASS3(0, yyvsp[-2].map, SPO_VAR_INIT));
                      Free(yyvsp[-2].map);
                  }
 break;
 case 98:
 {
-                     variable_definitions = add_vardef_type(variable_definitions, yyvsp[-4].map, SPOVAR_SEL);
+                     vardefs = add_vardef_type(vardefs, yyvsp[-4].map, SPOVAR_SEL);
                      add_opvars(splev, "iso", VA_PASS3(0, yyvsp[-4].map, SPO_VAR_INIT));
                      Free(yyvsp[-4].map);
                  }
 break;
 case 99:
 {
-                     variable_definitions = add_vardef_type(variable_definitions, yyvsp[-2].map, SPOVAR_STRING);
+                     vardefs = add_vardef_type(vardefs, yyvsp[-2].map, SPOVAR_STRING);
                      add_opvars(splev, "iso", VA_PASS3(0, yyvsp[-2].map, SPO_VAR_INIT));
                      Free(yyvsp[-2].map);
                  }
 break;
 case 100:
 {
-                     variable_definitions = add_vardef_type(variable_definitions, yyvsp[-4].map, SPOVAR_MAPCHAR);
+                     vardefs = add_vardef_type(vardefs, yyvsp[-4].map, SPOVAR_MAPCHAR);
                      add_opvars(splev, "iso", VA_PASS3(0, yyvsp[-4].map, SPO_VAR_INIT));
                      Free(yyvsp[-4].map);
                  }
 break;
 case 101:
 {
-                     variable_definitions = add_vardef_type(variable_definitions, yyvsp[-4].map, SPOVAR_MONST);
+                     vardefs = add_vardef_type(vardefs, yyvsp[-4].map, SPOVAR_MONST);
                      add_opvars(splev, "iso", VA_PASS3(0, yyvsp[-4].map, SPO_VAR_INIT));
                      Free(yyvsp[-4].map);
                  }
 break;
 case 102:
 {
-                     variable_definitions = add_vardef_type(variable_definitions, yyvsp[-4].map, SPOVAR_OBJ);
+                     vardefs = add_vardef_type(vardefs, yyvsp[-4].map, SPOVAR_OBJ);
                      add_opvars(splev, "iso", VA_PASS3(0, yyvsp[-4].map, SPO_VAR_INIT));
                      Free(yyvsp[-4].map);
                  }
 break;
 case 103:
 {
-                     variable_definitions = add_vardef_type(variable_definitions, yyvsp[-2].map, SPOVAR_COORD);
+                     vardefs = add_vardef_type(vardefs, yyvsp[-2].map, SPOVAR_COORD);
                      add_opvars(splev, "iso", VA_PASS3(0, yyvsp[-2].map, SPO_VAR_INIT));
                      Free(yyvsp[-2].map);
                  }
 break;
 case 104:
 {
-                     variable_definitions = add_vardef_type(variable_definitions, yyvsp[-2].map, SPOVAR_REGION);
+                     vardefs = add_vardef_type(vardefs, yyvsp[-2].map, SPOVAR_REGION);
                      add_opvars(splev, "iso", VA_PASS3(0, yyvsp[-2].map, SPO_VAR_INIT));
                      Free(yyvsp[-2].map);
                  }
 break;
 case 105:
 {
-                     long n_items = yyvsp[-1].i;
-                     variable_definitions = add_vardef_type(variable_definitions, yyvsp[-4].map, SPOVAR_INT|SPOVAR_ARRAY);
+                     int n_items = (int) yyvsp[-1].i;
+
+                     vardefs = add_vardef_type(vardefs, yyvsp[-4].map,
+                                                SPOVAR_INT | SPOVAR_ARRAY);
                      add_opvars(splev, "iso",
                                 VA_PASS3(n_items, yyvsp[-4].map, SPO_VAR_INIT));
                      Free(yyvsp[-4].map);
@@ -2859,8 +2874,10 @@ case 105:
 break;
 case 106:
 {
-                     long n_items = yyvsp[-1].i;
-                     variable_definitions = add_vardef_type(variable_definitions, yyvsp[-4].map, SPOVAR_COORD|SPOVAR_ARRAY);
+                     int n_items = (int) yyvsp[-1].i;
+
+                     vardefs = add_vardef_type(vardefs, yyvsp[-4].map,
+                                                SPOVAR_COORD | SPOVAR_ARRAY);
                      add_opvars(splev, "iso",
                                 VA_PASS3(n_items, yyvsp[-4].map, SPO_VAR_INIT));
                      Free(yyvsp[-4].map);
@@ -2868,8 +2885,10 @@ case 106:
 break;
 case 107:
 {
-                     long n_items = yyvsp[-1].i;
-                     variable_definitions = add_vardef_type(variable_definitions, yyvsp[-4].map, SPOVAR_REGION|SPOVAR_ARRAY);
+                      int n_items = (int) yyvsp[-1].i;
+
+                     vardefs = add_vardef_type(vardefs, yyvsp[-4].map,
+                                                SPOVAR_REGION | SPOVAR_ARRAY);
                      add_opvars(splev, "iso",
                                 VA_PASS3(n_items, yyvsp[-4].map, SPO_VAR_INIT));
                      Free(yyvsp[-4].map);
@@ -2877,8 +2896,10 @@ case 107:
 break;
 case 108:
 {
-                     long n_items = yyvsp[-1].i;
-                     variable_definitions = add_vardef_type(variable_definitions, yyvsp[-6].map, SPOVAR_MAPCHAR|SPOVAR_ARRAY);
+                      int n_items = (int) yyvsp[-1].i;
+
+                     vardefs = add_vardef_type(vardefs, yyvsp[-6].map,
+                                                SPOVAR_MAPCHAR | SPOVAR_ARRAY);
                      add_opvars(splev, "iso",
                                 VA_PASS3(n_items, yyvsp[-6].map, SPO_VAR_INIT));
                      Free(yyvsp[-6].map);
@@ -2886,8 +2907,10 @@ case 108:
 break;
 case 109:
 {
-                     long n_items = yyvsp[-1].i;
-                     variable_definitions = add_vardef_type(variable_definitions, yyvsp[-6].map, SPOVAR_MONST|SPOVAR_ARRAY);
+                     int n_items = (int) yyvsp[-1].i;
+
+                     vardefs = add_vardef_type(vardefs, yyvsp[-6].map,
+                                                SPOVAR_MONST | SPOVAR_ARRAY);
                      add_opvars(splev, "iso",
                                 VA_PASS3(n_items, yyvsp[-6].map, SPO_VAR_INIT));
                      Free(yyvsp[-6].map);
@@ -2895,8 +2918,10 @@ case 109:
 break;
 case 110:
 {
-                     long n_items = yyvsp[-1].i;
-                     variable_definitions = add_vardef_type(variable_definitions, yyvsp[-6].map, SPOVAR_OBJ|SPOVAR_ARRAY);
+                      int n_items = (int) yyvsp[-1].i;
+
+                     vardefs = add_vardef_type(vardefs, yyvsp[-6].map,
+                                                SPOVAR_OBJ | SPOVAR_ARRAY);
                      add_opvars(splev, "iso",
                                 VA_PASS3(n_items, yyvsp[-6].map, SPO_VAR_INIT));
                      Free(yyvsp[-6].map);
@@ -2904,8 +2929,10 @@ case 110:
 break;
 case 111:
 {
-                     long n_items = yyvsp[-1].i;
-                     variable_definitions = add_vardef_type(variable_definitions, yyvsp[-4].map, SPOVAR_STRING|SPOVAR_ARRAY);
+                      int n_items = (int) yyvsp[-1].i;
+
+                     vardefs = add_vardef_type(vardefs, yyvsp[-4].map,
+                                                SPOVAR_STRING | SPOVAR_ARRAY);
                      add_opvars(splev, "iso",
                                 VA_PASS3(n_items, yyvsp[-4].map, SPO_VAR_INIT));
                      Free(yyvsp[-4].map);
@@ -3008,8 +3035,8 @@ case 126:
                      splev = &(funcdef->code);
                      Free(yyvsp[-1].map);
                      curr_function = funcdef;
-                     function_tmp_var_defs = variable_definitions;
-                     variable_definitions = NULL;
+                     function_tmp_var_defs = vardefs;
+                     vardefs = NULL;
                  }
 break;
 case 127:
@@ -3023,21 +3050,25 @@ case 128:
                      splev = function_splev_backup;
                      in_function_definition--;
                      curr_function = NULL;
-                     vardef_free_all(variable_definitions);
-                     variable_definitions = function_tmp_var_defs;
+                     vardef_free_all(vardefs);
+                     vardefs = function_tmp_var_defs;
                  }
 break;
 case 129:
 {
                      struct lc_funcdefs *tmpfunc;
+
                      tmpfunc = funcdef_defined(function_definitions, yyvsp[-3].map, 1);
                      if (tmpfunc) {
-                         long l;
-                         long nparams = strlen( yyvsp[-1].map );
+                         int l;
+                         int nparams = (int) strlen(yyvsp[-1].map);
                          char *fparamstr = funcdef_paramtypes(tmpfunc);
+
                          if (strcmp(yyvsp[-1].map, fparamstr)) {
                              char *tmps = strdup(decode_parm_str(fparamstr));
-                             lc_error("Function '%s' requires params '%s', got '%s' instead.", yyvsp[-3].map, tmps, decode_parm_str(yyvsp[-1].map));
+
+                             lc_error("Function '%s' requires params '%s', got '%s' instead.",
+                                       yyvsp[-3].map, tmps, decode_parm_str(yyvsp[-1].map));
                              Free(tmps);
                          }
                          Free(fparamstr);
@@ -3045,9 +3076,11 @@ case 129:
                          if (!(tmpfunc->n_called)) {
                              /* we haven't called the function yet, so insert it in the code */
                              struct opvar *jmp = New(struct opvar);
+
                              set_opvar_int(jmp, splev->n_opcodes+1);
                              add_opcode(splev, SPO_PUSH, jmp);
-                             add_opcode(splev, SPO_JMP, NULL); /* we must jump past it first, then CALL it, due to RETURN. */
+                              /* we must jump past it first, then CALL it, due to RETURN. */
+                             add_opcode(splev, SPO_JMP, NULL);
 
                              tmpfunc->addr = splev->n_opcodes;
 
@@ -3062,9 +3095,10 @@ case 129:
                              }
 
                              splev_add_from(splev, &(tmpfunc->code));
-                             set_opvar_int(jmp, splev->n_opcodes - jmp->vardata.l);
+                             set_opvar_int(jmp,
+                                            splev->n_opcodes - jmp->vardata.l);
                          }
-                         l = tmpfunc->addr - splev->n_opcodes - 2;
+                         l = (int) (tmpfunc->addr - splev->n_opcodes - 2);
                          add_opvars(splev, "iio",
                                     VA_PASS3(nparams, l, SPO_CALL));
                          tmpfunc->n_called++;
@@ -3093,7 +3127,7 @@ case 133:
 {
                      /* val > rn2(100) */
                      add_opvars(splev, "iio",
-                                VA_PASS3((long)yyvsp[0].i, 100, SPO_RN2));
+                                VA_PASS3((int) yyvsp[0].i, 100, SPO_RN2));
                      yyval.i = SPO_JG;
                   }
 break;
@@ -3117,6 +3151,7 @@ break;
 case 137:
 {
                      struct opvar *chkjmp;
+
                      if (in_switch_statement > 0)
                          lc_error("Cannot nest switch-statements.");
 
@@ -3181,6 +3216,7 @@ case 141:
 {
                      if (n_switch_case_list < MAX_SWITCH_CASES) {
                          struct opvar *tmppush = New(struct opvar);
+
                          set_opvar_int(tmppush, splev->n_opcodes);
                          switch_case_value[n_switch_case_list] = yyvsp[-1].i;
                          switch_case_list[n_switch_case_list++] = tmppush;
@@ -3229,8 +3265,7 @@ case 148:
                      /* the value of which is already in stack (the 2nd math_expr) */
                      add_opvars(splev, "iso", VA_PASS3(0, buf, SPO_VAR_INIT));
 
-                     variable_definitions = add_vardef_type(variable_definitions,
-                                                            yyvsp[-4].map, SPOVAR_INT);
+                     vardefs = add_vardef_type(vardefs, yyvsp[-4].map, SPOVAR_INT);
                      /* define the for-loop variable. value is in stack (1st math_expr) */
                      add_opvars(splev, "iso", VA_PASS3(0, yyvsp[-4].map, SPO_VAR_INIT));
 
@@ -3260,6 +3295,7 @@ case 149:
 break;
 case 150:
 {
+                      int l;
                      char buf[256], buf2[256];
 
                      n_forloops--;
@@ -3278,10 +3314,9 @@ case 150:
                                 VA_PASS3(0, forloop_list[n_forloops].varname,
                                          SPO_VAR_INIT));
                      /* jump back if compared values were not equal */
-                     add_opvars(splev, "io",
-                                VA_PASS2(
-                   forloop_list[n_forloops].jmp_point - splev->n_opcodes - 1,
-                                         SPO_JNE));
+                      l = (int) (forloop_list[n_forloops].jmp_point
+                                 - splev->n_opcodes - 1);
+                     add_opvars(splev, "io", VA_PASS2(l, SPO_JNE));
                      Free(forloop_list[n_forloops].varname);
                      break_stmt_end(splev);
                  }
@@ -3308,10 +3343,11 @@ case 152:
                      add_opvars(splev, "oio", VA_PASS3(SPO_COPY, 0, SPO_CMP));
 
                      tmppush = (struct opvar *) if_list[--n_if_list];
-                     set_opvar_int(tmppush, tmppush->vardata.l - splev->n_opcodes-1);
+                     set_opvar_int(tmppush,
+                                    tmppush->vardata.l - splev->n_opcodes-1);
                      add_opcode(splev, SPO_PUSH, tmppush);
                      add_opcode(splev, SPO_JG, NULL);
-                     add_opcode(splev, SPO_POP, NULL); /* get rid of the count value in stack */
+                     add_opcode(splev, SPO_POP, NULL); /* discard count */
                      break_stmt_end(splev);
                  }
 break;
@@ -3340,8 +3376,10 @@ case 154:
 {
                      if (n_if_list > 0) {
                          struct opvar *tmppush;
+
                          tmppush = (struct opvar *) if_list[--n_if_list];
-                         set_opvar_int(tmppush, splev->n_opcodes - tmppush->vardata.l);
+                         set_opvar_int(tmppush,
+                                        splev->n_opcodes - tmppush->vardata.l);
                      } else lc_error("IF: Huh?!  No start address?");
                  }
 break;
@@ -3375,8 +3413,10 @@ case 157:
 {
                      if (n_if_list > 0) {
                          struct opvar *tmppush;
+
                          tmppush = (struct opvar *) if_list[--n_if_list];
-                         set_opvar_int(tmppush, splev->n_opcodes - tmppush->vardata.l);
+                         set_opvar_int(tmppush,
+                                        splev->n_opcodes - tmppush->vardata.l);
                      } else lc_error("IF: Huh?!  No start address?");
                  }
 break;
@@ -3393,7 +3433,8 @@ case 158:
 
                          tmppush2 = (struct opvar *) if_list[--n_if_list];
 
-                         set_opvar_int(tmppush2, splev->n_opcodes - tmppush2->vardata.l);
+                         set_opvar_int(tmppush2,
+                                      splev->n_opcodes - tmppush2->vardata.l);
                          if_list[n_if_list++] = tmppush;
                      } else lc_error("IF: Huh?!  No else-part address?");
                  }
@@ -3592,7 +3633,7 @@ break;
 case 192:
 {
                      add_opvars(splev, "ciisiio",
-                                VA_PASS7(0, 0, 1, (char *)0, 0, 0, SPO_MAP));
+                                VA_PASS7(0, 0, 1, (char *) 0, 0, 0, SPO_MAP));
                      max_x_map = COLNO-1;
                      max_y_map = ROWNO;
                  }
@@ -3600,15 +3641,15 @@ break;
 case 193:
 {
                      add_opvars(splev, "cii",
-                                VA_PASS3(SP_COORD_PACK((yyvsp[-4].i),(yyvsp[-2].i)),
-                                         1, (long)yyvsp[-1].i));
+                                VA_PASS3(SP_COORD_PACK((yyvsp[-4].i), (yyvsp[-2].i)),
+                                         1, (int) yyvsp[-1].i));
                      scan_map(yyvsp[0].map, splev);
                      Free(yyvsp[0].map);
                  }
 break;
 case 194:
 {
-                     add_opvars(splev, "ii", VA_PASS2(2, (long)yyvsp[-1].i));
+                     add_opvars(splev, "ii", VA_PASS2(2, (int) yyvsp[-1].i));
                      scan_map(yyvsp[0].map, splev);
                      Free(yyvsp[0].map);
                  }
@@ -3640,6 +3681,7 @@ break;
 case 203:
 {
                      struct opvar *stopit = New(struct opvar);
+
                      set_opvar_int(stopit, SP_M_V_END);
                      add_opcode(splev, SPO_PUSH, stopit);
                      yyval.i = 0x0000;
@@ -3661,28 +3703,28 @@ break;
 case 206:
 {
                      add_opvars(splev, "ii",
-                                VA_PASS2((long)yyvsp[0].i, SP_M_V_PEACEFUL));
+                                VA_PASS2((int) yyvsp[0].i, SP_M_V_PEACEFUL));
                      yyval.i = 0x0002;
                  }
 break;
 case 207:
 {
                      add_opvars(splev, "ii",
-                                VA_PASS2((long)yyvsp[0].i, SP_M_V_ASLEEP));
+                                VA_PASS2((int) yyvsp[0].i, SP_M_V_ASLEEP));
                      yyval.i = 0x0004;
                  }
 break;
 case 208:
 {
                      add_opvars(splev, "ii",
-                                VA_PASS2((long)yyvsp[0].i, SP_M_V_ALIGN));
+                                VA_PASS2((int) yyvsp[0].i, SP_M_V_ALIGN));
                      yyval.i = 0x0008;
                  }
 break;
 case 209:
 {
                      add_opvars(splev, "ii",
-                                VA_PASS2((long)yyvsp[-1].i, SP_M_V_APPEAR));
+                                VA_PASS2((int) yyvsp[-1].i, SP_M_V_APPEAR));
                      yyval.i = 0x0010;
                  }
 break;
@@ -3749,13 +3791,14 @@ break;
 case 220:
 {
                      add_opvars(splev, "ii",
-                                VA_PASS2((long)yyvsp[0].i, SP_M_V_SEENTRAPS));
+                                VA_PASS2((int) yyvsp[0].i, SP_M_V_SEENTRAPS));
                      yyval.i = 0x8000;
                  }
 break;
 case 221:
 {
                      int token = get_trap_type(yyvsp[0].map);
+
                      if (token == ERR || token == 0)
                          lc_error("Unknown trap type '%s'!", yyvsp[0].map);
                       Free(yyvsp[0].map);
@@ -3781,15 +3824,19 @@ case 223:
 break;
 case 224:
 {
-                     long cnt = 0;
-                     if (in_container_obj) cnt |= SP_OBJ_CONTENT;
+                     int cnt = 0;
+
+                     if (in_container_obj)
+                          cnt |= SP_OBJ_CONTENT;
                      add_opvars(splev, "io", VA_PASS2(cnt, SPO_OBJECT));
                  }
 break;
 case 225:
 {
-                     long cnt = SP_OBJ_CONTAINER;
-                     if (in_container_obj) cnt |= SP_OBJ_CONTENT;
+                     int cnt = SP_OBJ_CONTAINER;
+
+                     if (in_container_obj)
+                          cnt |= SP_OBJ_CONTENT;
                      add_opvars(splev, "io", VA_PASS2(cnt, SPO_OBJECT));
                      in_container_obj++;
                      break_stmt_start();
@@ -3828,7 +3875,7 @@ break;
 case 230:
 {
                      add_opvars(splev, "ii",
-                                VA_PASS2((long)yyvsp[0].i, SP_O_V_CURSE));
+                                VA_PASS2((int) yyvsp[0].i, SP_O_V_CURSE));
                      yyval.i = 0x0001;
                  }
 break;
@@ -3864,7 +3911,7 @@ case 235:
 break;
 case 236:
 {
-                     add_opvars(splev, "ii", VA_PASS2((long)yyvsp[0].i, SP_O_V_LIT));
+                     add_opvars(splev, "ii", VA_PASS2((int) yyvsp[0].i, SP_O_V_LIT));
                      yyval.i = 0x0040;
                  }
 break;
@@ -3894,7 +3941,8 @@ case 239:
 break;
 case 240:
 {
-                     add_opvars(splev, "ii", VA_PASS2(yyvsp[0].i, SP_O_V_TRAPPED));
+                     add_opvars(splev, "ii",
+                                 VA_PASS2((int) yyvsp[0].i, SP_O_V_TRAPPED));
                      yyval.i = 0x0400;
                  }
 break;
@@ -3924,7 +3972,7 @@ case 244:
 break;
 case 245:
 {
-                     add_opvars(splev, "io", VA_PASS2((long)yyvsp[-2].i, SPO_TRAP));
+                     add_opvars(splev, "io", VA_PASS2((int) yyvsp[-2].i, SPO_TRAP));
                  }
 break;
 case 246:
@@ -3958,14 +4006,14 @@ break;
 case 247:
 {
                      add_opvars(splev, "iiio",
-                                VA_PASS4((long)yyvsp[0].i, 1, 0, SPO_MAZEWALK));
+                                VA_PASS4((int) yyvsp[0].i, 1, 0, SPO_MAZEWALK));
                  }
 break;
 case 248:
 {
                      add_opvars(splev, "iiio",
-                                VA_PASS4((long)yyvsp[-3].i, (long)yyvsp[-1].i,
-                                         (long)yyvsp[0].i, SPO_MAZEWALK));
+                                VA_PASS4((int) yyvsp[-3].i, (int) yyvsp[-1].i,
+                                         (int) yyvsp[0].i, SPO_MAZEWALK));
                  }
 break;
 case 249:
@@ -3983,13 +4031,13 @@ break;
 case 251:
 {
                      add_opvars(splev, "io",
-                                VA_PASS2((long)yyvsp[0].i, SPO_LADDER));
+                                VA_PASS2((int) yyvsp[0].i, SPO_LADDER));
                  }
 break;
 case 252:
 {
                      add_opvars(splev, "io",
-                                VA_PASS2((long)yyvsp[0].i, SPO_STAIR));
+                                VA_PASS2((int) yyvsp[0].i, SPO_STAIR));
                  }
 break;
 case 253:
@@ -4251,16 +4299,17 @@ case 304:
 break;
 case 305:
 {
-                     check_vardef_type(variable_definitions, yyvsp[0].map, SPOVAR_STRING);
-                     vardef_used(variable_definitions, yyvsp[0].map);
+                     check_vardef_type(vardefs, yyvsp[0].map, SPOVAR_STRING);
+                     vardef_used(vardefs, yyvsp[0].map);
                      add_opvars(splev, "v", VA_PASS1(yyvsp[0].map));
                      Free(yyvsp[0].map);
                  }
 break;
 case 306:
 {
-                     check_vardef_type(variable_definitions, yyvsp[-3].map, SPOVAR_STRING|SPOVAR_ARRAY);
-                     vardef_used(variable_definitions, yyvsp[-3].map);
+                     check_vardef_type(vardefs, yyvsp[-3].map,
+                                        SPOVAR_STRING | SPOVAR_ARRAY);
+                     vardef_used(vardefs, yyvsp[-3].map);
                      add_opvars(splev, "v", VA_PASS1(yyvsp[-3].map));
                      Free(yyvsp[-3].map);
                  }
@@ -4282,16 +4331,17 @@ case 309:
 break;
 case 310:
 {
-                     check_vardef_type(variable_definitions, yyvsp[0].map, SPOVAR_COORD);
-                     vardef_used(variable_definitions, yyvsp[0].map);
+                     check_vardef_type(vardefs, yyvsp[0].map, SPOVAR_COORD);
+                     vardef_used(vardefs, yyvsp[0].map);
                      add_opvars(splev, "v", VA_PASS1(yyvsp[0].map));
                      Free(yyvsp[0].map);
                  }
 break;
 case 311:
 {
-                     check_vardef_type(variable_definitions, yyvsp[-3].map, SPOVAR_COORD|SPOVAR_ARRAY);
-                     vardef_used(variable_definitions, yyvsp[-3].map);
+                     check_vardef_type(vardefs, yyvsp[-3].map,
+                                        SPOVAR_COORD | SPOVAR_ARRAY);
+                     vardef_used(vardefs, yyvsp[-3].map);
                      add_opvars(splev, "v", VA_PASS1(yyvsp[-3].map));
                      Free(yyvsp[-3].map);
                  }
@@ -4299,7 +4349,8 @@ break;
 case 312:
 {
                      if (yyvsp[-3].i < 0 || yyvsp[-1].i < 0 || yyvsp[-3].i >= COLNO || yyvsp[-1].i >= ROWNO)
-                         lc_error("Coordinates (%li,%li) out of map range!", yyvsp[-3].i, yyvsp[-1].i);
+                          lc_error("Coordinates (%li,%li) out of map range!",
+                                   yyvsp[-3].i, yyvsp[-1].i);
                      yyval.i = SP_COORD_PACK(yyvsp[-3].i, yyvsp[-1].i);
                  }
 break;
@@ -4310,7 +4361,7 @@ case 313:
 break;
 case 314:
 {
-                     yyval.i = SP_COORD_PACK_RANDOM( yyvsp[-1].i );
+                     yyval.i = SP_COORD_PACK_RANDOM(yyvsp[-1].i);
                  }
 break;
 case 315:
@@ -4332,16 +4383,17 @@ case 317:
 break;
 case 318:
 {
-                     check_vardef_type(variable_definitions, yyvsp[0].map, SPOVAR_REGION);
-                     vardef_used(variable_definitions, yyvsp[0].map);
+                     check_vardef_type(vardefs, yyvsp[0].map, SPOVAR_REGION);
+                     vardef_used(vardefs, yyvsp[0].map);
                      add_opvars(splev, "v", VA_PASS1(yyvsp[0].map));
                      Free(yyvsp[0].map);
                  }
 break;
 case 319:
 {
-                     check_vardef_type(variable_definitions, yyvsp[-3].map, SPOVAR_REGION|SPOVAR_ARRAY);
-                     vardef_used(variable_definitions, yyvsp[-3].map);
+                     check_vardef_type(vardefs, yyvsp[-3].map,
+                                        SPOVAR_REGION | SPOVAR_ARRAY);
+                     vardef_used(vardefs, yyvsp[-3].map);
                      add_opvars(splev, "v", VA_PASS1(yyvsp[-3].map));
                      Free(yyvsp[-3].map);
                  }
@@ -4349,8 +4401,10 @@ break;
 case 320:
 {
                      long r = SP_REGION_PACK(yyvsp[-7].i, yyvsp[-5].i, yyvsp[-3].i, yyvsp[-1].i);
-                     if ( yyvsp[-7].i > yyvsp[-3].i || yyvsp[-5].i > yyvsp[-1].i )
-                         lc_error("Region start > end: (%li,%li,%li,%li)!", yyvsp[-7].i, yyvsp[-5].i, yyvsp[-3].i, yyvsp[-1].i);
+
+                     if (yyvsp[-7].i > yyvsp[-3].i || yyvsp[-5].i > yyvsp[-1].i)
+                         lc_error("Region start > end: (%ld,%ld,%ld,%ld)!",
+                                   yyvsp[-7].i, yyvsp[-5].i, yyvsp[-3].i, yyvsp[-1].i);
 
                      add_opvars(splev, "r", VA_PASS1(r));
                      yyval.i = r;
@@ -4363,16 +4417,17 @@ case 321:
 break;
 case 322:
 {
-                     check_vardef_type(variable_definitions, yyvsp[0].map, SPOVAR_MAPCHAR);
-                     vardef_used(variable_definitions, yyvsp[0].map);
+                     check_vardef_type(vardefs, yyvsp[0].map, SPOVAR_MAPCHAR);
+                     vardef_used(vardefs, yyvsp[0].map);
                      add_opvars(splev, "v", VA_PASS1(yyvsp[0].map));
                      Free(yyvsp[0].map);
                  }
 break;
 case 323:
 {
-                     check_vardef_type(variable_definitions, yyvsp[-3].map, SPOVAR_MAPCHAR|SPOVAR_ARRAY);
-                     vardef_used(variable_definitions, yyvsp[-3].map);
+                     check_vardef_type(vardefs, yyvsp[-3].map,
+                                        SPOVAR_MAPCHAR | SPOVAR_ARRAY);
+                     vardef_used(vardefs, yyvsp[-3].map);
                      add_opvars(splev, "v", VA_PASS1(yyvsp[-3].map));
                      Free(yyvsp[-3].map);
                  }
@@ -4404,16 +4459,17 @@ case 326:
 break;
 case 327:
 {
-                     check_vardef_type(variable_definitions, yyvsp[0].map, SPOVAR_MONST);
-                     vardef_used(variable_definitions, yyvsp[0].map);
+                     check_vardef_type(vardefs, yyvsp[0].map, SPOVAR_MONST);
+                     vardef_used(vardefs, yyvsp[0].map);
                      add_opvars(splev, "v", VA_PASS1(yyvsp[0].map));
                      Free(yyvsp[0].map);
                  }
 break;
 case 328:
 {
-                     check_vardef_type(variable_definitions, yyvsp[-3].map, SPOVAR_MONST|SPOVAR_ARRAY);
-                     vardef_used(variable_definitions, yyvsp[-3].map);
+                     check_vardef_type(vardefs, yyvsp[-3].map,
+                                        SPOVAR_MONST | SPOVAR_ARRAY);
+                     vardef_used(vardefs, yyvsp[-3].map);
                      add_opvars(splev, "v", VA_PASS1(yyvsp[-3].map));
                      Free(yyvsp[-3].map);
                  }
@@ -4463,16 +4519,17 @@ case 333:
 break;
 case 334:
 {
-                     check_vardef_type(variable_definitions, yyvsp[0].map, SPOVAR_OBJ);
-                     vardef_used(variable_definitions, yyvsp[0].map);
+                     check_vardef_type(vardefs, yyvsp[0].map, SPOVAR_OBJ);
+                     vardef_used(vardefs, yyvsp[0].map);
                      add_opvars(splev, "v", VA_PASS1(yyvsp[0].map));
                      Free(yyvsp[0].map);
                  }
 break;
 case 335:
 {
-                     check_vardef_type(variable_definitions, yyvsp[-3].map, SPOVAR_OBJ|SPOVAR_ARRAY);
-                     vardef_used(variable_definitions, yyvsp[-3].map);
+                     check_vardef_type(vardefs, yyvsp[-3].map,
+                                        SPOVAR_OBJ | SPOVAR_ARRAY);
+                     vardef_used(vardefs, yyvsp[-3].map);
                      add_opvars(splev, "v", VA_PASS1(yyvsp[-3].map));
                      Free(yyvsp[-3].map);
                  }
@@ -4484,7 +4541,8 @@ case 336:
                          lc_error("Unknown object \"%s\"!", yyvsp[0].map);
                          yyval.i = -1;
                      } else
-                         yyval.i = SP_OBJ_PACK(m, 1); /* obj class != 0 to force generation of a specific item */
+                          /* obj class != 0 to force generation of a specific item */
+                          yyval.i = SP_OBJ_PACK(m, 1);
                       Free(yyvsp[0].map);
                  }
 break;
@@ -4539,8 +4597,8 @@ case 344:
 break;
 case 345:
 {
-                     check_vardef_type(variable_definitions, yyvsp[0].map, SPOVAR_INT);
-                     vardef_used(variable_definitions, yyvsp[0].map);
+                     check_vardef_type(vardefs, yyvsp[0].map, SPOVAR_INT);
+                     vardef_used(vardefs, yyvsp[0].map);
                      add_opvars(splev, "v", VA_PASS1(yyvsp[0].map));
                      Free(yyvsp[0].map);
                      is_inconstant_number = 1;
@@ -4548,9 +4606,9 @@ case 345:
 break;
 case 346:
 {
-                     check_vardef_type(variable_definitions,
-                                       yyvsp[-3].map, SPOVAR_INT|SPOVAR_ARRAY);
-                     vardef_used(variable_definitions, yyvsp[-3].map);
+                     check_vardef_type(vardefs, yyvsp[-3].map,
+                                       SPOVAR_INT | SPOVAR_ARRAY);
+                     vardef_used(vardefs, yyvsp[-3].map);
                      add_opvars(splev, "v", VA_PASS1(yyvsp[-3].map));
                      Free(yyvsp[-3].map);
                      is_inconstant_number = 1;
@@ -4627,9 +4685,7 @@ case 355:
                               lc_error("Unknown func param conversion.");
                               break;
                          }
-                         variable_definitions = add_vardef_type(
-                                                        variable_definitions,
-                                                                yyvsp[-2].map, vt);
+                         vardefs = add_vardef_type( vardefs, yyvsp[-2].map, vt);
                      }
                      Free(yyvsp[-2].map);
                  }
@@ -4767,8 +4823,8 @@ case 382:
 break;
 case 383:
 {
-                     check_vardef_type(variable_definitions, yyvsp[0].map, SPOVAR_SEL);
-                     vardef_used(variable_definitions, yyvsp[0].map);
+                     check_vardef_type(vardefs, yyvsp[0].map, SPOVAR_SEL);
+                     vardef_used(vardefs, yyvsp[0].map);
                      add_opvars(splev, "v", VA_PASS1(yyvsp[0].map));
                      Free(yyvsp[0].map);
                  }