/* 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); } }