/* Conversion of Greek text from Latin transliteration,
written in ASCII, to real Greek in ISO 8859-7.
Assumes a simple translation (without diacritics):
alpha a
beta b
gamma g
delta d
epsilon e
zeta z
eta e:
theta th
iota i
kappa k (or c)
lambda l
mu m
nu n
xi x (or ks)
omicron o
pi p
rho r (or rh)
sigma s
tau t
upsilon y (or u)
phi f (or ph)
chi kh (or ch)
psi ps
omega o:
To use this program, take a file containing Greek text in
Latin translation (plain text, no HTML markup), give it as
input to this program, and then insert the resulting file
into an HTML document to an appropriate place, and add
markup like
for indicating paragraphs.
See http://www.hut.fi/u/jkorpela/prog/tst.txt
for trivial sample data and
http://www.hut.fi/u/jkorpela/prog/test.htm7
for an HTML file which contains the converted data.
*/
#include
#include
#define LENGTH ':'
int main(void)
{
int ch, nextch;
while((ch=getchar()) != EOF)
switch(ch) {
case 'A' : putchar(0xC1); break;
case 'B' : putchar(0xC2); break;
case 'C' :
case 'K' : if( (nextch=getchar()) == 'H' || nextch == 'h')
{ putchar(0xD7); break; }
else if(nextch == 'S' || nextch == 's')
{ putchar(0xCE); break; }
else
{ putchar(0xCA); ungetc(nextch, stdin); break; }
case 'D' : putchar(0xC4); break;
case 'E' : if( (nextch=getchar()) == LENGTH )
{ putchar(0xC7); break; }
else
{ putchar(0xC5); ungetc(nextch, stdin); break; }
case 'F' : putchar(0xD6); break;
case 'G' : putchar(0xC3); break;
case 'H' : break;
case 'I' :
case 'J' : putchar(0xC9); break;
case 'L' : putchar(0xCB); break;
case 'M' : putchar(0xCC); break;
case 'N' : putchar(0xCD); break;
case 'O' : if( (nextch=getchar()) == LENGTH )
{ putchar(0xD9); break; }
else
{ putchar(0xCF); ungetc(nextch, stdin); break; }
case 'P' : if( (nextch=getchar()) == 'H' || nextch == 'h')
{ putchar(0xD6); break; }
else if(nextch == 'S' || nextch == 's')
{ putchar(0xD8); break; }
else
{ putchar(0xD0); ungetc(nextch, stdin); break; }
case 'R' : putchar(0xD1); break;
case 'S' : putchar(0xD3); break;
case 'T' : if( (nextch=getchar()) == 'H' || nextch == 'h')
{ putchar(0xC8); break; }
else
{ putchar(0xD4); ungetc(nextch, stdin); break; }
case 'U' :
case 'Y' : putchar(0xD5); break;
case 'X' : putchar(0xCE); break;
case 'Z' : putchar(0xC6); break;
case 'a' : putchar(0xE1); break;
case 'b' : putchar(0xE2); break;
case 'c' :
case 'k' : if( (nextch=getchar()) == 'h')
{ putchar(0xF7); break; }
else if(nextch == 's')
{ putchar(0xEE); break; }
else
{ putchar(0xEA); ungetc(nextch, stdin); break; }
case 'd' : putchar(0xE4); break;
case 'e' : if( (nextch=getchar()) == LENGTH )
{ putchar(0xE7); break; }
else
{ putchar(0xE5); ungetc(nextch, stdin); break; }
case 'f' : putchar(0xF6); break;
case 'g' : putchar(0xE3); break;
case 'h' : break;
case 'i' :
case 'j' : putchar(0xE9); break;
case 'l' : putchar(0xEB); break;
case 'm' : putchar(0xEC); break;
case 'n' : putchar(0xED); break;
case 'o' : if( (nextch=getchar()) == LENGTH )
{ putchar(0xF9); break; }
else
{ putchar(0xEF); ungetc(nextch, stdin); break; }
case 'p' : if( (nextch=getchar()) == 'h')
{ putchar(0xF6); break; }
else if(nextch == 's')
{ putchar(0xF8); break; }
else
{ putchar(0xF0); ungetc(nextch, stdin); break; }
case 'r' : putchar(0xF1); break;
case 's' : putchar(0xF3); break;
case 't' : if( (nextch=getchar()) == 'h')
{ putchar(0xE8); break; }
else
{ putchar(0xF4); ungetc(nextch, stdin); break; }
case 'u' :
case 'y' : putchar(0xF5); break;
case 'x' : putchar(0xEE); break;
case 'z' : putchar(0xE6); break;
default : putchar(ch);
}
}