[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Lua plans to add meta-programming support?
- From: Luiz Henrique de Figueiredo <lhf@...>
- Date: Sat, 10 Mar 2012 15:42:36 -0300
> so if Lua can provider a oken-filter
Adding a token filter to Lua 5.2 remains just as easy as it was in Lua 5.1:
1. get a copy of llex.c.
2. add <<#include "proxy.c">> just before the definition of luaX_next in llex.c.
3. write a filter in proxy.c. It can be one that does simple token shuffling
or a generic one that calls Lua. Token filters written in C tend to be
easy to get right for simple tasks such as say allowing reserved words
as field names. See the code below.
4. rebuild Lua and enjoy.
/*
* proxy.c
* lexer proxy for Lua parser -- allows reserved words as field names
* Luiz Henrique de Figueiredo <lhf@tecgraf.puc-rio.br>
* 18 Nov 2010 14:59:04
* This code is hereby placed in the public domain.
* Add <<#include "proxy.c">> just before the definition of luaX_next in llex.c
*/
#define LAST_RESERVED TK_WHILE
static int nexttoken(LexState *ls, SemInfo *seminfo)
{
static int last=TK_EOS;
int t=llex(ls,seminfo);
if (last=='.' && t>=FIRST_RESERVED && t<=LAST_RESERVED) {
return TK_NAME;
}
last=t;
return t;
}
#define llex nexttoken