To make the licensing part clear, SPLinT is GPL v.~3: % Copyright 2012-2022, Alexander Shibakov % This file is part of SPLinT % % SPLinT is free software: you can redistribute it and/or modify % it under the terms of the GNU General Public License as published by % the Free Software Foundation, either version 3 of the License, or % (at your option) any later version. % % SPLinT is distributed in the hope that it will be useful, % but WITHOUT ANY WARRANTY; without even the implied warranty of % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the % GNU General Public License for more details. % % You should have received a copy of the GNU General Public License % along with SPLinT. If not, see <http://www.gnu.org/licenses/>. SPLinT is a \TeX\ package for building parsers and scanners in \TeX. Bison and Flex are used to create the tables that drive the automata programmed as \TeX\ macros (thus, after the parser/scanner has been completed it can be used in plain \TeX, without invoking any outside software). The documentation included with the package has a detailed description of the features of the produced parsers and scanners. To get started, run `make' to create a manual (which can be found as cweb/splint.pdf in the cweb/ directory) and take a look at the `examples' directory. Here is a short description of the various files included in the collection. Files: cweb/* - executables and documentation: bs.w - Bison Sourcer(er): table code core for bison fk.w - Flex Kit(ten): table code core for flex common.w - common code for table generators bo.w - parser for the bison grammar lo.w - lexer for the bison grammar fo.w - parser for the flex grammar so.w - lexer for the flex grammar np.w - scanner and parser for token names mkeparser.w - parser output `driver' mkscanner.w - lexer output `driver' splint.w - documentation philosophy.w - rants checklists.w - checklists to follow when modifying SPLinT tex/* - \TeX\ macros yy*.sty, yx*.sty, flex.sty - automata machinery trt1.sty - `\TeX\ runtime': temporary register definitions xarithm.sty - expandable arithmetic for parsing macros grabstates.sty - macros for state grabbing *tokenset.sty - token typesetting definitions gindex.sty - generic indexing macros dcols.sty - multiple column output noweb.sty - noweb style references (local within a page) limbo.sty - limbo section macros frontmatter.sty - macros to typeset the cover page examples/* - various examples: count - an example of robust token counting macros. expression - a simple expression parser built with the package. ld - a typesetting parser for the \GNU\ linker, ld, with a very detailed implementation manual. symbols - a demonstration of the features of the bison and flex parsers included in the package. types - expandable arithmetic (e.g. addition and subtraction macros that can be used inside \edef), tree data structure; incomplete and slow, merely a proof of concept; only standard plain \TeX\ is used xxpression - an extended version of the `expression' example above, with a demonstration of symbolic name mechanism setup. scripts/* - helper (perl, for now) scripts to aid in pre- and post-processing of various files makefile.inc - common definitions makefile.loc - placeholder file for local make rules COPYING - license information INSTALL - cursory instalation notes README - this file TODO - plans for future development VERSION - the current version The most recent version of this software can be downloaded at www.shibakov.org/splint/archive/splint.tar.bz2