str: Change "char" to "byte" in function names.
[pspp-builds.git] / src / language / lexer / lexer.c
index 3dda38a6a0b8ab4f39d87d3e8a05c36ba4761488..3ef8dc1d05b76751c10b06d3c1903faed08baee5 100644 (file)
@@ -15,8 +15,8 @@
    along with this program.  If not, see <http://www.gnu.org/licenses/>. */
 
 #include <config.h>
+
 #include "lexer.h"
-#include <libpspp/message.h>
 #include <c-ctype.h>
 #include <c-strtod.h>
 #include <errno.h>
 #include <stdarg.h>
 #include <stdint.h>
 #include <stdlib.h>
-#include <libpspp/assertion.h>
 #include <language/command.h>
-#include <libpspp/message.h>
 #include <data/settings.h>
+#include <libpspp/assertion.h>
 #include <libpspp/getl.h>
+#include <libpspp/message.h>
 #include <libpspp/str.h>
 #include <output/journal.h>
 #include <output/text-item.h>
 #define _(msgid) gettext (msgid)
 #define N_(msgid) msgid
 
-
-#define DUMP_TOKENS 0
-
-
-
 struct lexer
 {
   struct string line_buffer;
@@ -83,10 +78,6 @@ enum string_type
   };
 
 static int parse_string (struct lexer *, enum string_type);
-
-#if DUMP_TOKENS
-static void dump_token (struct lexer *);
-#endif
 \f
 /* Initialization. */
 
@@ -180,9 +171,6 @@ lex_get (struct lexer *lexer)
       if (lexer->put_token)
         {
           restore_token (lexer);
-#if DUMP_TOKENS
-         dump_token (lexer);
-#endif
           return;
         }
 
@@ -199,27 +187,18 @@ lex_get (struct lexer *lexer)
            {
              lexer->dot = 0;
              lexer->token = '.';
-#if DUMP_TOKENS
-             dump_token (lexer);
-#endif
              return;
            }
          else if (!lex_get_line (lexer))
            {
              lexer->prog = NULL;
              lexer->token = T_STOP;
-#if DUMP_TOKENS
-             dump_token (lexer);
-#endif
              return;
            }
 
          if (lexer->put_token)
            {
               restore_token (lexer);
-#if DUMP_TOKENS
-             dump_token (lexer);
-#endif
              return;
            }
        }
@@ -245,7 +224,7 @@ lex_get (struct lexer *lexer)
               negative numbers into two tokens. */
            if (*lexer->prog == '-')
              {
-               ds_put_char (&lexer->tokstr, *lexer->prog++);
+               ds_put_byte (&lexer->tokstr, *lexer->prog++);
                while (c_isspace ((unsigned char) *lexer->prog))
                  lexer->prog++;
 
@@ -261,20 +240,20 @@ lex_get (struct lexer *lexer)
 
            /* Parse the number, copying it into tokstr. */
            while (c_isdigit ((unsigned char) *lexer->prog))
-             ds_put_char (&lexer->tokstr, *lexer->prog++);
+             ds_put_byte (&lexer->tokstr, *lexer->prog++);
            if (*lexer->prog == '.')
              {
-               ds_put_char (&lexer->tokstr, *lexer->prog++);
+               ds_put_byte (&lexer->tokstr, *lexer->prog++);
                while (c_isdigit ((unsigned char) *lexer->prog))
-                 ds_put_char (&lexer->tokstr, *lexer->prog++);
+                 ds_put_byte (&lexer->tokstr, *lexer->prog++);
              }
            if (*lexer->prog == 'e' || *lexer->prog == 'E')
              {
-               ds_put_char (&lexer->tokstr, *lexer->prog++);
+               ds_put_byte (&lexer->tokstr, *lexer->prog++);
                if (*lexer->prog == '+' || *lexer->prog == '-')
-                 ds_put_char (&lexer->tokstr, *lexer->prog++);
+                 ds_put_byte (&lexer->tokstr, *lexer->prog++);
                while (c_isdigit ((unsigned char) *lexer->prog))
-                 ds_put_char (&lexer->tokstr, *lexer->prog++);
+                 ds_put_byte (&lexer->tokstr, *lexer->prog++);
              }
 
            /* Parse as floating point. */
@@ -286,7 +265,7 @@ lex_get (struct lexer *lexer)
                lexer->tokval = 0.0;
 
                ds_clear (&lexer->tokstr);
-               ds_put_char (&lexer->tokstr, '0');
+               ds_put_byte (&lexer->tokstr, '0');
              }
 
            break;
@@ -394,10 +373,6 @@ lex_get (struct lexer *lexer)
         }
       break;
     }
-
-#if DUMP_TOKENS
-  dump_token (lexer);
-#endif
 }
 
 /* Parses an identifier at the current position into tokid and
@@ -628,7 +603,7 @@ lex_force_match (struct lexer *lexer, int t)
 bool
 lex_force_string (struct lexer *lexer)
 {
-  if (lexer->token == T_STRING)
+  if (lex_is_string (lexer))
     return true;
   else
     {
@@ -887,6 +862,8 @@ lex_get_line_raw (struct lexer *lexer)
       const char *line = ds_cstr (&lexer->line_buffer);
       text_item_submit (text_item_create (TEXT_ITEM_SYNTAX, line));
     }
+  else
+    lexer->prog = NULL;
   return ok;
 }
 
@@ -899,10 +876,7 @@ lex_get_line (struct lexer *lexer)
   bool line_starts_command;
 
   if (!lex_get_line_raw (lexer))
-    {
-      lexer->prog = NULL;
-      return false;
-    }
+    return false;
 
   lex_preprocess_line (&lexer->line_buffer,
                       lex_current_syntax_mode (lexer),
@@ -1161,7 +1135,7 @@ parse_string (struct lexer *lexer, enum string_type type)
                break;
            }
 
-         ds_put_char (&lexer->tokstr, *lexer->prog++);
+         ds_put_byte (&lexer->tokstr, *lexer->prog++);
        }
       lexer->prog++;
 
@@ -1224,60 +1198,6 @@ finish:
   return T_STRING;
 }
 \f
-#if DUMP_TOKENS
-/* Reads one token from the lexer and writes a textual representation
-   on stdout for debugging purposes. */
-static void
-dump_token (struct lexer *lexer)
-{
-  {
-    const char *curfn;
-    int curln;
-
-    curln = getl_source_location (lexer->ss);
-    curfn = getl_source_name (lexer->ss);
-    if (curfn)
-      fprintf (stderr, "%s:%d\t", curfn, curln);
-  }
-
-  switch (lexer->token)
-    {
-    case T_ID:
-      fprintf (stderr, "ID\t%s\n", lexer->tokid);
-      break;
-
-    case T_POS_NUM:
-    case T_NEG_NUM:
-      fprintf (stderr, "NUM\t%f\n", lexer->tokval);
-      break;
-
-    case T_STRING:
-      fprintf (stderr, "STRING\t`%s'\n", ds_cstr (&lexer->tokstr));
-      break;
-
-    case T_STOP:
-      fprintf (stderr, "STOP\n");
-      break;
-
-    case T_EXP:
-      fprintf (stderr, "MISC\tEXP\"");
-      break;
-
-    case 0:
-      fprintf (stderr, "MISC\tEOF\n");
-      break;
-
-    default:
-      if (lex_is_keyword (lexer->token))
-       fprintf (stderr, "KEYWORD\t%s\n", lex_token_name (lexer->token));
-      else
-       fprintf (stderr, "PUNCT\t%c\n", lexer->token);
-      break;
-    }
-}
-#endif /* DUMP_TOKENS */
-
-
 /* Token Accessor Functions */
 
 int