[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: How to read thru a script file from C a line at a time.
- From: "Edward Mitchell" <emitchell@...>
- Date: Wed, 18 Oct 2006 22:04:06 -0400
Rici,
Thanks for the feedback. It looks as you say that I have to parse the
entire template file before I can output my html result. I'll just create a
reader that I can pass to lua_load(...) that does the getline() on the file.
Ed
"Rici Lake" <lua@ricilake.net> wrote in message
570d66c1af140d2f7db898e9eec13d3c@ricilake.net">news:570d66c1af140d2f7db898e9eec13d3c@ricilake.net...
>
> On 18-Oct-06, at 4:41 PM, Edward Mitchell wrote:
>
>>
>> "Rici Lake" <lua@ricilake.net> wrote in message
>> de0b517e2d945e342c767922176483f6@ricilake.net">news:de0b517e2d945e342c767922176483f6@ricilake.net...
>>>
>>> On 17-Oct-06, at 8:38 PM, Edward Mitchell wrote:
>>>> As far as I can see, there's nothing like this in lua.c. It seems that
>>>> lua_load(...) (or luaL_loadbuffer) should return an status code that
>>>> implies
>>>> "Needs more input."
>>>
>>> It returns a syntax error with an easily parseable error message, which
>>> is
>>> what lua.c does. See the function incomplete() on line 161 (v5.1.1)
>>>
>> On that basis, it seems that I can use the loop like:
>>
>> while(templateFile) {
>> templateFile.getline(buff, BUFSIZ);
>> // ?? debug echo to the console
>> fprintf(stdout, "%s\n", buff);
>> while(Incomplete(L, luaL_loadbuffer(L, buff, strlen(buff),
>> "Line")))
>> {
>> templateFile.getline(buff, BUFSIZ);
>> }
>> iError = lua_pcall(L, 0, 0, 0);
>> if(iError) {
>> // echo the error message
>> fprintf(stdout, "%s\n", lua_tostring(L, -1));
>> // quit on any error
>> break;
>> }
>> }
>>
>> I looked at incomplete() and it seems to make a decision on whether the
>> string <eof> is present in the error message. Since incomplete() is not
>> one
>> of the lua_... or luaL_... group of routines, is it likely that the
>> '<eof>'
>> ending message will go away in the future.
>
> Possibly. But anyway, that's only useful for compiling single chunks. Note
> that lua.c concatenates all the lines together each time it tries, which
> is probably unreasonable for a large file.
>
> lua_load processes an entire compilation unit, although it will call the
> supplied callback function in order to receive the compilation unit in
> separate strings. It does not retain state from one call to the next.
>
>