%{ /* In der Vorlesung am 19.11.2007 gemeinsam erstellte Loesung fuer die * Konversion roemischer Zahlen mit lex. */ #include int akku = 0; %} %option main %% "I"{1,3} { akku += yyleng; } "IV" { akku += 4; } "V" { akku += 5; } "IX" { akku += 9; } "X"{1,3} { akku += yyleng * 10; } "XL" { akku += 40; } "L" { akku += 50; } "XC" { akku += 90; } "C"{1,3} { akku += yyleng * 100; } "CD" { akku += 400; } "D" { akku += 500; } "CM" { akku += 900; } "M"+ { akku += yyleng * 1000; } .|\n { if(akku) { printf("%d", akku); akku = 0; } ECHO; } %%