home *** CD-ROM | disk | FTP | other *** search
/ Nebula 2 / Nebula Two.iso / Apps / EmacsTeX / aa_m68k_Intel_Only / TeXmenu4.1 / Src / Converter / TeXToNeXTSTEP.l < prev   
Encoding:
Lex Description  |  1995-06-12  |  1.9 KB  |  115 lines

  1. %{
  2.     /*************************************************
  3.  
  4.         lex/flex Spezifikation der Umwandlung
  5.         von TeX nach NeXTSTEP Encoding
  6.      
  7.         Harald Schlangmann 1992
  8.  
  9.      *************************************************/
  10.  
  11. %}
  12.  
  13. %%
  14.  
  15. %{
  16.     /*************************************************
  17.  
  18.         Bei den Umlauten werden jeweils die
  19.         folgenden Schreibweisen erkannt, einige
  20.         davon (die letzten) sind ungebraeuchlich
  21.         aber legal... Bsp., Umlaut ue:
  22.  
  23.             \"u
  24.             "u
  25.             \"u{}
  26.             \"{u}
  27.             {\"u}
  28.  
  29.         Das Eszet verhaelt sich anders, erlaubt
  30.         sind die folgenden Schreibweisen:
  31.  
  32.             \ss[ \t\n]+    \ss inklusive der folgenden Leerzeichen
  33.             \ss/[^a-zA-Z]    will heissen \ss wenn keine Buchstaben folgen    
  34.             \ss{}
  35.             {\ss}
  36.             "s
  37.  
  38.         \3 wird nicht umgewandelt, da nicht eindeutig
  39.         dem Eszet zuzuordnen...
  40.  
  41.      *************************************************/
  42.  
  43. %}
  44.  
  45. \\\"a                |
  46. \"a                |
  47. \\\"a\{\}            | 
  48. \\\"\{a\}            |
  49. \{\\\"a\}            /* ae */ putchar('\331');
  50.  
  51. \\\"o                |
  52. \"o                |
  53. \\\"o\{\}            | 
  54. \\\"\{o\}            |
  55. \{\\\"o\}            /* oe */ putchar('\360');
  56.  
  57. \\\"u                |
  58. \"u                |
  59. \\\"u\{\}            | 
  60. \\\"\{u\}            |
  61. \{\\\"u\}            /* ue */ putchar('\366');
  62.  
  63. \\\"A                |
  64. \"A                |
  65. \\\"A\{\}            |
  66. \\\"\{A\}            |
  67. \{\\\"A\}            /* Ae */ putchar('\205');
  68.  
  69. \\\"O                |
  70. \"O                |
  71. \\\"O\{\}            |
  72. \\\"\{O\}            |
  73. \{\\\"O\}            /* Oe */ putchar('\226');
  74.  
  75. \\\"U                |
  76. \"U                |
  77. \\\"U\{\}            |
  78. \\\"\{U\}            |
  79. \{\\\"U\}            /* Ue */ putchar('\232');
  80.  
  81. \\ss[ \t\n]+            |
  82. \"s                |
  83. \\ss\{\}            |
  84. \{\\ss\}            /* ss */ putchar('\373');
  85.  
  86. %{
  87.     /*************************************************
  88.  
  89.         Die folgende Regel arbeitet effizienter
  90.         als der Lookahead mittels '/' und ver-
  91.         meidet die Warnung 'variable trailing 
  92.         context' von flex.
  93.  
  94.      *************************************************/
  95.  
  96. %}
  97.  
  98. \\ss[^a-zA-Z]            /* ss */ yyless(3); putchar('\373');
  99.  
  100. %%
  101.  
  102. main(int argc,char **argv) {
  103.  
  104.     ++argv, --argc;  /* skip over program name */
  105.     if( argc > 0 )
  106.         yyin = fopen( argv[0], "r" );
  107.     else
  108.         yyin = stdin;
  109.  
  110.     yylex();
  111. }
  112.  
  113.  
  114.  
  115.