aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>1996-02-05 11:26:01 -0200
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>1996-02-05 11:26:01 -0200
commit1431b52e769d1dc5f05d9eef10f7ad56bb6c44e6 (patch)
treecfe517e23f6fc8dc5fa45a3a543ec5a5e29e92d6
parent98fe770cab1d7f38ec1797b7dbb595727f2fdfa2 (diff)
downloadlua-1431b52e769d1dc5f05d9eef10f7ad56bb6c44e6.tar.gz
lua-1431b52e769d1dc5f05d9eef10f7ad56bb6c44e6.tar.bz2
lua-1431b52e769d1dc5f05d9eef10f7ad56bb6c44e6.zip
improve of compiling error messages.
-rw-r--r--lua.stx23
1 files changed, 13 insertions, 10 deletions
diff --git a/lua.stx b/lua.stx
index 16ec6890..5426b4c3 100644
--- a/lua.stx
+++ b/lua.stx
@@ -1,6 +1,6 @@
1%{ 1%{
2 2
3char *rcs_luastx = "$Id: lua.stx,v 3.26 1996/01/22 18:39:37 roberto Exp roberto $"; 3char *rcs_luastx = "$Id: lua.stx,v 3.27 1996/01/23 17:50:29 roberto Exp $";
4 4
5#include <stdio.h> 5#include <stdio.h>
6#include <stdlib.h> 6#include <stdlib.h>
@@ -56,9 +56,12 @@ static int nfields=0;
56 56
57static void yyerror (char *s) 57static void yyerror (char *s)
58{ 58{
59 static char msg[256]; 59 char msg[256];
60 sprintf (msg,"%s near \"%s\" at line %d in file `%s'", 60 char *token = lua_lasttext();
61 s, lua_lasttext (), lua_linenumber, lua_parsedfile); 61 if (token[0] == 0)
62 token = "<eof>";
63 sprintf (msg,"%s; last token read: \"%s\" at line %d in file `%s'",
64 s, token, lua_linenumber, lua_parsedfile);
62 lua_error (msg); 65 lua_error (msg);
63} 66}
64 67
@@ -67,7 +70,7 @@ static void code_byte (Byte c)
67 if (pc>maxcurr-2) /* 1 byte free to code HALT of main code */ 70 if (pc>maxcurr-2) /* 1 byte free to code HALT of main code */
68 { 71 {
69 if (maxcurr >= MAX_INT) 72 if (maxcurr >= MAX_INT)
70 lua_error("code size overflow"); 73 yyerror("code size overflow");
71 maxcurr *= 2; 74 maxcurr *= 2;
72 if (maxcurr >= MAX_INT) 75 if (maxcurr >= MAX_INT)
73 maxcurr = MAX_INT; 76 maxcurr = MAX_INT;
@@ -117,7 +120,7 @@ static void push_field (Word name)
117 if (nfields < MAXFIELDS) 120 if (nfields < MAXFIELDS)
118 fields[nfields++] = name; 121 fields[nfields++] = name;
119 else 122 else
120 lua_error ("too many fields in nested constructors"); 123 yyerror ("too many fields in nested constructors");
121} 124}
122 125
123static void flush_record (int n) 126static void flush_record (int n)
@@ -142,7 +145,7 @@ static void flush_list (int m, int n)
142 code_byte(m); 145 code_byte(m);
143 } 146 }
144 else 147 else
145 lua_error ("list constructor too long"); 148 yyerror ("list constructor too long");
146 code_byte(n); 149 code_byte(n);
147} 150}
148 151
@@ -151,7 +154,7 @@ static void add_localvar (TreeNode *name)
151 if (nlocalvar < MAXLOCALS) 154 if (nlocalvar < MAXLOCALS)
152 localvar[nlocalvar++] = name; 155 localvar[nlocalvar++] = name;
153 else 156 else
154 lua_error ("too many local variables"); 157 yyerror ("too many local variables");
155} 158}
156 159
157static void store_localvar (TreeNode *name, int n) 160static void store_localvar (TreeNode *name, int n)
@@ -159,7 +162,7 @@ static void store_localvar (TreeNode *name, int n)
159 if (nlocalvar+n < MAXLOCALS) 162 if (nlocalvar+n < MAXLOCALS)
160 localvar[nlocalvar+n] = name; 163 localvar[nlocalvar+n] = name;
161 else 164 else
162 lua_error ("too many local variables"); 165 yyerror ("too many local variables");
163} 166}
164 167
165static void add_varbuffer (Long var) 168static void add_varbuffer (Long var)
@@ -167,7 +170,7 @@ static void add_varbuffer (Long var)
167 if (nvarbuffer < MAXVAR) 170 if (nvarbuffer < MAXVAR)
168 varbuffer[nvarbuffer++] = var; 171 varbuffer[nvarbuffer++] = var;
169 else 172 else
170 lua_error ("variable buffer overflow"); 173 yyerror ("variable buffer overflow");
171} 174}
172 175
173static void code_number (float f) 176static void code_number (float f)