TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: jgpeiro06 en 26 de Marzo de 2013, 15:32:18

Título: Alternativa a los corchetes [] y llaves {} en ANSI C
Publicado por: jgpeiro06 en 26 de Marzo de 2013, 15:32:18
Buenas tardes a todos,

quería comentaros una curiosidad que he encontrado en el ANSI C. Estaba revisando la gramatica en EBNF del lenguaje cuando he visto esto:
Código: C
  1. ("{"|"<%")              { count(); return('{'); }
  2. ("}"|"%>")              { count(); return('}'); }
  3. ("["|"<:")              { count(); return('['); }
  4. ("]"|":>")              { count(); return(']'); }
parece que, por algún motivo que aun no tengo claro, están definidos simbolos alternativos a los corchetes y a las llaves. Pensaba que seria alguna peculiaridad de la pagina donde estaba mirando, pero he probado en un par de compiladores y funciona!!.

Código: C
  1. #include <stdlib.h>
  2. int main( void )<%
  3.  int i;
  4.  int array<:4:>;
  5.  for( i = 0 ; i < 4 ; i++ )<%
  6.   array<:i:> = 2*i;
  7.   printf("array<:i:> = %d\n", array<:i:> );
  8.  %>
  9.  return 0;
  10. %>
  11. /*
  12. array<:i:> = 0
  13. array<:i:> = 2
  14. array<:i:> = 4
  15. array<:i:> = 6
  16. */

¿Alguien sabe por que existe esta alternativa?
Título: Re: Alternativa a los corchetes [] y llaves {} en ANSI C
Publicado por: Nocturno en 26 de Marzo de 2013, 15:57:44
¿Puede que sea para poder escribir programas en C con teclados antiguos que no tenían "Alt GR"?
Qué curioso.
Título: Re: Alternativa a los corchetes [] y llaves {} en ANSI C
Publicado por: MGLSOFT en 26 de Marzo de 2013, 16:34:48
Es muy probable, porque escribir ese codigo asi hace mas lento todo y ademas lo hace casi ilegible al programa... :D :D :D
Título: Re: Alternativa a los corchetes [] y llaves {} en ANSI C
Publicado por: CompSystems en 26 de Marzo de 2013, 23:46:31
Muy interesante, pero como puedo personalizarlo con otro caracteres «, » que archivo se modifica?

Quiero definir lo siguiente
Código: [Seleccionar]
( "{" | "«" ) { count(); return('{'); }
( "}" | "»" ) { count(); return('}'); }
( "[" | "(" ) { count(); return('['); }
( "]" | " )" ) { count(); return(']'); }


Código: C
  1. //Con ZINJAI http://zinjai.sourceforge.net/
  2. #include<stdio.h>
  3. int main( int argc, char *argv[] )<% // {
  4.         int i;
  5.         int array<:4:>;
  6.         for( i = 0; i < 4; i++ )<% // {
  7.                 array<:i:> = 2*i;
  8.                 printf("array<:i:> = %d\n", array<:i:> );
  9.         %> //}
  10.         return 0;
  11. %> //}
  12.        
  13. /* Salida
  14. array<:i:> = 0
  15. array<:i:> = 2
  16. array<:i:> = 4
  17. array<:i:> = 6
  18. */
   
Título: Re: Alternativa a los corchetes [] y llaves {} en ANSI C
Publicado por: Nocturno en 27 de Marzo de 2013, 02:39:13
Lo puedes personalizar sin tocar nada, simplemente incluyendo el correspondiente #define al principio de tu código.
Título: Re: Alternativa a los corchetes [] y llaves {} en ANSI C
Publicado por: jeremylf en 29 de Marzo de 2013, 02:32:34
Interesante