Problema con el Switch

Started by alex, October 01, 2012, 04:07:48 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

alex

Hay un pequeño problema con la sentencia Switch, si no tabulas el codigo te debe salir un mensaje de error diciendo que no has cerrado el case con end (aunque lo hayas escrito) y no entiende el default, en cambio si lo tabulas si que lo compila bien.
No me preocupa, solo era por informar.

SplinterGU

imposible... pon un ejemplo...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

tienes otro problema.

splinter@splinter:~/tmp> bgdc switch.prg
BGDC 1.0.0 (Sep 30 2012 20:47:44)
Bennu Game Development Compiler

Copyright (c) 2006-2012 SplinterGU (Fenix/BennuGD)
Copyright (c) 2002-2006 Fenix Team (Fenix)
Copyright (c) 1999-2002 Jos� Luis Cebri�n Pag�e (Fenix)


File switch.dcb compiled (36603 bytes):

  Processes                     1
  Global data                 212 bytes
  Local data                  208 bytes
  Private data                  0 bytes
  Public data                   0 bytes
  Code                         72 bytes
  System processes             56
  Globals vars                 21
  Locals vars                  27
  Private vars                  0
  Publics vars                  0
  Identifiers                 473
  Structs                       4
  Strings                      15 (132 bytes)

splinter@splinter:~/tmp> cat switch.prg
begin
    switch(1)
case 1:
end
case 2:
end
end
end
splinter@splinter:~/tmp>

Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

incluso

splinter@splinter:~/tmp> bgdc switch.prg
BGDC 1.0.0 (Sep 30 2012 20:47:44)
Bennu Game Development Compiler

Copyright (c) 2006-2012 SplinterGU (Fenix/BennuGD)
Copyright (c) 2002-2006 Fenix Team (Fenix)
Copyright (c) 1999-2002 Jos� Luis Cebri�n Pag�e (Fenix)


File switch.dcb compiled (36603 bytes):

  Processes                     1
  Global data                 212 bytes
  Local data                  208 bytes
  Private data                  0 bytes
  Public data                   0 bytes
  Code                         72 bytes
  System processes             56
  Globals vars                 21
  Locals vars                  27
  Private vars                  0
  Publics vars                  0
  Identifiers                 473
  Structs                       4
  Strings                      15 (132 bytes)

splinter@splinter:~/tmp> cat switch.prg
begin
    switch(1) case 1: end case 2: end end
end
splinter@splinter:~/tmp>
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

alex

Import "mod_text";
Process Main()
private
byte mivar1=220;
end
begin
loop
delete_text(0);
switch (mivar1)
case 0..3:
write(0,200,100,4,"La variable vale entre 0 y 3, incluidos");
end
case 4:
write(0,200,100,4,"La variable vale 4");
end
case 5,7,9:
write(0,200,100,4,"La variable vale 5 o 7 o 9");
end
default:
write(0,200,100,4,"La variable vale cualquier otro valor diferente de los anteriores");
end
end // switch
frame;
end //loop
end // begin


Este es el codigo de ejemplo que pone osk en su tutorial donde capté este fallo, si lo copias tal cual solo que cambiando las comillas te aparece este mensaje de error:
prueba.prg:19: error: "CASE" expected ( token error: "DEFAULT" ).

en cambio si lo pones asi:

Import "mod_text";

Process Main()
private
    byte mivar1=220;
end
begin
    loop
        delete_text(0);
            switch (mivar1)
                case 0..3:
                    write(0,200,100,4,"La variable vale entre 0 y 3, incluidos");
                end
                case 4:
                    write(0,200,100,4,"La variable vale 4");
                end
                case 5,7,9:
                    write(0,200,100,4,"La variable vale 5 o 7 o 9");
                end
                default:
                    write(0,200,100,4,"La variable vale cualquier otro valor diferente de los anteriores");
                end
            end // switch
        frame;
    end //loop
end // begin


Compila perfecto.

SplinterGU

lo que sucede es que interpreta que default es una etiqueta de salto... por estar pegado a la linea... no tiene que ver con la identacion, pon 1 espacio delante del default y  ya compila

voy a tener que poner la excepcion...

gracias!
Download Lastest BennuGD Release: http://www.bennugd.org/node/2