lexer: Change the functions for retrieving token strings.
[pspp-builds.git] / src / language / dictionary / missing-values.c
index 22fe4436f0500e9f93b54b97ae48962c2a2663db..4a14ee195b8c91f26cf0e589497f2d607bfb325c 100644 (file)
@@ -29,7 +29,6 @@
 #include <language/lexer/value-parser.h>
 #include <language/lexer/variable-parser.h>
 #include <libpspp/message.h>
-#include <libpspp/message.h>
 #include <libpspp/str.h>
 
 #include "gettext.h"
@@ -44,23 +43,20 @@ cmd_missing_values (struct lexer *lexer, struct dataset *ds)
   int retval = CMD_FAILURE;
   bool deferred_errors = false;
 
-  while (lex_token (lexer) != '.')
+  while (lex_token (lexer) != T_ENDCMD)
     {
       size_t i;
 
       if (!parse_variables (lexer, dataset_dict (ds), &v, &nv, PV_NONE))
         goto done;
 
-      if (!lex_match (lexer, '('))
-        {
-          lex_error (lexer, _("expecting `('"));
-          goto done;
-        }
+      if (!lex_force_match (lexer, T_LPAREN))
+        goto done;
 
       for (i = 0; i < nv; i++)
         var_clear_missing_values (v[i]);
 
-      if (!lex_match (lexer, ')'))
+      if (!lex_match (lexer, T_RPAREN))
         {
           struct missing_values mv;
 
@@ -78,7 +74,7 @@ cmd_missing_values (struct lexer *lexer, struct dataset *ds)
           if (var_is_numeric (v[0]))
             {
               mv_init (&mv, 0);
-              while (!lex_match (lexer, ')'))
+              while (!lex_match (lexer, T_RPAREN))
                 {
                   enum fmt_type type = var_get_print_format (v[0])->type;
                   double x, y;
@@ -93,13 +89,13 @@ cmd_missing_values (struct lexer *lexer, struct dataset *ds)
                   if (!ok)
                     deferred_errors = true;
 
-                  lex_match (lexer, ',');
+                  lex_match (lexer, T_COMMA);
                 }
             }
           else
             {
               mv_init (&mv, MV_MAX_STRING);
-              while (!lex_match (lexer, ')'))
+              while (!lex_match (lexer, T_RPAREN))
                 {
                   uint8_t value[MV_MAX_STRING];
                   size_t length;
@@ -110,7 +106,7 @@ cmd_missing_values (struct lexer *lexer, struct dataset *ds)
                       break;
                     }
 
-                  length = ds_length (lex_tokstr (lexer));
+                  length = ss_length (lex_tokss (lexer));
                   if (length > MV_MAX_STRING)
                     {
                       msg (SE, _("Truncating missing value to maximum "
@@ -119,13 +115,13 @@ cmd_missing_values (struct lexer *lexer, struct dataset *ds)
                       length = MV_MAX_STRING;
                     }
                   memset (value, ' ', MV_MAX_STRING);
-                  memcpy (value, ds_data (lex_tokstr (lexer)), length);
+                  memcpy (value, ss_data (lex_tokss (lexer)), length);
 
                   if (!mv_add_str (&mv, value))
                     deferred_errors = true;
 
                   lex_get (lexer);
-                  lex_match (lexer, ',');
+                  lex_match (lexer, T_COMMA);
                 }
             }
 
@@ -145,7 +141,7 @@ cmd_missing_values (struct lexer *lexer, struct dataset *ds)
           mv_destroy (&mv);
         }
 
-      lex_match (lexer, '/');
+      lex_match (lexer, T_SLASH);
       free (v);
       v = NULL;
     }