POV-Ray : Newsgroups : povray.international : [ES] Error en el Parser Server Time: 10 Dec 2018 06:22:27 GMT
  [ES] Error en el Parser (Message 1 to 7 of 7)  
From: Martin
Subject: [ES] Error en el Parser
Date: 24 Aug 2007 10:18:22
Message: <46ceb06e$1@news.povray.org>
¡Hola!

Creo que hay un error en el intérprete. Si alguien es tan amable de 
confirmarlo, este es el código:

camera{ location <20,10,10> look_at 0}
light_source{100 rgb<1,1,1>}

//version 3.6.1c.icl8.win32
//-----------------------------------------------------------------------------------
#local topD= -233; #local topH= 33;
//<-falta el paréntesis inicial ¡Y no da error! Se evalúa solo el primer 
condicional
    //<-si corrijo el paréntesis se evalúa todo el condicional
#if(topD < 180 & topH > 180) | (topD < -180 & topH > -180))
   #local y_mn= 4;
#else #local y_mn= 0; #end

sphere{0,y_mn pigment{rgb<1,1,0> }}

Gracias y un saludo.


Post a reply to this message

From: Warp
Subject: Re: [ES] Error en el Parser
Date: 24 Aug 2007 10:29:30
Message: <46ceb30a@news.povray.org>
Seems to be some quirk in the parser. In general:

#if(false) | anything you put here will be ignored

will parse without giving any error. Odd, but probably innocuous.

-- 
                                                          - Warp


Post a reply to this message

From: Warp
Subject: Re: [ES] Error en el Parser
Date: 24 Aug 2007 10:41:40
Message: <46ceb5e4@news.povray.org>
Warp <war### [at] tagpovrayorg> wrote:
> #if(false) | anything you put here will be ignored

  Actually the | is not even necessary.

  The think is that if the condition evaluates to false then everything
will be skipped until the #else (or #end if there's no #else).

-- 
                                                          - Warp


Post a reply to this message

From: Martin
Subject: Re: [ES] Error en el Parser
Date: 24 Aug 2007 12:18:21
Message: <46cecc8d$1@news.povray.org>
Warp escribió:
> Warp <war### [at] tagpovrayorg> wrote:
>> #if(false) | anything you put here will be ignored
> 
>   Actually the | is not even necessary.
> 
>   The think is that if the condition evaluates to false then everything
> will be skipped until the #else (or #end if there's no #else).
> 
Thank you.

But this is an uncached syntax error. Isn't it supposed that one 
parser's job is to cach syntax errors?

-----------------------------------------
Pero esto es un error de sintaxis ¿No se supone que el intérprete debe 
detectar errores de sintaxis?


Post a reply to this message

From: Manuel Mata
Subject: Re: [ES] Error en el Parser
Date: 26 Aug 2007 10:25:01
Message: <web.46d154e5474ddf256c941f7e0@news.povray.org>
> #local topD= -233; #local topH= 33;
> #if(topD < 180 & topH > 180) | (topD < -180 & topH > -180))
>    #local y_mn= 4;
> #else #local y_mn= 0; #end
>
> sphere{0,y_mn pigment{rgb<1,1,0> }}

Quizá la variable y_mn debería estar declarada fuera del #if, ya que su
ambito de vision está dentro de esa estructura.

Es eso ?

Un saludo


Post a reply to this message

From: Martin
Subject: Re: [ES] Error en el Parser
Date: 27 Aug 2007 09:48:31
Message: <46d29def$1@news.povray.org>
Manuel Mata escribió:
>> #local topD= -233; #local topH= 33;
>> #if(topD < 180 & topH > 180) | (topD < -180 & topH > -180))
>>    #local y_mn= 4;
>> #else #local y_mn= 0; #end
>>
>> sphere{0,y_mn pigment{rgb<1,1,0> }}
> 
> Quizá la variable y_mn debería estar declarada fuera del #if, ya que su
> ambito de vision está dentro de esa estructura.
> 
> Es eso ?
> 
> Un saludo
> 
> 

No, no. Es lo que aclara Warp. Por lo visto es un error conocido del que 
no tenía ni idea, ya que ando bastante desconectado de la comunidad POV 
( busqué un poco pero no vi nada al respecto :/ )

En pov, el ámbito de las variables locales se limita al fichero o la 
macro en el que están declaradas.

Un saludo.


Post a reply to this message

From: Warp
Subject: Re: [ES] Error en el Parser
Date: 27 Aug 2007 13:53:34
Message: <46d2d75e@news.povray.org>
Martin <don### [at] onocom> wrote:
> No, no. Es lo que aclara Warp. Por lo visto es un error conocido del que 
> no tenía ni idea, ya que ando bastante desconectado de la comunidad POV 
> ( busqué un poco pero no vi nada al respecto :/ )

  It's not an error per se. It's just how the parser has been made to
work. The parser simply evaluates the condition, and if it evaluates
to false, it just skips everything until it finds a corresponding #else
or #end. It doesn't perform syntax checking while skipping.
  This might not be the most user-friendly way of doing it, but that's
different from being a programming error.

-- 
                                                          - Warp


Post a reply to this message

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