diff options
author | rsc <devnull@localhost> | 2005-01-04 22:30:59 +0000 |
---|---|---|
committer | rsc <devnull@localhost> | 2005-01-04 22:30:59 +0000 |
commit | b2ad2ef1387571c7b917a7fd63e8670582ae8b7f (patch) | |
tree | a46fed64d497f15e824a1c394952a583c98c607b /src/cmd/delatex.lx | |
parent | 48bfee4e5b72db021da3538c97ef68ce2308f12b (diff) | |
download | plan9port-b2ad2ef1387571c7b917a7fd63e8670582ae8b7f.tar.gz plan9port-b2ad2ef1387571c7b917a7fd63e8670582ae8b7f.tar.bz2 plan9port-b2ad2ef1387571c7b917a7fd63e8670582ae8b7f.zip |
in with the new
Diffstat (limited to 'src/cmd/delatex.lx')
-rw-r--r-- | src/cmd/delatex.lx | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/src/cmd/delatex.lx b/src/cmd/delatex.lx new file mode 100644 index 00000000..063aa7dc --- /dev/null +++ b/src/cmd/delatex.lx @@ -0,0 +1,64 @@ +/* Make this with: lex delatex.lex; cc lex.yy.c -ll -o delatex */ +L [A-Za-z] +%Start Display Math Normal Tag +%% +<Normal>\' {yyleng--; yymore(); /* ignore apostrophes */} +<Normal>{L}+\\- {yyleng-=2; yymore(); /* ignore hyphens */} +<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; +<Tag>[^}] ; /* ignore things up to next "}" */ +<Tag>"}" 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; + + BEGIN Normal; /* Starts yylex off in the right state */ + if (argc==1) { + yyin = stdin; + 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); + } + yylex(); + } + exit(0); +} +int +yywrap(void) +{ + return 1; +} |