The design and implementation of the FIRE engine : a C++ toolkit for finite automata and regular expressions

This paper describes the design and implementation of version 1.2 of the FIRE engine. The FIRE engine is a C++ class library implementing finite automata and regular expression algorithms. The algorithms implemented in the toolkit are almost all of those presented in the taxonomies of finite automata algorithms [Wat93a, Wat93b]. The reader is assumed to be familiar with the two taxonomies and with advanced C++ programming techniques. The toolkit is implemented largely in an object-oriented style, with finite automata and regular expressions being defined as classes. 'All of the classes and functions in the toolkit are presented in the same format. For each class (or function) the format includes a short description of its behaviour, details of its implementation, and techniques for improving its performance. "'Second printing, with corrections.

[1]  Bruce W. Watson An introduction to the FIRE engine : a C++ toolkit for finite automata and regular expressions , 1994 .

[2]  J. Zwiers,et al.  Assertional Data Reification Proofs: Survey and Perspective , 1991 .

[3]  D. de Reus,et al.  An implementation model for GOOD , 1991 .

[4]  P. D. Moerland,et al.  Exercises in multiprogramming , 1993 .

[5]  Stanley B. Lippman,et al.  C++ Primer , 1993 .

[6]  簡聰富,et al.  物件導向軟體之架構(Object-Oriented Software Construction)探討 , 1989 .

[7]  Timothy A. Budd,et al.  Classic data structures in C++ , 1994 .

[8]  Kees M. van Hee,et al.  Transforming Functional Database Schemes to Relational Representations , 1992, Specifications of Database Systems.

[9]  B. Watson A taxonomy of finite automata construction algorithms , 1993 .

[10]  K. M. van Hee,et al.  Systems engineering : a formal approach , 1992 .

[11]  Timothy A. Budd,et al.  An introduction to object-oriented programming , 1991 .

[12]  James Martin,et al.  Object-oriented analysis and design , 1992 .

[13]  Jean-Marc Champarnaud,et al.  AUTOMATE, a Computing Package for Automata and Finite Semigroups , 1991, J. Symb. Comput..

[14]  Bjarne Stroustrup,et al.  The Annotated C++ Reference Manual , 1990 .

[15]  Derick Wood,et al.  The Grail papers: version 2.3 , 1995 .

[16]  Robert B. Murray,et al.  C++ Strategies and Tactics , 1993 .

[17]  Erik Poll,et al.  CPO-Models for Second Order Lambda Calculus with Recursive Types and Subtyping , 1993, RAIRO Theor. Informatics Appl..

[18]  Joost-Pieter Katoen,et al.  Parallel programs for the recognition of P-invariant segments , 1991 .

[19]  Bjarne Stroustrup,et al.  The C++ Programming Language, Second Edition , 1991 .

[20]  Mats Henricson,et al.  Programming in C++. Rules and recommendations , 1992 .

[21]  Fairouz Kamareddine,et al.  Non well-foundedness and type freeness can unify the interpretation of functional application , 1992 .

[22]  Scott Meyers,et al.  Effective C++: 55 Specific Ways to Improve Your Programs and Designs (3rd Edition) , 1991 .

[23]  G. G. Stokes "J." , 1890, The New Yale Book of Quotations.

[24]  Erik Poll,et al.  Some categorical properties for a model for second order lambda calculus with subtyping , 1991 .

[25]  B. Watson A taxonomy of finite automata minimization algorithms , 1993 .

[26]  van de E Edwin Sluis,et al.  Performance analysis of VLSI programs , 1991 .

[27]  Gerald W. Both,et al.  Object-oriented analysis and design with applications , 1994 .

[28]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..

[29]  Jan A. Bergstra,et al.  Axiomatizing Probabilistic Processes: ACP with Generative Probabilities , 1995, Inf. Comput..

[30]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.