POV-Ray : Newsgroups : povray.general : Different error messages for same POV-file : Re: Different error messages for same POV-file Server Time
10 Aug 2024 09:16:31 EDT (-0400)
  Re: Different error messages for same POV-file  
From: Chris Huff
Date: 16 Mar 2000 18:48:26
Message: <chrishuff_99-7F0265.18502216032000@news.povray.org>
In article <38D169C7.81AB9F18@pacbell.net>, lin### [at] povrayorg 
wrote:

> Chris Huff wrote:
> > 
> > In article <38D15EDC.6F76A0B0@pacbell.net>, lin### [at] povrayorg
> > wrote:
> > 
> > > Chris Huff wrote:
> > >
> > > > I really wish POV-Ray would accept, if not require, semicolons at 
> > > > the
> > > > end of declarations. It should be a simple modification to make, at
> > > > least for someone who understands the declaration code(I don't).
> > >
> > > Why ?
> > 
> > So we don't have to remember which times a semicolon is required?
> > Currently, it is not consistant. You have to memorize the special
> > cases:float, vector, color... It would be easier to just allow a
> > semicolon at the end of every #declare and #local. If they were
> > required, it might even simplify the parser and make things a little
> > faster.
> 
> 
> #declare Bob =
> object {
>   #declare Axel = box{-.5,.5}
>   #declare Col1 = rgb<1,1,1>;
>   #declare Col2 = rgb<0,0,0>;
>   #declare XXX = pigment{checker color Col1 color Col2}
> 
>   #declare a = 0;
>     #while (a<1)
>       object{Axel translate a pigment{XXX}}
>     #declare a=a+1;
>   #end
> }
> ;
> 
> object{Bob}
> 
> Which semi-colon closes the Bob declaration in the example above ?

The last one.


> I know it is obvious to us but this is a simple example which might
> confuse the hell out of the parser.

I doubt it, it shouldn't be hard to do. Actually, it most likely 
wouldn't require much extra work at all. And you missed two, one in the 
declaration of Axel and the other in XXX.

And just to nit-pick, your while loop is indented wrong, the #while 
should be on the same level as "#declare a = 0;", and "object{Axel..." 
should be on the same level as "#declare a=a+1;". And it would probably 
be a good idea to use capitals instead of lowercase, "A" insead of "a", 
to avoid conflicts with future reserved words/characters. And those 
#declares(other than the loop counter) really should be outside the 
object, no purpose is served in putting them there. And your #while() 
loop will only loop once, kind of useless that way. :-)


> Or do you make yet another special rule so that semi-colons don't
> apply to declared objects and CSG operations because they already
> use curly braces to define their ending ?
> 
> Does this make sense #declare foo = object {bar};  ?

The } defines the end of the object, not the declaration, so the 
semicolon should remain. Maybe also allow an "implied union" without a 
"union {}" wrapper(just specify multiple objects between the "=" and the 
";"), but I don't think that would be very useful and it would make 
things harder to read.
And yes, that code makes sense.

-- 
Chris Huff
e-mail: chr### [at] yahoocom
Web page: http://chrishuff.dhs.org/


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.