X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=src%2Flexer.c;h=ff93e0d9f42f9aa27520e4434f50377de7a8145e;hb=6cec94f8545d5895b5bdfa73798b386b453ffa18;hp=575e917bbd4f81696d7d38c2ff2404f482bd3e60;hpb=1339492699ce7e12c9bf9fa17f9d60a66024cbd1;p=pspp diff --git a/src/lexer.c b/src/lexer.c index 575e917bbd..ff93e0d9f4 100644 --- a/src/lexer.c +++ b/src/lexer.c @@ -116,7 +116,7 @@ restore_token (void) assert (put_token != 0); token = put_token; ds_replace (&tokstr, ds_c_str (&put_tokstr)); - st_trim_copy (tokid, ds_c_str (&tokstr), sizeof tokid); + str_copy_trunc (tokid, sizeof tokid, ds_c_str (&tokstr)); tokval = put_tokval; put_token = 0; } @@ -358,7 +358,7 @@ lex_get (void) ds_putc (&tokstr, *prog++); /* Copy tokstr to tokid, possibly truncating it.*/ - st_trim_copy (tokid, ds_c_str (&tokstr), sizeof tokid); + str_copy_trunc (tokid, sizeof tokid, ds_c_str (&tokstr)); /* Determine token type. */ token = lex_id_to_token (ds_c_str (&tokstr), ds_length (&tokstr)); @@ -386,11 +386,18 @@ void lex_error (const char *message, ...) { char *token_rep; + char where[128]; token_rep = lex_token_representation (); - if (token_rep[0] == 0) - msg (SE, _("Syntax error at end of file.")); - else if (message) + if (token == T_STOP) + strcpy (where, "end of file"); + else if (token == '.') + strcpy (where, "end of command"); + else + snprintf (where, sizeof where, "`%s'", token_rep); + free (token_rep); + + if (message) { char buf[1024]; va_list args; @@ -399,12 +406,10 @@ lex_error (const char *message, ...) vsnprintf (buf, 1024, message, args); va_end (args); - msg (SE, _("Syntax error %s at `%s'."), buf, token_rep); + msg (SE, _("Syntax error %s at %s."), buf, where); } else - msg (SE, _("Syntax error at `%s'."), token_rep); - - free (token_rep); + msg (SE, _("Syntax error at %s."), where); } /* Checks that we're at end of command. @@ -539,7 +544,7 @@ lex_force_match (int t) } else { - lex_error (_("expecting %s"), lex_token_name (t)); + lex_error (_("expecting `%s'"), lex_token_name (t)); return 0; } } @@ -715,7 +720,7 @@ lex_put_back_id (const char *id) save_token (); token = T_ID; ds_replace (&tokstr, id); - st_trim_copy (tokid, ds_c_str (&tokstr), sizeof tokid); + str_copy_trunc (tokid, sizeof tokid, ds_c_str (&tokstr)); } /* Weird line processing functions. */