The Fortuna Random Number Generator. An implementation of the Fortuna random number generator by N. Ferguson and B. Schneier in Go. … read more

PSFile: Generate PostScript files with Python. A Python module to create PostScript files (either stand-alone ps files or eps files for inclusion into other documents). … read more

CSimGen. Homepage of the CSimGen code generator … read more

Wisent: a Python parser generator

By Jochen Voss, last updated 2014-03-15

Contents

Introduction

When writing a computer program, implementing methods to read data from input files with a complex structure can be surprisingly difficult. For example, if the input data comes from an untrusted source, errors in the input file often need to be dealt with very carefully. If your program is written in Python and if the input data is sufficiently structured (i.e., if the format can be described by a context free grammar), Wisent can help you to implement parts of the input processing of your program.

[cave painting of a wisent]

A cave painting from the cave of Altamira, showing a wisent. The photo was taken from the Wikimedia Commons and is in the public domain.

Features

The parser generator has the following features:

The generated parsers have the following features:

More information can be found in the Wisent Users' Manual.

About the name

I called the program Wisent because the first parser generator I encountered was Bison and the Wisent is the European variant of the Bison. Unfortunately, I learned later that there are at least two other parser generators which use the name Wisent:

Download

wisent version 0.6.2, 2012-04-10

allow '-' in symbol names, minor fixes

wisent version 0.6.1, 2010-09-16 (bug fix release)

Comments and multi-line strings in grammar files were broken since version 0.6. Release 0.6.1 fixes this problem.

The source code for more recent, experimental versions of wisent may (or may not) be available on github.com.

Generic installation instructions are in the file INSTALL. On most systems, the following commands should be sufficient:

./configure
make
make install

Alternatively you can omit the make install and run Wisent directly in the build directory.

Please send any suggestions and bug reports to Jochen Voss. Your message should include the Wisent version number, as obtained by the command wisent -V.

References

Copyright © 2014, Jochen Voss. All content on this website (including text, pictures, and any other original works), unless otherwise noted, is licensed under a Creative Commons Attribution-Share Alike 3.0 License.