close Warning: Can't synchronize with repository "(default)" (/var/svn/tolp does not appear to be a Subversion repository.). Look in the Trac log for more information.

Opened 16 years ago

Last modified 16 years ago

#760 closed defect

Problemas con SetToNameBlock — at Version 1

Reported by: Liván Ramírez Dorta Owned by: Víctor de Buen Remiro
Priority: highest Milestone:
Component: Kernel Version: 2.0.1
Severity: blocker Keywords:
Cc:

Description (last modified by Víctor de Buen Remiro)

Al ejecutar lo siguiente:

NameBlock Fun(Set s){
  NameBlock k = SetToNameBlock(s)
};

NameBlock KK = [[
  NameBlock Eco = Fun({[[Text cod = "Eco"]]});
  NameBlock Cli = Fun({[[Text cod = "Cli"]]});
  NameBlock kk = Fun({[[Text cod = "kk"]]})
]];

obtenemos el siguiente error:

ERROR: [1] Variable 'cod' ya definida como "k::cod "

Change History (1)

comment:1 Changed 16 years ago by Víctor de Buen Remiro

Description: modified (diff)
Status: newaccepted

No hay ningún problema con la función SetToNameBlock
El problema es del parser que "se traga" la llave en la combinación de paréntesis y llave consecutivas. Por este motivo se quedas las variables cod todas en el mismo ámbito y da error a partir der la segunda, simplemente porque ya existe. Es un viejo problema con difícil solución, ya lo he intentado varias veces sin éxito, pues si se prescinde del mecanismo que elimina esas llaves entonces fallan otras cosas. Sin embargo, es muy fácil evadirse de este problema, basta con escribirlo así:

NameBlock Fun(Set s){
  NameBlock k = SetToNameBlock(s)
 };

 NameBlock KK = [[
  NameBlock Eco = { Fun([[Text cod = "Eco"]]) };
  NameBlock Cli = { Fun([[Text cod = "Cli"]]) };
  NameBlock kk =  { Fun([[Text cod = "kk" ]]) }
 ]];

o así

NameBlock Fun(Set s){
  NameBlock k = SetToNameBlock(s)
 };

 NameBlock KK = [[
  NameBlock Eco = Fun([[Text {cod = "Eco"} ]]);
  NameBlock Cli = Fun([[Text {cod = "Cli"} ]]);
  NameBlock kk =  Fun([[Text {cod = "kk"}  ]])
 ]];

No obstante, volveré a intentar una vez más que funcione esa combinación ({...})

Note: See TracTickets for help on using tickets.