diff options
author | Waldemar Celes <celes@tecgraf.puc-rio.br> | 1994-09-26 13:21:52 -0300 |
---|---|---|
committer | Waldemar Celes <celes@tecgraf.puc-rio.br> | 1994-09-26 13:21:52 -0300 |
commit | 7cfb5ff41f993c0f7e248f6830e86055bddcd3ab (patch) | |
tree | 792fae7aaea7494f550422512e52cd7235154c83 | |
parent | 24c962de431934dc827cac2e98442fa6c1b09ce9 (diff) | |
download | lua-7cfb5ff41f993c0f7e248f6830e86055bddcd3ab.tar.gz lua-7cfb5ff41f993c0f7e248f6830e86055bddcd3ab.tar.bz2 lua-7cfb5ff41f993c0f7e248f6830e86055bddcd3ab.zip |
Mudancas para tornar lex.c um modulo independente dos outros
modulos de Lua
-rw-r--r-- | lex.c | 58 |
1 files changed, 34 insertions, 24 deletions
@@ -1,5 +1,8 @@ | |||
1 | char *rcs_lex = "$Id: lex.c,v 2.4 1994/09/05 19:14:40 celes Exp lhf $"; | 1 | char *rcs_lex = "$Id: lex.c,v 2.5 1994/09/22 12:44:00 lhf Exp celes $"; |
2 | /*$Log: lex.c,v $ | 2 | /*$Log: lex.c,v $ |
3 | * Revision 2.5 1994/09/22 12:44:00 lhf | ||
4 | * added support for ugly tokens | ||
5 | * | ||
3 | * Revision 2.4 1994/09/05 19:14:40 celes | 6 | * Revision 2.4 1994/09/05 19:14:40 celes |
4 | * escapes \' e \" em strings; correcao do escape \\ | 7 | * escapes \' e \" em strings; correcao do escape \\ |
5 | * | 8 | * |
@@ -27,13 +30,12 @@ char *rcs_lex = "$Id: lex.c,v 2.4 1994/09/05 19:14:40 celes Exp lhf $"; | |||
27 | 30 | ||
28 | #include <ctype.h> | 31 | #include <ctype.h> |
29 | #include <math.h> | 32 | #include <math.h> |
33 | #include <stdio.h> | ||
30 | #include <stdlib.h> | 34 | #include <stdlib.h> |
31 | #include <string.h> | 35 | #include <string.h> |
32 | 36 | ||
33 | #include "opcode.h" | 37 | #include "opcode.h" |
34 | #include "hash.h" | ||
35 | #include "inout.h" | 38 | #include "inout.h" |
36 | #include "table.h" | ||
37 | #include "y.tab.h" | 39 | #include "y.tab.h" |
38 | 40 | ||
39 | #define lua_strcmp(a,b) (a[0]<b[0]?(-1):(a[0]>b[0]?(1):strcmp(a,b))) | 41 | #define lua_strcmp(a,b) (a[0]<b[0]?(-1):(a[0]>b[0]?(1):strcmp(a,b))) |
@@ -137,6 +139,9 @@ int yylex () | |||
137 | while (1) | 139 | while (1) |
138 | { | 140 | { |
139 | yytextLast = yytext[currentText]; | 141 | yytextLast = yytext[currentText]; |
142 | #if 0 | ||
143 | fprintf(stderr,"'%c' %d\n",current,current); | ||
144 | #endif | ||
140 | switch (current) | 145 | switch (current) |
141 | { | 146 | { |
142 | case '\n': lua_linenumber++; | 147 | case '\n': lua_linenumber++; |
@@ -168,6 +173,11 @@ int yylex () | |||
168 | do { next(); } while (current != '\n' && current != 0); | 173 | do { next(); } while (current != '\n' && current != 0); |
169 | continue; | 174 | continue; |
170 | 175 | ||
176 | case '=': | ||
177 | save_and_next(); | ||
178 | if (current != '=') return '='; | ||
179 | else { save_and_next(); return EQ; } | ||
180 | |||
171 | case '<': | 181 | case '<': |
172 | save_and_next(); | 182 | save_and_next(); |
173 | if (current != '=') return '<'; | 183 | if (current != '=') return '<'; |
@@ -213,7 +223,7 @@ int yylex () | |||
213 | } | 223 | } |
214 | next(); /* skip the delimiter */ | 224 | next(); /* skip the delimiter */ |
215 | *yytextLast = 0; | 225 | *yytextLast = 0; |
216 | yylval.vWord = lua_findconstant (yytext[currentText]); | 226 | yylval.pChar = yytext[currentText]; |
217 | return STRING; | 227 | return STRING; |
218 | } | 228 | } |
219 | 229 | ||
@@ -268,26 +278,26 @@ fraction: while (isdigit(current)) save_and_next(); | |||
268 | yylval.vFloat = atof(yytext[currentText]); | 278 | yylval.vFloat = atof(yytext[currentText]); |
269 | return NUMBER; | 279 | return NUMBER; |
270 | 280 | ||
271 | case U_and: return AND; | 281 | case U_and: next(); return AND; |
272 | case U_do: return DO; | 282 | case U_do: next(); return DO; |
273 | case U_else: return ELSE; | 283 | case U_else: next(); return ELSE; |
274 | case U_elseif: return ELSEIF; | 284 | case U_elseif: next(); return ELSEIF; |
275 | case U_end: return END; | 285 | case U_end: next(); return END; |
276 | case U_function: return FUNCTION; | 286 | case U_function: next(); return FUNCTION; |
277 | case U_if: return IF; | 287 | case U_if: next(); return IF; |
278 | case U_local: return LOCAL; | 288 | case U_local: next(); return LOCAL; |
279 | case U_nil: return NIL; | 289 | case U_nil: next(); return NIL; |
280 | case U_not: return NOT; | 290 | case U_not: next(); return NOT; |
281 | case U_or: return OR; | 291 | case U_or: next(); return OR; |
282 | case U_repeat: return REPEAT; | 292 | case U_repeat: next(); return REPEAT; |
283 | case U_return: return RETURN; | 293 | case U_return: next(); return RETURN; |
284 | case U_then: return THEN; | 294 | case U_then: next(); return THEN; |
285 | case U_until: return UNTIL; | 295 | case U_until: next(); return UNTIL; |
286 | case U_while: return WHILE; | 296 | case U_while: next(); return WHILE; |
287 | case U_le: return LE; | 297 | case U_le: next(); return LE; |
288 | case U_ge: return GE; | 298 | case U_ge: next(); return GE; |
289 | case U_ne: return NE; | 299 | case U_ne: next(); return NE; |
290 | case U_sc: return CONC; | 300 | case U_sc: next(); return CONC; |
291 | 301 | ||
292 | default: /* also end of file */ | 302 | default: /* also end of file */ |
293 | { | 303 | { |