summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>1996-11-08 10:49:35 -0200
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>1996-11-08 10:49:35 -0200
commit60242e1930e5999a5fcc5491cd597cc2a5bd97fb (patch)
treec1ffda65488af6a73ae5667136473ec1f4e63d5e
parenta0e9bfbb48fdfae8188333710c2ce86051477a96 (diff)
downloadlua-60242e1930e5999a5fcc5491cd597cc2a5bd97fb.tar.gz
lua-60242e1930e5999a5fcc5491cd597cc2a5bd97fb.tar.bz2
lua-60242e1930e5999a5fcc5491cd597cc2a5bd97fb.zip
error message for syntax "1..2";
syntax error function is in "lex.c" (it has the token)
-rw-r--r--lex.c25
1 files changed, 18 insertions, 7 deletions
diff --git a/lex.c b/lex.c
index e34bde7b..ce0b4dac 100644
--- a/lex.c
+++ b/lex.c
@@ -1,4 +1,4 @@
1char *rcs_lex = "$Id: lex.c,v 2.36 1996/09/25 21:52:00 roberto Exp roberto $"; 1char *rcs_lex = "$Id: lex.c,v 2.38 1996/11/08 12:20:34 roberto Exp roberto $";
2 2
3 3
4#include <ctype.h> 4#include <ctype.h>
@@ -30,9 +30,15 @@ void lua_setinput (Input fn)
30 input = fn; 30 input = fn;
31} 31}
32 32
33char *lua_lasttext (void) 33void luaI_syntaxerror (char *s)
34{ 34{
35 return luaI_buffer(1); 35 char msg[256];
36 char *token = luaI_buffer(1);
37 if (token[0] == 0)
38 token = "<eof>";
39 sprintf (msg,"%s; last token read: \"%s\" at line %d in file `%s'",
40 s, token, lua_linenumber, lua_parsedfile);
41 lua_error (msg);
36} 42}
37 43
38 44
@@ -75,11 +81,11 @@ void luaI_addReserved (void)
75static int inclinenumber (int pragma_allowed) 81static int inclinenumber (int pragma_allowed)
76{ 82{
77 if (pragma_allowed && current == '$') { /* is a pragma? */ 83 if (pragma_allowed && current == '$') { /* is a pragma? */
78 char buff[MINBUFF]; 84 char *buff = luaI_buffer(MINBUFF+1);
79 int i = 0; 85 int i = 0;
80 next(); /* skip $ */ 86 next(); /* skip $ */
81 while (isalnum(current)) { 87 while (isalnum(current)) {
82 if (i >= MINBUFF) lua_error("pragma too long"); 88 if (i >= MINBUFF) luaI_syntaxerror("pragma too long");
83 buff[i++] = current; 89 buff[i++] = current;
84 next(); 90 next();
85 } 91 }
@@ -88,7 +94,7 @@ static int inclinenumber (int pragma_allowed)
88 lua_debug = 1; 94 lua_debug = 1;
89 else if (strcmp(buff, "nodebug") == 0) 95 else if (strcmp(buff, "nodebug") == 0)
90 lua_debug = 0; 96 lua_debug = 0;
91 else lua_error("invalid pragma"); 97 else luaI_syntaxerror("invalid pragma");
92 } 98 }
93 return ++lua_linenumber; 99 return ++lua_linenumber;
94} 100}
@@ -285,7 +291,12 @@ int luaY_lex (void)
285 a=10.0*a+(current-'0'); 291 a=10.0*a+(current-'0');
286 save_and_next(); 292 save_and_next();
287 } while (isdigit(current)); 293 } while (isdigit(current));
288 if (current == '.') save_and_next(); 294 if (current == '.') {
295 save_and_next();
296 if (current == '.')
297 luaI_syntaxerror(
298 "ambiguous syntax (decimal point x string concatenation)");
299 }
289 fraction: 300 fraction:
290 { double da=0.1; 301 { double da=0.1;
291 while (isdigit(current)) 302 while (isdigit(current))