12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- %{
- char *rcs_lualex = "$Id: $";
- #include <stdlib.h>
- #include <string.h>
- #include "opcode.h"
- #include "hash.h"
- #include "inout.h"
- #include "table.h"
- #include "y.tab.h"
- #undef input
- #undef unput
- static Input input;
- static Unput unput;
- void lua_setinput (Input fn)
- {
- input = fn;
- }
- void lua_setunput (Unput fn)
- {
- unput = fn;
- }
- char *lua_lasttext (void)
- {
- return yytext;
- }
- %}
- %%
- [ \t]* ;
- ^"$debug" {yylval.vInt = 1; return DEBUG;}
- ^"$nodebug" {yylval.vInt = 0; return DEBUG;}
- \n lua_linenumber++;
- "--".* ;
- "local" return LOCAL;
- "if" return IF;
- "then" return THEN;
- "else" return ELSE;
- "elseif" return ELSEIF;
- "while" return WHILE;
- "do" return DO;
- "repeat" return REPEAT;
- "until" return UNTIL;
- "function" {
- yylval.vWord = lua_nfile-1;
- return FUNCTION;
- }
- "end" return END;
- "return" return RETURN;
- "local" return LOCAL;
- "nil" return NIL;
- "and" return AND;
- "or" return OR;
- "not" return NOT;
- "~=" return NE;
- "<=" return LE;
- ">=" return GE;
- ".." return CONC;
- \"[^\"]*\" |
- \'[^\']*\' {
- yylval.vWord = lua_findenclosedconstant (yytext);
- return STRING;
- }
- [0-9]+("."[0-9]*)? |
- ([0-9]+)?"."[0-9]+ |
- [0-9]+("."[0-9]*)?[dDeEgG][+-]?[0-9]+ |
- ([0-9]+)?"."[0-9]+[dDeEgG][+-]?[0-9]+ {
- yylval.vFloat = atof(yytext);
- return NUMBER;
- }
- [a-zA-Z_][a-zA-Z0-9_]* {
- yylval.vWord = lua_findsymbol (yytext);
- return NAME;
- }
- . return *yytext;
|