[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Pimp my Lua
- From: therandthem <therandthem@...>
- Date: Tue, 7 Nov 2006 13:06:32 -0800 (PST)
Your additional explaination was very much
appreciated. I didn't realize that lua did not have
the C style operators and now it makes perfect sense.
On ? cond {true_choice, false_choice} can you explain
a bit more about what _G['?'](cond){ true_choice,
false_choice } is doing? Is _G['?'] making '?' a
token? If so, what is happenning in the parensthesis
that would make it choose one of the items in the
braces? Sorry to try and get a little Lua tutorial
out of this :)
How does this compare with Lisp/Scheme macros? Have
you seen www.livelogix.net? It does a little macro
action on Python to extend syntax.
I'll be honest. I've been watching Lua for a few
years and haven't been very interested in it's syntax.
However, I have been very impressed by its community
and the runtime performance. I see Lua as a great
runtime platform. Anything that opens up its syntax
is exactly what interests me.
Thanks,
McKinley
--- Asko Kauppi <askok@dnainternet.net> wrote:
>
> Yes, thanks for asking.
>
> It is not really a patch, but a set of "token
> filters" to be used
> with LHF's earlier patch.
>
> Tokens are the first level parsed version of your
> Lua code; between
> source code and Lua bytecode. They are normally only
> handled
> internally, but token filter patch allows one to
> insert his/her
> custom rules, to change the way Lua syntax is.
>
> The elegancy lies in being able to adapt the
> language, without
> changing the C code a bit. Therefore, this allows
> extensions/mods to
> be used by anyone, anywhere, on any system. This is
> all background,
> presentation of what "token filtering" itself is.
>
> Usage:
> lua -lfilter yourcode.lua
>
> Loading filter.lua prepares Lua to load the real
> code, using the
> better/worse/different syntax.
>
> Now, to my packet:
>
> ftools.lua
> - higher level interface for making token filters
> - ability to have multiple filters, loaded from
> separate files
> (maybe multiple authors)
>
> ftricond.lua
> ? cond { true_choice, false_choice } The
> ternary operator, as
> in C/Perl
>
> fselect.lua
> #... -> select('#',...) Shorthand and
> more readable to
> managing multiple
> ...[n] -> (select(n,...)) parameter lists
> (...)
>
> finc.lua
> exp += -> exp = exp + C-style += operations:
> myvar += 1
> exp -= -> exp = exp -
> exp *= -> exp = exp *
> exp /= -> exp = exp /
> exp ..= -> exp = exp ..
>
> fdotuntil.lua
> tbl.until etc. Normally, Lua does not allow
> "until", "function",
> "repeat", "true", "false", "nil" as table
> indices.
>
> There's no harm in using these mods, any valid Lua
> code will run with
> the filters applied as well. The purpose of token
> filtering, by lhf
> was to give a testing ground for custom syntax
> changes, some of which
> might make it to future Lua proper. Based on my
> experiences, token
> filtering is Simply Great for this, and will reduce
> the need for
> special this-and-that patches by a magnitude.
>
> -asko
>
>
>
> therandthem kirjoitti 7.11.2006 kello 1.09:
>
> > I'm new to Lua and do not totally understand the
> basic
> > syntax, let alone this patch you describe. Could
> you
> > provide a simpler overview of what you are
> describing
> > here?
> >
> > Thanks,
> >
> > McKinley
> >
> > --- askok@dnainternet.net wrote:
> >
> >>
> >> Attached is a set of token tuning tools, and some
> >> tune-ups, to give your Lua a flashy, almost
> >> syntax-over-sugary look.
> >> I don't promise furry backseats, no built-in XBox
> >> 360, but
> >> almost. :)
> >>
> >> Requirements:
> >> Lua 5.1 with token filter patch applied
> (not
> >> included)
> >>
> >> Ignition:
> >> make LUA=path-to-your-modded/lua
> >>
> >> Tested on:
> >> OS X 10.4 (but there's nothing system
> >> specific)
> >>
> >> Gains:
> >> ? cond { true_choice, false_choice } -->
> >> _G['?'](cond){ true_choice, false_choice }
> >> #... -> select('#',...)
> >> ...[n] -> (select(n,...))
> >> exp += -> exp = exp +
> >> exp -= -> exp = exp -
> >> exp *= -> exp = exp *
> >> exp /= -> exp = exp /
> >> exp ..= -> exp = exp ..
> >> tbl.until (and other reserved
> words:
> >> function, repeat, nil, false, true)
> >> {|, until=
> >> obj:until
> >> =|,|(|{ do -> =|,|(|{ function()
> >>
> >> The important part really is the ftools.lua,
> which
> >> allows
> >> multiple filters to co-operate, without need to
> know
> >> of
> >> each other. As to my knowledge, this hasn't been
> >> possible
> >> earlier.
> >>
> >> -asko
> >>
> >
> >
> >
> >
> >
> >
>
______________________________________________________________________
>
> > ______________
> > Sponsored Link
> >
> > $200,000 mortgage for $660/mo - 30/15 yr fixed,
> reduce debt, home
> > equity -
> > Click now for info
> http://yahoo.ratemarketplace.com
>
>
____________________________________________________________________________________
Do you Yahoo!?
Everyone is raving about the all-new Yahoo! Mail.
http://new.mail.yahoo.com