--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <meta http-equiv="content-type"
+ content="text/html; charset=ISO-8859-1">
+ <title>re2c Home</title>
+</head>
+<body>
+<h1>re2c</h1>
+<br>
+<h2>Current Project</h2>
+re2c is a great tool and has been unmaintained for quite some time, and
+in fact doesn't even compile with recent versions of gcc. I've
+used re2c in a few of my projects (e.g. OpenWBEM), and I have an
+interest in lexers (I wrote a dynamic lexer called slex as an example
+for the Spirit parser framework (see http://spirit.sf.net/)). I
+didn't want to see it suffer bit-rot as there are a few bugs which need
+to be fixed as well as some new features that would be nice to
+add. So, after trying to contact either Peter Bumbulis or Brian
+Young, I decided to adopt the project and use SourceForge.net to host
+it. <br>
+<br>
+I very much welcome anyone who would like to contribute to the project,
+either as a developer with CVS access or by simply sending patches, bug
+reports, or suggestions for improvement. I have created a mailing
+list: re2c-general at lists dot sourceforge dot net which should be
+used for all communication about re2c.<br>
+<br>
+Please use the <a href="http://sourceforge.net/projects/re2c">SourceForge
+facilities</a> to download re2c, report bugs, subscribe to the mailing
+list, etc.<br>
+<br>
+Dan Nuffer (nuffer@users.sourceforge.net)<br>
+<br>
+<h2>Version 0.9.1 README<br>
+</h2>
+Originally written by Peter Bumbulis (peter@csg.uwaterloo.ca)<br>
+Currently maintained by Brian Young (bayoung@acm.org)<br>
+<br>
+The re2c distribution can be found at:<br>
+<br>
+http://www.tildeslash.org/re2c/index.html<br>
+<br>
+The source distribution is available from:<br>
+<br>
+http://www.tildeslash.org/re2c/re2c-0.9.1.tar.gz<br>
+<br>
+This distribution is a cleaned up version of the 0.5 release<br>
+maintained by me (Brian Young). Several bugs were fixed as well<br>
+as code cleanup for warning free compilation. It has been developed<br>
+and tested with egcs 1.0.2 and gcc 2.7.2.3 on Linux x86. Peter<br>
+Bumbulis' original release can be found at:<br>
+<br>
+ftp://csg.uwaterloo.ca/pub/peter/re2c.0.5.tar.gz<br>
+<br>
+re2c is a great tool for writing fast and flexible lexers. It has<br>
+served many people well for many years and it deserves to be<br>
+maintained more actively. re2c is on the order of 2-3 times faster<br>
+than a flex based scanner, and its input model is much more<br>
+flexible.<br>
+<br>
+Patches and requests for features will be entertained. Areas of<br>
+particular interest to me are porting (a Solaris and an NT<br>
+version will be forthcoming) and wide character support. Note<br>
+that the code is already quite portable and should be buildable<br>
+on any platform with minor makefile changes.<br>
+<br>
+Peter's original version 0.5 ANNOUNCE and README follows.<br>
+<br>
+Brian<br>
+<br>
+--<br>
+<br>
+re2c is a tool for generating C-based recognizers from regular<br>
+expressions. re2c-based scanners are efficient: for programming<br>
+languages, given similar specifications, an re2c-based scanner is<br>
+typically almost twice as fast as a flex-based scanner with little or no<br>
+increase in size (possibly a decrease on cisc architectures). Indeed,<br>
+re2c-based scanners are quite competitive with hand-crafted ones.<br>
+<br>
+Unlike flex, re2c does not generate complete scanners: the user must<br>
+supply some interface code. While this code is not bulky (about 50-100<br>
+lines for a flex-like scanner; see the man page and examples in the<br>
+distribution) careful coding is required for efficiency (and<br>
+correctness). One advantage of this arrangement is that the generated<br>
+code is not tied to any particular input model. For example, re2c<br>
+generated code can be used to scan data from a null-byte terminated<br>
+buffer as illustrated below.<br>
+<br>
+Given the following source<br>
+<br>
+#define NULL ((char*) 0)<br>
+char *scan(char *p){<br>
+char *q;<br>
+#define YYCTYPE char<br>
+#define YYCURSOR p<br>
+#define YYLIMIT p<br>
+#define YYMARKER q<br>
+#define YYFILL(n)<br>
+/*!re2c<br>
+[0-9]+ {return YYCURSOR;}<br>
+[\000-\377] {return NULL;}<br>
+*/<br>
+}<br>
+<br>
+re2c will generate<br>
+<br>
+/* Generated by re2c on Sat Apr 16 11:40:58 1994 */<br>
+#line 1 "simple.re"<br>
+#define NULL ((char*) 0)<br>
+char *scan(char *p){<br>
+char *q;<br>
+#define YYCTYPE char<br>
+#define YYCURSOR p<br>
+#define YYLIMIT p<br>
+#define YYMARKER q<br>
+#define YYFILL(n)<br>
+{<br>
+YYCTYPE yych;<br>
+unsigned int yyaccept;<br>
+goto yy0;<br>
+yy1: ++YYCURSOR;<br>
+yy0:<br>
+if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);<br>
+yych = *YYCURSOR;<br>
+if(yych <= '/') goto yy4;<br>
+if(yych >= ':') goto yy4;<br>
+yy2: yych = *++YYCURSOR;<br>
+goto yy7;<br>
+yy3:<br>
+#line 10<br>
+{return YYCURSOR;}<br>
+yy4: yych = *++YYCURSOR;<br>
+yy5:<br>
+#line 11<br>
+{return NULL;}<br>
+yy6: ++YYCURSOR;<br>
+if(YYLIMIT == YYCURSOR) YYFILL(1);<br>
+yych = *YYCURSOR;<br>
+yy7: if(yych <= '/') goto yy3;<br>
+if(yych <= '9') goto yy6;<br>
+goto yy3;<br>
+}<br>
+#line 12<br>
+<br>
+}<br>
+<br>
+Note that most compilers will perform dead-code elimination to remove<br>
+all YYCURSOR, YYLIMIT comparisions.<br>
+<br>
+re2c was developed for a particular project (constructing a fast REXX<br>
+scanner of all things!) and so while it has some rough edges, it should<br>
+be quite usable. More information about re2c can be found in the<br>
+(admittedly skimpy) man page; the algorithms and heuristics used are<br>
+described in an upcoming LOPLAS article (included in the distribution).<br>
+Probably the best way to find out more about re2c is to try the supplied<br>
+examples. re2c is written in C++, and is currently being developed<br>
+under Linux using gcc 2.5.8.<br>
+<br>
+Peter<br>
+<br>
+--<br>
+<br>
+re2c is distributed with no warranty whatever. The code is certain to<br>
+contain errors. Neither the author nor any contributor takes<br>
+responsibility for any consequences of its use.<br>
+<br>
+re2c is in the public domain. The data structures and algorithms used<br>
+in re2c are all either taken from documents available to the general<br>
+public or are inventions of the author. Programs generated by re2c may<br>
+be distributed freely. re2c itself may be distributed freely, in source<br>
+or binary, unchanged or modified. Distributors may charge whatever fees<br>
+they can obtain for re2c.<br>
+<br>
+If you do make use of re2c, or incorporate it into a larger project an<br>
+acknowledgement somewhere (documentation, research report, etc.) would<br>
+be appreciated.<br>
+<br>
+Please send bug reports and feedback (including suggestions for<br>
+improving the distribution) to<br>
+<br>
+peter@csg.uwaterloo.ca<br>
+<br>
+Include a small example and the banner from parser.y with bug reports.<br>
+<pre><br></pre>
+</body>
+</html>