URI:
       tdelatex.lx - plan9port - [fork] Plan 9 from user space
  HTML git clone git://src.adamsgaard.dk/plan9port
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
       tdelatex.lx (2504B)
       ---
            1 /* Make this with:  lex delatex.lex;  cc lex.yy.c -ll -o delatex */
            2 L [A-Za-z]
            3 %Start Display Math Normal Tag VerbPlus Bracket
            4 %%
            5 <Normal>\'        {yyleng--; yymore(); /* ignore apostrophes */}
            6 <Normal>{L}+\\- {yyleng-=2; yymore(); /* ignore hyphens */}
            7 <Normal>[a-zA-Z0-9_]+@[a-zA-Z0-9_.]+        ;        /* ignore email addresses */
            8 <Normal>[a-z]/[^A-Za-z] ; /* ignore single letter "words" */
            9 <Normal>[A-Z]+        ; /* ignore words all in uppercase */
           10 <Normal>{L}+('{L}*)*{L}        {printf("%s\n",yytext); /* any other letter seq is a word */} 
           11 <Normal>"%".*        ; /* ignore comments */
           12 <Normal>\\{L}+        ; /* ignore other control sequences */
           13 <Normal>"\\begin{"        BEGIN Tag; /* ignore this and up to next "}" */
           14 <Normal>"\\bibitem{"        BEGIN Tag;
           15 <Normal>"\\bibliography{"        BEGIN Tag;
           16 <Normal>"\\bibstyle{"        BEGIN Tag;
           17 <Normal>"\\cite{"        BEGIN Tag;
           18 <Normal>"\\end{"                BEGIN Tag;
           19 <Normal>"\\include{"        BEGIN Tag;
           20 <Normal>"\\includeonly{"        BEGIN Tag;
           21 <Normal>"\\input{"        BEGIN Tag;
           22 <Normal>"\\label{"        BEGIN Tag;
           23 <Normal>"\\pageref{"        BEGIN Tag;
           24 <Normal>"\\ref{"                BEGIN Tag;
           25 <Normal>"\\verb+"        BEGIN VerbPlus;
           26 <Normal>"\\documentclass["        BEGIN Bracket;
           27 <Normal>"\\documentclass{"        BEGIN Tag;
           28 <Normal>"\\usepackage["        BEGIN Bracket;
           29 <Normal>"\\usepackage{"        BEGIN Tag;
           30 <Bracket>[^\]]        ;
           31 <Bracket>"]["        ;
           32 <Bracket>"]{"        BEGIN Tag;
           33 <Bracket>"]"        BEGIN Normal;
           34 <Tag>[^}]                ; /* ignore things up to next "}" */
           35 <Tag>"}"                BEGIN Normal;
           36 <VerbPlus>[^+]        ;        /* ignore thing up to next "+" */
           37 <VerbPlus>"+"        BEGIN Normal;
           38 <Normal>[0-9]+        ; /* ignore numbers */
           39 <Normal>"\\("                BEGIN Math; /* begin latex math mode */
           40 <Math>"\\)"                BEGIN Normal; /* end latex math mode */
           41 <Math>.|\\[^)]|\n        ; /* ignore anything else in latex math mode */
           42 <Normal>"\\["                BEGIN Display; /* now in Latex display mode */
           43 <Display>[^$]|\\[^\]]        ; /* ignore most things in display math mode */
           44 <Display>"\\]"        BEGIN Normal; /* get out of Display math mode */
           45 <Normal>\\.        ; /* ignore other single character control sequences */
           46 <Normal>\\\n        ; /* more of the same */
           47 <Normal>\n|.        ; /* ignore anything else, a character at a time */
           48 %%
           49 #include <stdio.h>
           50 #include <stdlib.h>
           51 
           52 int
           53 main(int argc, char **argv)
           54 {
           55         int i;
           56         
           57         if (argc==1) {
           58             yyin = stdin;
           59             BEGIN Normal; /* Starts yylex off in the right state */
           60             yylex();
           61             }
           62         else for (i=1; i<argc; i++) {
           63             yyin = fopen(argv[i],"r");
           64             if (yyin==NULL) {
           65                 fprintf(stderr,"can't open %s\n",argv[i]);
           66                 exit(1);
           67                 }
           68             BEGIN Normal; /* Starts yylex off in the right state */
           69             yylex();
           70             }
           71         exit(0);
           72 }
           73 int
           74 yywrap(void)
           75 {
           76         return 1;
           77 }