/* Make this with:  lex delatex.lex;  cc lex.yy.c -ll -o delatex */
L [A-Za-z]
%Start Display Math Normal Tag VerbPlus Bracket
%%
<Normal>\'	{yyleng--; yymore(); /* ignore apostrophes */}
<Normal>{L}+\\- {yyleng-=2; yymore(); /* ignore hyphens */}
<Normal>[a-zA-Z0-9_]+@[a-zA-Z0-9_.]+	;	/* ignore email addresses */
<Normal>[a-z]/[^A-Za-z] ; /* ignore single letter "words" */
<Normal>[A-Z]+	; /* ignore words all in uppercase */
<Normal>{L}+('{L}*)*{L}	{printf("%s\n",yytext); /* any other letter seq is a word */} 
<Normal>"%".*	; /* ignore comments */
<Normal>\\{L}+	; /* ignore other control sequences */
<Normal>"\\begin{"	BEGIN Tag; /* ignore this and up to next "}" */
<Normal>"\\bibitem{"	BEGIN Tag;
<Normal>"\\bibliography{"	BEGIN Tag;
<Normal>"\\bibstyle{"	BEGIN Tag;
<Normal>"\\cite{"	BEGIN Tag;
<Normal>"\\end{"		BEGIN Tag;
<Normal>"\\include{"	BEGIN Tag;
<Normal>"\\includeonly{"	BEGIN Tag;
<Normal>"\\input{"	BEGIN Tag;
<Normal>"\\label{"	BEGIN Tag;
<Normal>"\\pageref{"	BEGIN Tag;
<Normal>"\\ref{"		BEGIN Tag;
<Normal>"\\verb+"	BEGIN VerbPlus;
<Normal>"\\documentclass["	BEGIN Bracket;
<Normal>"\\documentclass{"	BEGIN Tag;
<Normal>"\\usepackage["	BEGIN Bracket;
<Normal>"\\usepackage{"	BEGIN Tag;
<Bracket>[^\]]	;
<Bracket>"]["	;
<Bracket>"]{"	BEGIN Tag;
<Bracket>"]"	BEGIN Normal;
<Tag>[^}]		; /* ignore things up to next "}" */
<Tag>"}"		BEGIN Normal;
<VerbPlus>[^+]	;	/* ignore thing up to next "+" */
<VerbPlus>"+"	BEGIN Normal;
<Normal>[0-9]+	; /* ignore numbers */
<Normal>"\\("		BEGIN Math; /* begin latex math mode */
<Math>"\\)"		BEGIN Normal; /* end latex math mode */
<Math>.|\\[^)]|\n	; /* ignore anything else in latex math mode */
<Normal>"\\["		BEGIN Display; /* now in Latex display mode */
<Display>[^$]|\\[^\]]	; /* ignore most things in display math mode */
<Display>"\\]"	BEGIN Normal; /* get out of Display math mode */
<Normal>\\.	; /* ignore other single character control sequences */
<Normal>\\\n	; /* more of the same */
<Normal>\n|.	; /* ignore anything else, a character at a time */
%%
#include <stdio.h>
#include <stdlib.h>

int
main(int argc, char **argv)
{
	int i;
	
	if (argc==1) {
	    yyin = stdin;
	    BEGIN Normal; /* Starts yylex off in the right state */
	    yylex();
	    }
	else for (i=1; i<argc; i++) {
	    yyin = fopen(argv[i],"r");
	    if (yyin==NULL) {
		fprintf(stderr,"can't open %s\n",argv[i]);
		exit(1);
		}
	    BEGIN Normal; /* Starts yylex off in the right state */
	    yylex();
	    }
	exit(0);
}
int
yywrap(void)
{
	return 1;
}
