lexer: Remove lex_syntax_mode in favor of segmenter_mode.
authorBen Pfaff <blp@cs.stanford.edu>
Mon, 3 May 2021 00:13:27 +0000 (17:13 -0700)
committerBen Pfaff <blp@cs.stanford.edu>
Mon, 3 May 2021 00:15:59 +0000 (17:15 -0700)
These two enums have the same meaning and there was no benefit to having
both of them plus translation back and forth.

13 files changed:
src/language/control/repeat.c
src/language/lexer/lexer.c
src/language/lexer/lexer.h
src/language/utilities/include.c
src/ui/gui/psppire-lex-reader.c
src/ui/gui/psppire-lex-reader.h
src/ui/gui/psppire-syntax-window.c
src/ui/gui/psppire-syntax-window.h
src/ui/terminal/main.c
src/ui/terminal/terminal-opts.c
src/ui/terminal/terminal-opts.h
src/ui/terminal/terminal-reader.c
tests/output/pivot-table-test.c

index 7341f0760bcf48960a01ca3f378cc18f666c9abe..118e8d3ccd4fd8c56c075c9512d735945f4e6cd9 100644 (file)
@@ -252,8 +252,6 @@ do_parse_commands (struct substring s, enum segmenter_mode mode,
 static bool
 parse_commands (struct lexer *lexer, struct hmap *dummies)
 {
-  enum lex_syntax_mode syntax_mode;
-  enum segmenter_mode mode;
   struct string *outputs;
   struct string input;
   size_t n_values;
@@ -281,16 +279,8 @@ parse_commands (struct lexer *lexer, struct hmap *dummies)
   for (i = 0; i < n_values; i++)
     ds_init_empty (&outputs[i]);
 
-  syntax_mode = lex_get_syntax_mode (lexer);
-  if (syntax_mode == LEX_SYNTAX_AUTO)
-    mode = SEG_MODE_AUTO;
-  else if (syntax_mode == LEX_SYNTAX_INTERACTIVE)
-    mode = SEG_MODE_INTERACTIVE;
-  else if (syntax_mode == LEX_SYNTAX_BATCH)
-    mode = SEG_MODE_BATCH;
-  else
-    NOT_REACHED ();
-  do_parse_commands (ds_ss (&input), mode, dummies, outputs, n_values);
+  do_parse_commands (ds_ss (&input), lex_get_syntax_mode (lexer),
+                     dummies, outputs, n_values);
 
   ds_destroy (&input);
 
index ec84344341065e4244cfa5786476d077529bf773..c322dec54fec94f38939e00fc65d2a105664bd00 100644 (file)
@@ -127,7 +127,7 @@ lex_reader_init (struct lex_reader *reader,
                  const struct lex_reader_class *class)
 {
   reader->class = class;
-  reader->syntax = LEX_SYNTAX_AUTO;
+  reader->syntax = SEG_MODE_AUTO;
   reader->error = LEX_ERROR_CONTINUE;
   reader->file_name = NULL;
   reader->encoding = NULL;
@@ -1162,17 +1162,17 @@ lex_get_encoding (const struct lexer *lexer)
 
 
 /* Returns the syntax mode for the syntax file from which the current drawn is
-   drawn.  Returns LEX_SYNTAX_AUTO for a T_STOP token or if the command's
-   source does not have line numbers.
+   drawn.  Returns SEG_MODE_AUTO for a T_STOP token or if the command's source
+   does not have line numbers.
 
    There is no version of this function that takes an N argument because
    lookahead only works to the end of a command and any given command is always
    within a single syntax file. */
-enum lex_syntax_mode
+enum segmenter_mode
 lex_get_syntax_mode (const struct lexer *lexer)
 {
   struct lex_source *src = lex_source__ (lexer);
-  return src == NULL ? LEX_SYNTAX_AUTO : src->reader->syntax;
+  return src == NULL ? SEG_MODE_AUTO : src->reader->syntax;
 }
 
 /* Returns the error mode for the syntax file from which the current drawn is
@@ -1638,21 +1638,10 @@ static struct lex_source *
 lex_source_create (struct lex_reader *reader)
 {
   struct lex_source *src;
-  enum segmenter_mode mode;
 
   src = xzalloc (sizeof *src);
   src->reader = reader;
-
-  if (reader->syntax == LEX_SYNTAX_AUTO)
-    mode = SEG_MODE_AUTO;
-  else if (reader->syntax == LEX_SYNTAX_INTERACTIVE)
-    mode = SEG_MODE_INTERACTIVE;
-  else if (reader->syntax == LEX_SYNTAX_BATCH)
-    mode = SEG_MODE_BATCH;
-  else
-    NOT_REACHED ();
-  segmenter_init (&src->segmenter, mode);
-
+  segmenter_init (&src->segmenter, reader->syntax);
   src->tokens = deque_init (&src->deque, 4, sizeof *src->tokens);
 
   lex_source_push_endcmd__ (src);
@@ -1694,7 +1683,7 @@ static struct lex_reader_class lex_file_reader_class;
    Returns a null pointer if FILE_NAME cannot be opened. */
 struct lex_reader *
 lex_reader_for_file (const char *file_name, const char *encoding,
-                     enum lex_syntax_mode syntax,
+                     enum segmenter_mode syntax,
                      enum lex_error_mode error)
 {
   struct lex_file_reader *r;
@@ -1782,7 +1771,7 @@ lex_reader_for_substring_nocopy (struct substring s, const char *encoding)
 
   r = xmalloc (sizeof *r);
   lex_reader_init (&r->reader, &lex_string_reader_class);
-  r->reader.syntax = LEX_SYNTAX_AUTO;
+  r->reader.syntax = SEG_MODE_AUTO;
   r->reader.encoding = xstrdup_if_nonnull (encoding);
   r->s = s;
   r->offset = 0;
index efb909baca1d04a597202fe848ff8c07e7543565..caf57503317973788122afd42367d0a4eeaf1b1f 100644 (file)
 
 #include "data/identifier.h"
 #include "data/variable.h"
+#include "language/lexer/segment.h"
 #include "libpspp/cast.h"
 #include "libpspp/compiler.h"
 #include "libpspp/prompt.h"
 
 struct lexer;
 
-/* The syntax mode for which a syntax file is intended. */
-enum lex_syntax_mode
-  {
-    LEX_SYNTAX_AUTO,            /* Try to guess intent. */
-    LEX_SYNTAX_INTERACTIVE,     /* Interactive mode. */
-    LEX_SYNTAX_BATCH            /* Batch mode. */
-  };
-
 /* Handling of errors. */
 enum lex_error_mode
   {
@@ -52,7 +45,7 @@ enum lex_error_mode
 struct lex_reader
   {
     const struct lex_reader_class *class;
-    enum lex_syntax_mode syntax;
+    enum segmenter_mode syntax;
     enum lex_error_mode error;
     char *encoding;
     char *file_name;            /* NULL if not associated with a file. */
@@ -86,7 +79,7 @@ void lex_reader_set_file_name (struct lex_reader *, const char *file_name);
 /* Creating various kinds of lex_readers. */
 struct lex_reader *lex_reader_for_file (const char *file_name,
                                         const char *encoding,
-                                        enum lex_syntax_mode syntax,
+                                        enum segmenter_mode syntax,
                                         enum lex_error_mode error);
 struct lex_reader *lex_reader_for_string (const char *, const char *encoding);
 struct lex_reader *lex_reader_for_format (const char *, const char *, ...)
@@ -184,7 +177,7 @@ void lex_next_error_valist (struct lexer *lexer, int n0, int n1,
   PRINTF_FORMAT (4, 0);
 
 /* Error handling. */
-enum lex_syntax_mode lex_get_syntax_mode (const struct lexer *);
+enum segmenter_mode lex_get_syntax_mode (const struct lexer *);
 enum lex_error_mode lex_get_error_mode (const struct lexer *);
 void lex_discard_rest_of_command (struct lexer *);
 void lex_interactive_reset (struct lexer *);
index f518926de0dd346c3cc9f9a158e2abc323fa429b..eefbde6158bc2bbeba81b11a19161c8df52da42d 100644 (file)
@@ -46,7 +46,7 @@ enum variant
 static int
 do_insert (struct lexer *lexer, struct dataset *ds, enum variant variant)
 {
-  enum lex_syntax_mode syntax_mode;
+  enum segmenter_mode syntax_mode;
   enum lex_error_mode error_mode;
   char *relative_name;
   char *filename;
@@ -76,7 +76,7 @@ do_insert (struct lexer *lexer, struct dataset *ds, enum variant variant)
     }
   lex_get (lexer);
 
-  syntax_mode = LEX_SYNTAX_INTERACTIVE;
+  syntax_mode = SEG_MODE_INTERACTIVE;
   error_mode = LEX_ERROR_CONTINUE;
   cd = false;
   status = CMD_FAILURE;
@@ -98,11 +98,11 @@ do_insert (struct lexer *lexer, struct dataset *ds, enum variant variant)
        {
          lex_match (lexer, T_EQUALS);
          if (lex_match_id (lexer, "INTERACTIVE"))
-           syntax_mode = LEX_SYNTAX_INTERACTIVE;
+           syntax_mode = SEG_MODE_INTERACTIVE;
          else if (lex_match_id (lexer, "BATCH"))
-           syntax_mode = LEX_SYNTAX_BATCH;
+           syntax_mode = SEG_MODE_BATCH;
          else if (lex_match_id (lexer, "AUTO"))
-           syntax_mode = LEX_SYNTAX_AUTO;
+           syntax_mode = SEG_MODE_AUTO;
          else
            {
              lex_error_expecting (lexer, "BATCH", "INTERACTIVE", "AUTO");
index e3e966c1a7bf9db35d65afd9a6d7d314af93efed..b34edf97b7ce430432e0f8af3a6755b6a6dc89c5 100644 (file)
@@ -56,7 +56,7 @@ lex_gtk_text_buffer_reader_cast (struct lex_reader *r)
 struct lex_reader *
 lex_reader_for_gtk_text_buffer (GtkTextBuffer *buffer,
                                 GtkTextIter start, GtkTextIter stop,
-                                enum lex_syntax_mode syntax_mode)
+                                enum segmenter_mode syntax_mode)
 {
   struct lex_gtk_text_buffer_reader *r = xmalloc (sizeof *r);
 
index 4da6844249030271f05220fa70c1065de73ee7c8..c9e84d3f7dd259cec52656bd662e19f983bd37d2 100644 (file)
@@ -23,6 +23,6 @@
 struct lex_reader *lex_reader_for_gtk_text_buffer (
   GtkTextBuffer *buffer,
   GtkTextIter start, GtkTextIter stop,
-  enum lex_syntax_mode);
+  enum segmenter_mode);
 
 #endif
index 4a480a4c635873cca8ecbbe93c183a961d19a5ba..c1f9e4631e63a19442353a2129acf8a8aaeb386c 100644 (file)
@@ -527,11 +527,11 @@ on_syntax (GAction *action, GVariant *param, PsppireSyntaxWindow *sw)
 
   const gchar *what = g_variant_get_string (new_state, NULL);
   if (0 == g_strcmp0 (what, "auto"))
-    sw->syntax_mode = LEX_SYNTAX_AUTO;
+    sw->syntax_mode = SEG_MODE_AUTO;
   else if (0 == g_strcmp0 (what, "interactive"))
-    sw->syntax_mode = LEX_SYNTAX_INTERACTIVE;
+    sw->syntax_mode = SEG_MODE_INTERACTIVE;
   else if (0 == g_strcmp0 (what, "batch"))
-    sw->syntax_mode = LEX_SYNTAX_BATCH;
+    sw->syntax_mode = SEG_MODE_BATCH;
   else
     g_warn_if_reached ();
 }
@@ -783,7 +783,7 @@ psppire_syntax_window_init (PsppireSyntaxWindow *window)
                NULL);
 
   window->encoding = NULL;
-  window->syntax_mode = LEX_SYNTAX_AUTO;
+  window->syntax_mode = SEG_MODE_AUTO;
 
   window->cliptext = NULL;
   window->dispose_has_run = FALSE;
index 3d54681fb2b88862cecf8340d42a035ccf2d5212..161b374597998e861e1421f7f290bd3ec256e5d3 100644 (file)
@@ -53,7 +53,7 @@ struct _PsppireSyntaxWindow
   gchar *encoding;              /* File's encoding. */
   GtkWidget *sb;
   guint text_context;
-  enum lex_syntax_mode syntax_mode;
+  enum segmenter_mode syntax_mode;
 
   GtkPrintSettings *print_settings;
   GtkSourcePrintCompositor *compositor;
index be1d035f21d8097570e5589e777555749d651ff9..630089b2d2bac927e96cda377f24b6de4c8de234 100644 (file)
@@ -62,7 +62,7 @@
 static struct session *the_session;
 
 static void add_syntax_reader (struct lexer *, const char *file_name,
-                               const char *encoding, enum lex_syntax_mode);
+                               const char *encoding, enum segmenter_mode);
 static void bug_handler(int sig);
 static void fpu_init (void);
 static void output_msg (const struct msg *, void *);
@@ -73,7 +73,7 @@ main (int argc, char **argv)
 {
   struct terminal_opts *terminal_opts;
   struct argv_parser *parser;
-  enum lex_syntax_mode syntax_mode;
+  enum segmenter_mode syntax_mode;
   char *syntax_encoding;
   bool process_statrc;
   struct lexer *lexer;
@@ -118,7 +118,7 @@ main (int argc, char **argv)
       char *rc = include_path_search ("rc");
       if (rc != NULL)
         {
-          add_syntax_reader (lexer, rc, "Auto", LEX_SYNTAX_AUTO);
+          add_syntax_reader (lexer, rc, "Auto", SEG_MODE_AUTO);
           free (rc);
         }
     }
@@ -236,7 +236,7 @@ output_msg (const struct msg *m_, void *lexer_)
 
 static void
 add_syntax_reader (struct lexer *lexer, const char *file_name,
-                   const char *encoding, enum lex_syntax_mode syntax_mode)
+                   const char *encoding, enum segmenter_mode syntax_mode)
 {
   struct lex_reader *reader;
 
index eeb10356d8ecf7f971dc82f7c280b12231c1e504..5a6a8fbd236acc335982f816d5e7d78c8394f74e 100644 (file)
@@ -56,7 +56,7 @@ struct terminal_opts
     bool has_output_driver;
     bool has_terminal_driver;
     bool has_error_file;
-    enum lex_syntax_mode *syntax_mode;
+    enum segmenter_mode *syntax_mode;
     bool *process_statrc;
     char **syntax_encoding;
     char *table_look;
@@ -224,11 +224,11 @@ terminal_option_callback (int id, void *to_)
       break;
 
     case OPT_BATCH:
-      *to->syntax_mode = LEX_SYNTAX_BATCH;
+      *to->syntax_mode = SEG_MODE_BATCH;
       break;
 
     case OPT_INTERACTIVE:
-      *to->syntax_mode = LEX_SYNTAX_INTERACTIVE;
+      *to->syntax_mode = SEG_MODE_INTERACTIVE;
       break;
 
     case OPT_SYNTAX_ENCODING:
@@ -260,12 +260,12 @@ terminal_option_callback (int id, void *to_)
 
 struct terminal_opts *
 terminal_opts_init (struct argv_parser *ap,
-                    enum lex_syntax_mode *syntax_mode, bool *process_statrc,
+                    enum segmenter_mode *syntax_mode, bool *process_statrc,
                     char **syntax_encoding)
 {
   struct terminal_opts *to;
 
-  *syntax_mode = LEX_SYNTAX_AUTO;
+  *syntax_mode = SEG_MODE_AUTO;
   *process_statrc = true;
   *syntax_encoding = "Auto";
 
index 64581baea304c81558074e3298d9c8744854ca03..a21a772b8e8b2e40bda00ef2bb49f5acd2c12074 100644 (file)
@@ -26,7 +26,7 @@ struct lexer;
 struct terminal_opts;
 
 struct terminal_opts *terminal_opts_init (struct argv_parser *,
-                                          enum lex_syntax_mode *,
+                                          enum segmenter_mode *,
                                           bool *process_statrc,
                                           char **syntax_encoding);
 void terminal_opts_done (struct terminal_opts *, int argc, char *argv[]);
index e0f219826dfc4820f55e519dbc9c3c8c4d737929..e418ec7e086375f0eb8d6606754595fdc3a23a1c 100644 (file)
@@ -196,7 +196,7 @@ terminal_reader_create (void)
 
   r = xzalloc (sizeof *r);
   r->reader.class = &terminal_reader_class;
-  r->reader.syntax = LEX_SYNTAX_INTERACTIVE;
+  r->reader.syntax = SEG_MODE_INTERACTIVE;
   r->reader.error = LEX_ERROR_TERMINAL;
   r->reader.file_name = NULL;
   r->s = ss_empty ();
index 18e7d0499f5cd44bc6bf67cca2ebd83015ebf946..cf476d5392c97d8c0ba6581791ca503666d96305 100644 (file)
@@ -68,7 +68,7 @@ main (int argc, char **argv)
   settings_init ();
 
   struct lex_reader *reader = lex_reader_for_file (input_file_name, NULL,
-                                                   LEX_SYNTAX_AUTO,
+                                                   SEG_MODE_AUTO,
                                                    LEX_ERROR_CONTINUE);
   if (!reader)
     exit (1);