Commit 3dd3ead1 authored by simonm's avatar simonm
Browse files

[project @ 1997-12-15 11:14:46 by simonm]

Add verbatim for SGML.
parent 73b020d6
TOP=..
include $(TOP)/mk/boilerplate.mk
C_SRCS = sgmlverb.c
C_PROG = sgmlverb
LIBS = $(FLEX_LIB)
override SRC_FLEX_OPTS=-8
#
# For src distributions, include flex output.
#
SRC_DIST_FILES += sgmlverb.c
include $(TOP)/mk/target.mk
/* This Lex script acts as a filter to pre-process Latex files.
It surrounds groups of lines beginning with a ">" sign, and
preceded and followed by a blank line, with \begin{verbatim}
and \end{verbatim}. The ">" may be preceded by a digit or digit
range (eg 4>, 2-5>, 3->); in this case the digits are removed.
They are meant to be used for filtering out versions.
It takes words surrounded with @ signs (thus @letrec@) and makes them
come out in typewriter font, regardless of the current mode.
*/
%START NORM VERB VERBENV
sp [ \t]*
nl {sp}\n{sp}
miranda ([0-9]+(\-([0-9]+)?)?)?>
%{
#define PUSH states[top++] =
#define POP BEGIN states[--top]
#define yywrap() 1
%}
%%
int states[256];
int top;
BEGIN NORM;
top = 0;
<NORM>@@ { printf ("@"); }
<NORM>@ { printf ("<tt>"); PUSH NORM; BEGIN VERB; }
<VERB>@ { printf ("</tt>"); POP; }
<VERB>@@ { printf ("@"); }
<VERB>\> { printf ("&gt;"); }
<VERB>\< { printf ("&lt;"); }
<VERB>\# { printf ("&num;"); }
<VERB>\$ { printf ("&dollar;"); }
<VERB>\% { printf ("&percnt;"); }
<VERB>\& { printf ("&amp;"); }
<VERB>\~ { printf ("&tilde;"); }
<VERB>\^ { printf ("&circ;"); }
<NORM>\<verb\> { printf ("<verb>"); PUSH NORM; BEGIN VERBENV; }
<VERBENV>\<\/verb\> { printf ("</verb>"); POP; }
<VERBENV>\&\& { printf ("&"); }
<VERBENV>\& { printf ("&ero;"); }
<VERBENV>\<\/ { printf ("&etago;"); }
%%
int
main()
{
yylex();
return(0);
}
/*
<VERB>\_ { printf ("{\\char'137}"); }
<VERB>\\ { printf ("{\\char'134}"); }
<VERB>\{ { printf ("{\\char'173}"); }
<VERB>\} { printf ("{\\char'175}"); }
*/
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment