[project @ 1997-12-15 11:14:46 by simonm]
authorsimonm <unknown>
Mon, 15 Dec 1997 11:14:48 +0000 (11:14 +0000)
committersimonm <unknown>
Mon, 15 Dec 1997 11:14:48 +0000 (11:14 +0000)
Add verbatim for SGML.

glafp-utils/sgmlverb/Makefile [new file with mode: 0644]
glafp-utils/sgmlverb/sgmlverb.lex [new file with mode: 0644]

diff --git a/glafp-utils/sgmlverb/Makefile b/glafp-utils/sgmlverb/Makefile
new file mode 100644 (file)
index 0000000..9d47c26
--- /dev/null
@@ -0,0 +1,15 @@
+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
diff --git a/glafp-utils/sgmlverb/sgmlverb.lex b/glafp-utils/sgmlverb/sgmlverb.lex
new file mode 100644 (file)
index 0000000..c605200
--- /dev/null
@@ -0,0 +1,60 @@
+
+  /*   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}"); }
+*/