[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: On the subject of Lua's grammar... --[[ ]]
- From: "Leandro Candido" <enclle@...>
- Date: Mon, 1 Dec 2003 18:33:26 -0200
Hello,
Oops, where you see the word PARSER, close the eyes and imagine the word
INTERPRETER ;-), in the past mail.
God
bless you,
Leandro.
----- Original Message -----
From: "Leandro Candido" <enclle@click21.com.br>
To: "Lua list" <lua@bazar2.conectiva.com.br>
Sent: Saturday, November 29, 2003 10:32 PM
Subject: Re: On the subject of Lua's grammar... --[[ ]]
> Hello all,
>
> Thank you Philipp for the code, you only forgot the userdata type
> metamethods, etc.. ). In my opinion, it's best to have in the language
> itself, as this speed up the code and can use the parser to check types,
> etc...
>
> The
> God's Peace,
>
>
> Leandro.
>
> ----- Original Message -----
> From: "Philipp Janda" <siffiejoe@gmx.net>
> To: <lua@bazar2.conectiva.com.br>
> Sent: Friday, November 28, 2003 6:50 AM
> Subject: Re: On the subject of Lua's grammar... --[[ ]]
>
>
> > Leandro Candido schrieb:
> > > Hello all,
> > >
> > >
> > > As we are in suggestion time, i will make my one. Can you guys add
> range
> > > operator? To use like:
> > >
> > > for x in 0..10 do print(x) end or
> > > for x in 'A'..'Z' do print(x) end
> > >
> > > Of course the .. need be other letters/signs or we need to change
> the
> > > concat operator, because it is "..".
> > > Perhaps the best is the word "to":
> > >
> > > for x in 0 to 10 do print(x) end, y = 0 to 10 or y = { 0 to
10 } --
> > > equal y = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }
> >
> > What about this:
> >
> > local function num_range_iterator( state, var1 )
> > -- state is the end of the iteration
> > var1 = var1 + 1
> > if var1 > state then
> > return nil
> > end
> > return var1
> > end
> >
> > local function char_range_iterator( state, var1 )
> > -- state is the end of the iteration
> > local ret = num_range_iterator( state, string.byte( var1 ) )
> > return ret and string.char( ret )
> > end
> >
> >
> > function range( start, ending )
> > local stype, etype = type( start ), type( ending )
> > if stype == "string" and etype == "string" then
> > return char_range_iterator, string.byte( ending ),
> > string.char( string.byte( start )-1 )
> > elseif stype == "number" and etype == "number" then
> > return num_range_iterator, ending, start-1
> > else
> > error( "type error in function `range' (strings or numbers
> expected)" )
> > end
> > end
> >
> >
> > function from_to( start, ending )
> > local tab = {}
> > for x in range( start, ending ) do
> > table.insert( tab, x )
> > end
> > return unpack( tab )
> > end
> >
> > --------- test -------------------------------------------------------
> >
> >
> > for x in range( 1, 10 ) do
> > print( x )
> > end
> >
> > for x in range( 'A', 'Z' ) do
> > print( x )
> > end
> >
> > local y = { from_to( 1, 10 ) }
> > for i,j in ipairs( y ) do
> > print( i, j )
> > end
> >
> >
> >
> >
> > Philipp
> >
> >
> >
>
>