10 de mai de 2010

Trígrafos

Vocês sabem o que são trígrafos (em inglês, trigraphs)?!!? [sim, eu me dei ao trabalho de traduzir a palavra pra o meu maravilhoso português]

Tá tá... todo mundo sabe: se dígrafo é um conjunto de duas letras pronunciadas juntas uma com a outra, então trígrafo deve ser o análogo relativo a três letras. Mas o que eu não sabia é que existem trígrafos no C (a linguagem de programação \o/ \o/).

Os tais trígrafos são uma forma de escrever alguns caracteres "diferentes" de maneira alternativa no padrão ISOC98. Alguns países do mundo simplesmente não têm algumas letras e, por isso, necessitam dessas formas mágicas para escrever tais caracteres. A seguir vai a lista dos caracteres que tem uma segunda notação "trigráfica" no C (ou, ao menos, os caracteres que eu descobri):

??= <==> # pound sign
??( <==> [ left bracket
??) <==> ] right bracket
??< <==> { left brace
??> <==> } right brace
??/ <==> \ backslash
??’ <==> ^ caret
??! <==> | vertical bar
??- <==> ~ tilde

A seguir vai um programa exemplo que fiz pra ver se funciona. Incrível: é só rodar o código

gcc teste_trigraphs.c -o teste.exe -trigraphs

e o programa compila perfeitamente substituindo todas as aparições dos caracteres trigráficos do código pelos caracteres comuns.


// teste_trigraphs.c
//
// Programa cujo único intuito é verificar se os caracteres
// trigráficos vão se tornar os "normais" após a compilação
#include <stdio.h>

int main ()
{
puts("teste dos tais trihgrafos: ??' deve virar ^ \n");
int a = 2,
b = 255,
c;

c = a ??! b;
printf("%d\n", c);

puts("Sera que vao funcionar esses tais de trihgrafos??!!\n");
return 0;
}


Infelizmente (ou felizmente, porque, pelamorde Deus, esse negócio é significativamente feio) esse treco tá pra ficar "deprecado" logo e, se já não era conhecido hoje em dia, daqui a uns tempos, se bobear, vai ser até insultado (e os professores de Técnicas de Construção de Programas vão tirar nota quando virem esses trecos no trabalho final, dizendo que isso diminui a legibilidade do código). Importante, porém, é ler esse link aqui:

http://www-949.ibm.com/software/rational/cafe/blogs/cpp-standard/tags/trigraph

Parece que tem lugares no mundo que, sem os trígrafos, vão acabar ficando sem as backslashes. D= D= Certamente isso vai ser uma grande tristeza pra eles...

Bom... eras isso...

Tomara que também tenham gostado dessa minha descoberta encantadora \o/ \o/

R$

Nenhum comentário:

Postar um comentário