Skip to content

Repository files navigation

ToolMaker

What it is

ToolMaker is a set of tools to make compilers, analyzers and similar tools. It creates a lexcial scanner (like lex et.al) and a parser (like yacc et.al). But in addition it can also generate a lister (modules handling input text and error messages). It is also build on top of a powerful macro tool, imp, similar in function to m4 and others.

Documentation

The ToolMaker Reference Manual is published online. It is the original 1994 SoftLab manual, ported to AsciiDoc, and covers all five parts:

  • Part I — ToolMaker System Description
  • Part II — ParserMaker
  • Part III — ScannerMaker
  • Part IV — ListerMaker
  • Part V — Toolmake

Man pages for the individual tools: imp(1), lmk(1), pmk(1), smk(1) and toolmake(1).

The site is rebuilt and republished automatically whenever the documentation sources change. The scanned paper original the text was transcribed from is kept in doc/manual.pdf, and to build the HTML yourself see docs-src/README.md.

License

This is a project which contains original work by Kenth Ericsson, Jerker Willander and others at SoftLab AB Sweden, including myself. SoftLab was sold to Rational Software in 1997 which then resold that to Ericsson some years later.

Although this would strictly be copyrighted material, but considering

  • me being one of its authors and also one of the owners of SoftLab
  • the almost 20 years that has gone by
  • the low commercial value in this technology, given that there are a multitude of other tools available
  • the missing documentation
  • that I am willing to take this down if anyone objects

I'm making this repo of resurrected sources available, mostly for my own use. Please consult me before creating forks.

Current state

All licensing is removed, but the source for the licensing mechanism is still here, but not cleaned or compiled recently. The same goes for the toolmake utility, which creates an initial set of files for your new ToolMaker-based project.

Otherwise the source compiles on multipe platfoms (Linux, Cygwin, ...) and all tests run (using Jregr).

Acknowledgement

We, who where at SoftLab at that time, where all involved in this in some way. Special thanks to

  • Kenth Ericsson & Jerker Wilander for the theory behind the error recovery in the parser generated by the ParserMaker.

  • Tony Olsson for the core of the scanner logic.

  • Myself, Reibert Arbring, Michael Dahlgren and Håkan Pettersson for structuring this into a project and filling out all the blanks.

Building

To build you need gcc. A plain make builds natively, which on a modern machine means 64-bit:

make

To build 32-bit instead, pass the bitness explicitly. This needs a multilib gcc and binutils:

make BITNESS=-m32

If you want to run tests you need Jregr.

For building the documentation, see docs-src/README.md.

About

A legacy, but powerful toolset for building compilers and tools

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages