Encapsulated lexer and updated calling functions accordingly.
[pspp-builds.git] / src / language / dictionary / rename-variables.c
index eedc84d4c2543f0871c96c1ad3357a3b21d2b0a4..0dff0b02e32eb7058a614b0eacf21b9841a0cbc2 100644 (file)
 #include <stdlib.h>
 
 #include <data/dictionary.h>
-#include <procedure.h>
+#include <data/procedure.h>
 #include <data/variable.h>
 #include <language/command.h>
 #include <language/lexer/lexer.h>
+#include <language/lexer/variable-parser.h>
 #include <libpspp/alloc.h>
 #include <libpspp/hash.h>
 #include <libpspp/message.h>
@@ -37,7 +38,7 @@
 /* The code for this function is very similar to the code for the
    RENAME subcommand of MODIFY VARS. */
 int
-cmd_rename_variables (void)
+cmd_rename_variables (struct lexer *lexer, struct dataset *ds)
 {
   struct variable **rename_vars = NULL;
   char **rename_new_names = NULL;
@@ -46,7 +47,7 @@ cmd_rename_variables (void)
 
   int status = CMD_CASCADING_FAILURE;
 
-  if (proc_make_temporary_transformations_permanent ())
+  if (proc_make_temporary_transformations_permanent (ds))
     msg (SE, _("RENAME VARS may not be used after TEMPORARY.  "
                "Temporary transformations will be made permanent."));
 
@@ -55,20 +56,20 @@ cmd_rename_variables (void)
       size_t prev_nv_1 = rename_cnt;
       size_t prev_nv_2 = rename_cnt;
 
-      if (!lex_match ('('))
+      if (!lex_match (lexer, '('))
        {
          msg (SE, _("`(' expected."));
          goto lossage;
        }
-      if (!parse_variables (default_dict, &rename_vars, &rename_cnt,
+      if (!parse_variables (lexer, dataset_dict (ds), &rename_vars, &rename_cnt,
                            PV_APPEND | PV_NO_DUPLICATE))
        goto lossage;
-      if (!lex_match ('='))
+      if (!lex_match (lexer, '='))
        {
          msg (SE, _("`=' expected between lists of new and old variable names."));
          goto lossage;
        }
-      if (!parse_DATA_LIST_vars (&rename_new_names, &prev_nv_1, PV_APPEND))
+      if (!parse_DATA_LIST_vars (lexer, &rename_new_names, &prev_nv_1, PV_APPEND))
        goto lossage;
       if (prev_nv_1 != rename_cnt)
        {
@@ -84,15 +85,15 @@ cmd_rename_variables (void)
          rename_new_names = NULL;
          goto lossage;
        }
-      if (!lex_match (')'))
+      if (!lex_match (lexer, ')'))
        {
          msg (SE, _("`)' expected after variable names."));
          goto lossage;
        }
     }
-  while (token != '.');
+  while (lex_token (lexer) != '.');
 
-  if (!dict_rename_vars (default_dict,
+  if (!dict_rename_vars (dataset_dict (ds),
                          rename_vars, rename_new_names, rename_cnt,
                          &err_name)) 
     {