lexer: Drop lexer parameter from lex_sbc_missing().
authorBen Pfaff <blp@cs.stanford.edu>
Sat, 5 Nov 2011 20:07:44 +0000 (13:07 -0700)
committerBen Pfaff <blp@cs.stanford.edu>
Sun, 6 Nov 2011 16:19:23 +0000 (08:19 -0800)
There's no point in passing in the lexer and using lex_error(),
because the extra information that lex_error() outputs does
not help the user find the error.

src/language/control/loop.c
src/language/data-io/combine-files.c
src/language/data-io/file-handle.q
src/language/data-io/get.c
src/language/data-io/save-translate.c
src/language/data-io/save.c
src/language/lexer/lexer.c
src/language/lexer/lexer.h

index e4877b9e82cd126a90d9936953760df456d6f66d..cece7f68f647cf91e1fd925759c9b7c7a0c80f06 100644 (file)
@@ -261,7 +261,7 @@ parse_index_clause (struct dataset *ds, struct lexer *lexer,
     }
   if (loop->last_expr == NULL)
     {
-      lex_sbc_missing (lexer, "TO");
+      lex_sbc_missing ("TO");
       return false;
     }
   if (loop->by_expr == NULL)
index e09b36ecad9dde80b16e521ef21cfe22c9bbc01a..f306cad6f645c1b10ce408233e78da63fe2d4fe6 100644 (file)
@@ -376,7 +376,7 @@ combine_files (enum comb_command_type command,
     {
       if (command == COMB_UPDATE)
         {
-          msg (SE, _("The BY subcommand is required."));
+          lex_sbc_missing ("BY");
           goto error;
         }
       if (n_tables)
index 9bf6a6bf52ffaa664aaea7db9717fcefbc23aee9..80fdacab78fed60a7610417648201d9ddae9109f 100644 (file)
@@ -86,7 +86,7 @@ cmd_file_handle (struct lexer *lexer, struct dataset *ds)
   properties = *fh_default_properties ();
   if (cmd.s_name == NULL)
     {
-      lex_sbc_missing (lexer, "NAME");
+      lex_sbc_missing ("NAME");
       goto exit_free_cmd;
     }
 
index ea65b5c14e7524c4ad14453ef2b972524f3547bf..028cc3c6c525989564d841ea3c0e0fecf2cfd257 100644 (file)
@@ -106,7 +106,7 @@ parse_read_command (struct lexer *lexer, struct dataset *ds, enum reader_command
 
   if (fh == NULL)
     {
-      lex_sbc_missing (lexer, "FILE");
+      lex_sbc_missing ("FILE");
       goto error;
     }
 
index cbed4b1008e656a4aab819280cc5db2de0e4ff8a..bc68e553e1ecb07d0587afdeed944b86af5a05a2 100644 (file)
@@ -237,12 +237,12 @@ cmd_save_translate (struct lexer *lexer, struct dataset *ds)
 
   if (type == 0)
     {
-      lex_sbc_missing (lexer, "TYPE");
+      lex_sbc_missing ("TYPE");
       goto error;
     }
   else if (handle == NULL)
     {
-      lex_sbc_missing (lexer, "OUTFILE");
+      lex_sbc_missing ("OUTFILE");
       goto error;
     }
   else if (!replace && fn_exists (fh_get_file_name (handle)))
index 66cdd45293aa4efcd79d3a1f630e13aa43573c00..b930855ec2e27ac246fe884feace49efd1c0c428 100644 (file)
@@ -279,7 +279,7 @@ parse_write_command (struct lexer *lexer, struct dataset *ds,
 
   if (handle == NULL)
     {
-      lex_sbc_missing (lexer, "OUTFILE");
+      lex_sbc_missing ("OUTFILE");
       goto error;
     }
 
index a356b3821de28150b848ff6ca2131f61dfdc9b84..e3725681c9c6a207332987046e5e9bee721008ee 100644 (file)
@@ -337,20 +337,29 @@ lex_error_expecting (struct lexer *lexer, const char *option0, ...)
     }
 }
 
-/* Reports an error to the effect that subcommand SBC may only be
-   specified once. */
+/* Reports an error to the effect that subcommand SBC may only be specified
+   once.
+
+   This function does not take a lexer as an argument or use lex_error(),
+   because the result would ordinarily just be redundant: "Syntax error at
+   SUBCOMMAND: Subcommand SUBCOMMAND may only be specified once.", which does
+   not help the user find the error. */
 void
 lex_sbc_only_once (const char *sbc)
 {
   msg (SE, _("Subcommand %s may only be specified once."), sbc);
 }
 
-/* Reports an error to the effect that subcommand SBC is
-   missing. */
+/* Reports an error to the effect that subcommand SBC is missing.
+
+   This function does not take a lexer as an argument or use lex_error(),
+   because a missing subcommand can normally be detected only after the whole
+   command has been parsed, and so lex_error() would always report "Syntax
+   error at end of command", which does not help the user find the error. */
 void
-lex_sbc_missing (struct lexer *lexer, const char *sbc)
+lex_sbc_missing (const char *sbc)
 {
-  lex_error (lexer, _("missing required subcommand %s"), sbc);
+  msg (SE, _("Required subcommand %s was not specified."), sbc);
 }
 
 /* Prints a syntax error message containing the current token and
index b0787e8f44eb4f55a4da4799aa62fdec96a7f223..2a7055a5ce73fdcfa9efafa3ae02905eebac49ad 100644 (file)
@@ -158,7 +158,7 @@ int lex_end_of_command (struct lexer *);
 void lex_error_expecting (struct lexer *, const char *, ...) SENTINEL(0);
 
 void lex_sbc_only_once (const char *);
-void lex_sbc_missing (struct lexer *, const char *);
+void lex_sbc_missing (const char *);
 
 void lex_error_valist (struct lexer *, const char *, va_list)
   PRINTF_FORMAT (2, 0);