lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


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
> >
> >
> >
>
>