GPP, the Generic Preprocessor

In computer science, a preprocessor (or macro processor) is a tool that programatically alters its input, typically on the basis of inline annotations, to produce data that serves as input for another program. Preprocessors are used in software development and document processing workflows to translate or extend programming or markup languages, as well as for conditional or pattern-based generation of source code and text. Early preprocessors were relatively simple string replacement tools that were tied to specific programming languages and application domains, and while these have since given rise to more powerful, general-purpose tools, these often require the user to learn and use complex macro languages with their own syntactic conventions. In this paper, we present GPP, an extensible, general-purpose preprocessor whose principal advantage is that its syntax and behaviour can be customized to suit any given preprocessing task. This makes GPP of particular benefit to research applications, where it can be easily adapted for use with novel markup, programming, and control languages.

[1]  A Filesystem-Based Approach to Support Product Line Development with Editable Views , 2010 .

[2]  Michael Kifer,et al.  The XSB System Version 2.5 Volume 1: Programmer's Manual , 2003 .

[3]  Peter J. Brown,et al.  The ML/I macro processor , 1967, Commun. ACM.

[4]  Christopher Strachey,et al.  A general purpose macrogenerator , 1965, Comput. J..

[5]  L. P. Deutsch,et al.  Programming languages for non-numeric processing—1: TRAC, a text handling language , 1965, ACM '65.

[6]  Gunter Saake,et al.  Type checking annotation-based product lines , 2012, TSEM.

[7]  Loren P. Meissner,et al.  On extending Fortran control structures to facilitate structured programming , 1975, SIGP.

[8]  Peter J. Brown,et al.  A survey of macro processors , 1969 .

[9]  J. M. Triance Structured Programming in COBOL - The Corrent Options , 1980, Comput. J..

[10]  Peter D. Gray SUS, an Object Reference Model for Distributing UNIX Super User Privileges , 2001, LISA.

[11]  R. H. Pesch Configurable Manuals , 1992, Conference Record on Crossing Frontiers..

[12]  Gunter Saake,et al.  Classic, Tool-Driven Variability Mechanisms , 2013 .

[13]  Michael D. Ernst,et al.  An Empirical Analysis of C Preprocessor Use , 2002, IEEE Trans. Software Eng..

[14]  M. Douglas McIlroy Macro instruction extensions of compiler languages , 1960, CACM.

[15]  Paul J. Layzell The History of Macro Processors in Programming Language Extensibility , 1985, Comput. J..

[16]  서정헌,et al.  반도체 공정 overview , 2001 .

[17]  Michael Hucka,et al.  Programmer's Manual , 2004 .

[18]  Benjamin Behringer Projectional Editing of Software Product Lines–The PEoPL approach , 2017 .

[19]  Thomas Mailund,et al.  Introducing Markdown and Pandoc: Using Markup Language and Document Converter , 2019 .

[20]  Ira D. Baxter,et al.  Preprocessor conditional removal by simple partial evaluation , 2001, Proceedings Eighth Working Conference on Reverse Engineering.