Toy Parser Generator
or
How to easily write parsers in Python

Christophe Delord
christophe.delord@free.fr
http://christophe.delord.free.fr/en/tpg/

March 1, 2005
Contents
List of Figures
I  Introduction and tutorial
1 Introduction
 1.1 Introduction
 1.2 License
 1.3 Structure of the document
2 Installation
 2.1 Getting TPG
 2.2 Requirements
 2.3 TPG for Linux and other Unix like
 2.4 TPG for M$ Windows
 2.5 TPG for other operating systems
3 Tutorial
 3.1 Introduction
 3.2 Defining the grammar
 3.3 Reading the input and returning values
 3.4 Embeding the parser in a script
 3.5 Conclusion
II  TPG reference
4 Usage
 4.1 Package content
 4.2 Command line usage
5 Grammar structure
 5.1 TPG grammar structure
 5.2 Comments
 5.3 Options
 5.4 Python code
 5.5 TPG parsers
6 Lexer
 6.1 Regular expression syntax
 6.2 Token definition
 6.3 Token matching
7 Parser
 7.1 Declaration
 7.2 Grammar rules
 7.3 Parsing terminal symbols
 7.4 Parsing non terminal symbols
 7.5 Sequences
 7.6 Alternatives
 7.7 Repetitions
 7.8 Precedence and grouping
 7.9 Actions
8 Context sensitive lexer
 8.1 Introduction
 8.2 Grammar structure
 8.3 CSL lexers
 8.4 CSL parsers
9 Debugging
 9.1 Introduction
 9.2 Verbose parsers
III  Some examples to illustrate TPG
10 Complete interactive calculator
 10.1 Introduction
 10.2 New functions
 10.3 Source code
11 Infix/Prefix/Postfix notation converter
 11.1 Introduction
 11.2 Abstract syntax trees
 11.3 Grammar
 11.4 Source code