aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGlenn Morris2012-12-12 20:47:14 -0800
committerGlenn Morris2012-12-12 20:47:14 -0800
commitbfe6ffb652954956ca984d594deb88d45f8cfd77 (patch)
tree7b45e49cdc59aaad12b18a967021e6c10f51e8f4
parent9e7abd17a34f432aa6f3e59896d794b1349c846a (diff)
downloademacs-bfe6ffb652954956ca984d594deb88d45f8cfd77.tar.gz
emacs-bfe6ffb652954956ca984d594deb88d45f8cfd77.zip
Add wisent manual to build process
* doc/misc/wisent.texi: Small edits. Set copyright to FSF, update license to GFDL 1.3+. * doc/misc/Makefile.in (INFO_TARGETS, DVI_TARGETS, PDF_TARGETS): Add wisent. (wisent, $(buildinfodir)/wisent$(INFO_EXT), wisent.dvi, wisent.pdf): New targets. * doc/misc/makefile.w32-in (INFO_TARGETS, DVI_TARGETS, clean): Add wisent. ($(infodir)/wisent$(INFO_EXT), wisent.dvi): New targets. * info/dir: wisent.
-rw-r--r--ChangeLog2
-rw-r--r--doc/misc/ChangeLog8
-rw-r--r--doc/misc/Makefile.in13
-rw-r--r--doc/misc/makefile.w32-in12
-rw-r--r--doc/misc/wisent.texi124
-rw-r--r--info/dir3
6 files changed, 91 insertions, 71 deletions
diff --git a/ChangeLog b/ChangeLog
index 9aa48b0d3b0..a8108968665 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,6 @@
12012-12-13 Glenn Morris <rgm@gnu.org> 12012-12-13 Glenn Morris <rgm@gnu.org>
2 2
3 * info/dir: Add bovine. 3 * info/dir: Add bovine, wisent.
4 4
52012-12-12 Andreas Schwab <schwab@suse.de> 52012-12-12 Andreas Schwab <schwab@suse.de>
6 6
diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog
index d54f9a6b20b..d0530d312f7 100644
--- a/doc/misc/ChangeLog
+++ b/doc/misc/ChangeLog
@@ -1,5 +1,13 @@
12012-12-13 Glenn Morris <rgm@gnu.org> 12012-12-13 Glenn Morris <rgm@gnu.org>
2 2
3 * wisent.texi: Small edits. Set copyright to FSF, update license to
4 GFDL 1.3+.
5 * Makefile.in (INFO_TARGETS, DVI_TARGETS, PDF_TARGETS): Add wisent.
6 (wisent, $(buildinfodir)/wisent$(INFO_EXT), wisent.dvi, wisent.pdf):
7 New targets.
8 * makefile.w32-in (INFO_TARGETS, DVI_TARGETS, clean): Add wisent.
9 ($(infodir)/wisent$(INFO_EXT), wisent.dvi): New targets.
10
3 * bovine.texi: Small edits. Set copyright to FSF, update license to 11 * bovine.texi: Small edits. Set copyright to FSF, update license to
4 GFDL 1.3+, remove empty index. 12 GFDL 1.3+, remove empty index.
5 * Makefile.in (INFO_TARGETS, DVI_TARGETS, PDF_TARGETS): Add bovine. 13 * Makefile.in (INFO_TARGETS, DVI_TARGETS, PDF_TARGETS): Add bovine.
diff --git a/doc/misc/Makefile.in b/doc/misc/Makefile.in
index 905a81f4d6a..c99657fb9bb 100644
--- a/doc/misc/Makefile.in
+++ b/doc/misc/Makefile.in
@@ -48,7 +48,7 @@ INFO_TARGETS = ada-mode auth autotype bovine calc ccmode cl \
48 mairix-el message mh-e newsticker nxml-mode \ 48 mairix-el message mh-e newsticker nxml-mode \
49 org pcl-cvs pgg rcirc remember reftex sasl \ 49 org pcl-cvs pgg rcirc remember reftex sasl \
50 sc semantic ses sieve smtpmail speedbar srecode tramp \ 50 sc semantic ses sieve smtpmail speedbar srecode tramp \
51 url vip viper widget woman 51 url vip viper widget wisent woman
52 52
53DVI_TARGETS = \ 53DVI_TARGETS = \
54 ada-mode.dvi \ 54 ada-mode.dvi \
@@ -102,6 +102,7 @@ DVI_TARGETS = \
102 vip.dvi \ 102 vip.dvi \
103 viper.dvi \ 103 viper.dvi \
104 widget.dvi \ 104 widget.dvi \
105 wisent.dvi \
105 woman.dvi 106 woman.dvi
106 107
107PDF_TARGETS = \ 108PDF_TARGETS = \
@@ -156,6 +157,7 @@ PDF_TARGETS = \
156 vip.pdf \ 157 vip.pdf \
157 viper.pdf \ 158 viper.pdf \
158 widget.pdf \ 159 widget.pdf \
160 wisent.pdf \
159 woman.pdf 161 woman.pdf
160 162
161HTML_TARGETS = emacs-faq.html 163HTML_TARGETS = emacs-faq.html
@@ -673,6 +675,15 @@ widget.dvi: ${srcdir}/widget.texi
673widget.pdf: ${srcdir}/widget.texi 675widget.pdf: ${srcdir}/widget.texi
674 $(ENVADD) $(TEXI2PDF) ${srcdir}/widget.texi 676 $(ENVADD) $(TEXI2PDF) ${srcdir}/widget.texi
675 677
678wisent : $(buildinfodir)/wisent$(INFO_EXT)
679$(buildinfodir)/wisent$(INFO_EXT): ${srcdir}/wisent.texi
680 $(mkinfodir)
681 $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ ${srcdir}/wisent.texi
682wisent.dvi: ${srcdir}/wisent.texi
683 $(ENVADD) $(TEXI2DVI) ${srcdir}/wisent.texi
684wisent.pdf: ${srcdir}/wisent.texi
685 $(ENVADD) $(TEXI2PDF) ${srcdir}/wisent.texi
686
676woman : $(buildinfodir)/woman$(INFO_EXT) 687woman : $(buildinfodir)/woman$(INFO_EXT)
677$(buildinfodir)/woman$(INFO_EXT): ${srcdir}/woman.texi 688$(buildinfodir)/woman$(INFO_EXT): ${srcdir}/woman.texi
678 $(mkinfodir) 689 $(mkinfodir)
diff --git a/doc/misc/makefile.w32-in b/doc/misc/makefile.w32-in
index 0213ce97cce..84ad720052e 100644
--- a/doc/misc/makefile.w32-in
+++ b/doc/misc/makefile.w32-in
@@ -55,7 +55,8 @@ INFO_TARGETS = $(infodir)/ccmode$(INFO_EXT) \
55 $(infodir)/epa$(INFO_EXT) $(infodir)/mairix-el$(INFO_EXT) $(infodir)/sasl$(INFO_EXT) \ 55 $(infodir)/epa$(INFO_EXT) $(infodir)/mairix-el$(INFO_EXT) $(infodir)/sasl$(INFO_EXT) \
56 $(infodir)/auth$(INFO_EXT) $(infodir)/eieio$(INFO_EXT) $(infodir)/ede$(INFO_EXT) \ 56 $(infodir)/auth$(INFO_EXT) $(infodir)/eieio$(INFO_EXT) $(infodir)/ede$(INFO_EXT) \
57 $(infodir)/semantic$(INFO_EXT) $(infodir)/edt$(INFO_EXT) $(infodir)/emacs-gnutls$(INFO_EXT) \ 57 $(infodir)/semantic$(INFO_EXT) $(infodir)/edt$(INFO_EXT) $(infodir)/emacs-gnutls$(INFO_EXT) \
58 $(infodir)/srecode$(INFO_EXT) $(infodir)/bovine$(INFO_EXT) 58 $(infodir)/srecode$(INFO_EXT) $(infodir)/bovine$(INFO_EXT) \
59 $(infodir)/wisent$(INFO_EXT)
59DVI_TARGETS = calc.dvi cc-mode.dvi cl.dvi dbus.dvi dired-x.dvi \ 60DVI_TARGETS = calc.dvi cc-mode.dvi cl.dvi dbus.dvi dired-x.dvi \
60 ediff.dvi forms.dvi gnus.dvi message.dvi emacs-mime.dvi \ 61 ediff.dvi forms.dvi gnus.dvi message.dvi emacs-mime.dvi \
61 sieve.dvi pgg.dvi mh-e.dvi \ 62 sieve.dvi pgg.dvi mh-e.dvi \
@@ -66,7 +67,8 @@ DVI_TARGETS = calc.dvi cc-mode.dvi cl.dvi dbus.dvi dired-x.dvi \
66 newsticker.dvi rcirc.dvi erc.dvi ert.dvi \ 67 newsticker.dvi rcirc.dvi erc.dvi ert.dvi \
67 remember.dvi nxml-mode.dvi \ 68 remember.dvi nxml-mode.dvi \
68 epa.dvi mairix-el.dvi sasl.dvi auth.dvi eieio.dvi ede.dvi \ 69 epa.dvi mairix-el.dvi sasl.dvi auth.dvi eieio.dvi ede.dvi \
69 semantic.dvi edt.dvi emacs-gnutls.dvi srecode.dvi bovine.dvi 70 semantic.dvi edt.dvi emacs-gnutls.dvi srecode.dvi bovine.dvi \
71 wisent.dvi
70INFOSOURCES = info.texi 72INFOSOURCES = info.texi
71 73
72# The following rule does not work with all versions of `make'. 74# The following rule does not work with all versions of `make'.
@@ -369,6 +371,10 @@ $(infodir)/bovine$(INFO_EXT): bovine.texi doclicense.texi
369bovine.dvi: bovine.texi doclicense.texi 371bovine.dvi: bovine.texi doclicense.texi
370 $(ENVADD) $(TEXI2DVI) $(srcdir)/bovine.texi 372 $(ENVADD) $(TEXI2DVI) $(srcdir)/bovine.texi
371 373
374$(infodir)/wisent$(INFO_EXT): wisent.texi doclicense.texi
375 $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ wisent.texi
376wisent.dvi: wisent.texi doclicense.texi
377 $(ENVADD) $(TEXI2DVI) $(srcdir)/wisent.texi
372 378
373mostlyclean: 379mostlyclean:
374 - $(DEL) *.log *.cp *.fn *.ky *.pg *.vr core *.tp *.core gnustmp.* 380 - $(DEL) *.log *.cp *.fn *.ky *.pg *.vr core *.tp *.core gnustmp.*
@@ -399,7 +405,7 @@ clean: mostlyclean
399 $(infodir)/eieio* $(infodir)/ede* \ 405 $(infodir)/eieio* $(infodir)/ede* \
400 $(infodir)/semantic* $(infodir)edt* \ 406 $(infodir)/semantic* $(infodir)edt* \
401 $(infodir)/emacs-gnutls* $(infodir)/srecode* \ 407 $(infodir)/emacs-gnutls* $(infodir)/srecode* \
402 $(infodir)/bovine* 408 $(infodir)/bovine* $(infodir)/wisent*
403 409
404distclean: clean 410distclean: clean
405 - $(DEL) makefile 411 - $(DEL) makefile
diff --git a/doc/misc/wisent.texi b/doc/misc/wisent.texi
index 2567c835af2..6237e74eeb6 100644
--- a/doc/misc/wisent.texi
+++ b/doc/misc/wisent.texi
@@ -1,6 +1,6 @@
1\input texinfo @c -*-texinfo-*- 1\input texinfo @c -*-texinfo-*-
2@c %**start of header 2@c %**start of header
3@setfilename wisent.info 3@setfilename ../../info/wisent
4@set TITLE Wisent Parser Development 4@set TITLE Wisent Parser Development
5@set AUTHOR Eric M. Ludlam, David Ponce, and Richard Y. Kim 5@set AUTHOR Eric M. Ludlam, David Ponce, and Richard Y. Kim
6@settitle @value{TITLE} 6@settitle @value{TITLE}
@@ -23,35 +23,35 @@
23@c %**end of header 23@c %**end of header
24 24
25@copying 25@copying
26This manual documents the Wisent parser generator. 26Copyright @copyright{} 1988-1993, 1995, 1998-2004, 2007, 2012
27 27Free Software Foundation, Inc.
28Copyright @copyright{} 2001, 2002, 2003, 2004, 2007 David Ponce
29 28
29@c Since we are both GNU manuals, we do not need to ack each other here.
30@ignore
30Some texts are borrowed or adapted from the manual of Bison version 31Some texts are borrowed or adapted from the manual of Bison version
311.35. The text in section entitled ``Understanding the automaton'' is 321.35. The text in section entitled ``Understanding the automaton'' is
32adapted from the section ``Understanding Your Parser'' in the manual 33adapted from the section ``Understanding Your Parser'' in the manual
33of Bison version 1.49. 34of Bison version 1.49.
34 35@end ignore
35Copyright @copyright{} 1988, 1989, 1990, 1991, 1992, 1993, 1995, 1998,
361999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
37 36
38@quotation 37@quotation
39Permission is granted to copy, distribute and/or modify this document 38Permission is granted to copy, distribute and/or modify this document
40under the terms of the GNU Free Documentation License, Version 1.1 or 39under the terms of the GNU Free Documentation License, Version 1.3 or
41any later version published by the Free Software Foundation; with the 40any later version published by the Free Software Foundation; with no
42Invariant Sections being list their titles, with the Front-Cover Texts 41Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
43being list, and with the Back-Cover Texts being list. A copy of the 42and with the Back-Cover Texts as in (a) below. A copy of the license
44license is included in the section entitled ``GNU Free Documentation 43is included in the section entitled ``GNU Free Documentation License''.
45License''. 44
45(a) The FSF's Back-Cover Text is: ``You have the freedom to copy and
46modify this GNU manual. Buying copies from the FSF supports it in
47developing GNU and promoting software freedom.''
46@end quotation 48@end quotation
47@end copying 49@end copying
48 50
49@ifinfo 51@dircategory Emacs misc features
50@dircategory Emacs
51@direntry 52@direntry
52* Semantic Wisent parser development: (wisent). 53* Wisent: (wisent). Semantic Wisent parser development.
53@end direntry 54@end direntry
54@end ifinfo
55 55
56@iftex 56@iftex
57@finalout 57@finalout
@@ -60,29 +60,19 @@ License''.
60@c @setchapternewpage odd 60@c @setchapternewpage odd
61@c @setchapternewpage off 61@c @setchapternewpage off
62 62
63@ifinfo
64This file documents Application Development with Semantic.
65@emph{Infrastructure for parser based text analysis in Emacs}
66
67Copyright @copyright{} 2001, 2002, 2003, 2004 @value{AUTHOR}
68@end ifinfo
69
70@titlepage 63@titlepage
71@sp 10 64@sp 10
72@title @value{TITLE} 65@title @value{TITLE}
73@author by @value{AUTHOR} 66@author by @value{AUTHOR}
74@vskip 0pt plus 1 fill
75Copyright @copyright{} 2001, 2002, 2003, 2004 @value{AUTHOR}
76@page 67@page
77@vskip 0pt plus 1 fill 68@vskip 0pt plus 1 fill
78@insertcopying 69@insertcopying
79@end titlepage 70@end titlepage
80@page 71@page
81 72
82@c MACRO inclusion 73@macro semantic{}
83@include semanticheader.texi 74@i{Semantic}
84@paragraphindent none 75@end macro
85
86 76
87@c ************************************************************************* 77@c *************************************************************************
88@c @ Document 78@c @ Document
@@ -102,13 +92,17 @@ source in Emacs buffers.
102It also describes how Wisent is used with the @semantic{} tool set 92It also describes how Wisent is used with the @semantic{} tool set
103described in the @ref{Top, Semantic Manual, Semantic Manual, semantic}. 93described in the @ref{Top, Semantic Manual, Semantic Manual, semantic}.
104 94
95@ifnottex
96@insertcopying
97@end ifnottex
98
105@menu 99@menu
106* Wisent Overview:: 100* Wisent Overview::
107* Wisent Grammar:: 101* Wisent Grammar::
108* Wisent Parsing:: 102* Wisent Parsing::
109* Wisent Semantic:: 103* Wisent Semantic::
110* GNU Free Documentation License:: 104* GNU Free Documentation License::
111* Index:: 105* Index::
112@end menu 106@end menu
113 107
114@node Wisent Overview 108@node Wisent Overview
@@ -130,7 +124,7 @@ See the @ref{Top, Semantic Manual, , semantic}.
130It benefits from these Bison features: 124It benefits from these Bison features:
131 125
132@itemize @bullet 126@itemize @bullet
133@item 127@item
134It uses a fast but not so space-efficient encoding for the parse 128It uses a fast but not so space-efficient encoding for the parse
135tables, described in Corbett's PhD thesis from Berkeley: 129tables, described in Corbett's PhD thesis from Berkeley:
136@quotation 130@quotation
@@ -138,7 +132,7 @@ tables, described in Corbett's PhD thesis from Berkeley:
138June 1985, Report No. UCB/CSD 85/251. 132June 1985, Report No. UCB/CSD 85/251.
139@end quotation 133@end quotation
140 134
141@item 135@item
142For generating the lookahead sets, Wisent uses the well-known 136For generating the lookahead sets, Wisent uses the well-known
143technique of F. DeRemer and A. Pennello they described in: 137technique of F. DeRemer and A. Pennello they described in:
144@quotation 138@quotation
@@ -146,11 +140,11 @@ technique of F. DeRemer and A. Pennello they described in:
146October 1982, ACM TOPLS Vol 4 No 4. 140October 1982, ACM TOPLS Vol 4 No 4.
147@end quotation 141@end quotation
148 142
149@item 143@item
150Wisent resolves shift/reduce conflicts using operator precedence and 144Wisent resolves shift/reduce conflicts using operator precedence and
151associativity. 145associativity.
152 146
153@item 147@item
154Parser error recovery is accomplished using rules which match the 148Parser error recovery is accomplished using rules which match the
155special token @code{error}. 149special token @code{error}.
156@end itemize 150@end itemize
@@ -223,12 +217,12 @@ exp @equiv{} exp PLUS exp
223 217
224Says that two groupings of type @samp{exp}, with a @samp{PLUS} token 218Says that two groupings of type @samp{exp}, with a @samp{PLUS} token
225in between, can be combined into a larger grouping of type @samp{exp}. 219in between, can be combined into a larger grouping of type @samp{exp}.
226 220
227@menu 221@menu
228* Grammar format:: 222* Grammar format::
229* Example:: 223* Example::
230* Compiling a grammar:: 224* Compiling a grammar::
231* Conflicts:: 225* Conflicts::
232@end menu 226@end menu
233 227
234@node Grammar format, Example, Wisent Grammar, Wisent Grammar 228@node Grammar format, Example, Wisent Grammar, Wisent Grammar
@@ -463,14 +457,14 @@ Here is an example to parse simple infix arithmetic expressions. See
463'( 457'(
464 ;; Terminals 458 ;; Terminals
465 (NUM) 459 (NUM)
466 460
467 ;; Terminal associativity & precedence 461 ;; Terminal associativity & precedence
468 ((nonassoc ?=) 462 ((nonassoc ?=)
469 (left ?- ?+) 463 (left ?- ?+)
470 (left ?* ?/) 464 (left ?* ?/)
471 (left NEG) 465 (left NEG)
472 (right ?^)) 466 (right ?^))
473 467
474 ;; Rules 468 ;; Rules
475 (input 469 (input
476 ((line)) 470 ((line))
@@ -671,8 +665,8 @@ information.
671@end table 665@end table
672 666
673@menu 667@menu
674* Grammar Debugging:: 668* Grammar Debugging::
675* Understanding the automaton:: 669* Understanding the automaton::
676@end menu 670@end menu
677 671
678@node Grammar Debugging 672@node Grammar Debugging
@@ -742,7 +736,7 @@ We will use the following example:
742 (wisent-compile-grammar 736 (wisent-compile-grammar
743 '((NUM STR) ; %token NUM STR 737 '((NUM STR) ; %token NUM STR
744 738
745 ((left ?+ ?-) ; %left '+' '-'; 739 ((left ?+ ?-) ; %left '+' '-';
746 (left ?*)) ; %left '*' 740 (left ?*)) ; %left '*'
747 741
748 (exp ; exp: 742 (exp ; exp:
@@ -1183,11 +1177,11 @@ Normal hook run just after the @var{LR} parser engine terminated.
1183@end defvar 1177@end defvar
1184 1178
1185@menu 1179@menu
1186* Writing a lexer:: 1180* Writing a lexer::
1187* Actions goodies:: 1181* Actions goodies::
1188* Report errors:: 1182* Report errors::
1189* Error recovery:: 1183* Error recovery::
1190* Debugging actions:: 1184* Debugging actions::
1191@end menu 1185@end menu
1192 1186
1193@node Writing a lexer 1187@node Writing a lexer
@@ -1593,8 +1587,8 @@ Please @inforef{top, Semantic Grammar Framework Manual, grammar-fw}
1593for more information on @semantic{} grammars. 1587for more information on @semantic{} grammars.
1594 1588
1595@menu 1589@menu
1596* Grammar styles:: 1590* Grammar styles::
1597* Wisent Lex:: 1591* Wisent Lex::
1598@end menu 1592@end menu
1599 1593
1600@node Grammar styles 1594@node Grammar styles
@@ -1608,11 +1602,11 @@ used with the @semantic{} tool set: the @dfn{Iterative style} and the
1608it can be worth a mix of the two styles! 1602it can be worth a mix of the two styles!
1609 1603
1610@menu 1604@menu
1611* Iterative style:: 1605* Iterative style::
1612* Bison style:: 1606* Bison style::
1613* Mixed style:: 1607* Mixed style::
1614* Start nonterminals:: 1608* Start nonterminals::
1615* Useful functions:: 1609* Useful functions::
1616@end menu 1610@end menu
1617 1611
1618@node Iterative style, Bison style, Grammar styles, Grammar styles 1612@node Iterative style, Bison style, Grammar styles, Grammar styles
@@ -1929,7 +1923,7 @@ schedules an incremental re-parse of that data, using the tag's
1929reviewed to ensure that the incremental parser will work!} 1923reviewed to ensure that the incremental parser will work!}
1930 1924
1931Things are a little bit different when the grammar is written in Bison 1925Things are a little bit different when the grammar is written in Bison
1932style. 1926style.
1933 1927
1934@strong{The @code{reparse-symbol} property is set to the nonterminal 1928@strong{The @code{reparse-symbol} property is set to the nonterminal
1935symbol the rule that explicitly uses @code{EXPANDTAG} belongs to.} 1929symbol the rule that explicitly uses @code{EXPANDTAG} belongs to.}
@@ -1996,7 +1990,7 @@ Is a symbol that identifies a lexical token class, like @code{symbol},
1996@itemx end 1990@itemx end
1997Are the start and end positions of mapped data in the input buffer. 1991Are the start and end positions of mapped data in the input buffer.
1998@end table 1992@end table
1999 1993
2000The Wisent's parser doesn't depend on the nature of analyzed input 1994The Wisent's parser doesn't depend on the nature of analyzed input
2001stream (buffer, string, etc.), and requires that lexical tokens have a 1995stream (buffer, string, etc.), and requires that lexical tokens have a
2002different form (@pxref{Writing a lexer}): 1996different form (@pxref{Writing a lexer}):
@@ -2036,7 +2030,7 @@ equivalent Wisent lexical tokens is straightforward:
2036@node GNU Free Documentation License 2030@node GNU Free Documentation License
2037@appendix GNU Free Documentation License 2031@appendix GNU Free Documentation License
2038 2032
2039@include fdl.texi 2033@include doclicense.texi
2040 2034
2041@node Index 2035@node Index
2042@unnumbered Index 2036@unnumbered Index
diff --git a/info/dir b/info/dir
index 987ebea0ab6..4fa837e6a1e 100644
--- a/info/dir
+++ b/info/dir
@@ -79,8 +79,9 @@ Emacs misc features
79 and citations. 79 and citations.
80* Remember: (remember). Simple information manager for Emacs. 80* Remember: (remember). Simple information manager for Emacs.
81* Semantic: (semantic). Source code parser library and utilities. 81* Semantic: (semantic). Source code parser library and utilities.
82* SRecode: (srecode). Template code generator.
83* Bovine: (bovine). Semantic bovine parser development. 82* Bovine: (bovine). Semantic bovine parser development.
83* SRecode: (srecode). Template code generator.
84* Wisent: (wisent). Semantic Wisent parser development.
84* SES: (ses). Simple Emacs Spreadsheet. 85* SES: (ses). Simple Emacs Spreadsheet.
85* Speedbar: (speedbar). File/Tag summarizing utility. 86* Speedbar: (speedbar). File/Tag summarizing utility.
86* VIP: (vip). An older VI-emulation for Emacs. 87* VIP: (vip). An older VI-emulation for Emacs.