Skip to content

Commit

Permalink
Minor copy-editing of paper
Browse files Browse the repository at this point in the history
  • Loading branch information
logological committed Jul 27, 2020
1 parent 75b38fb commit 870d1a4
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion doc/paper.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ Text processing became another main application area for preprocessors, in parti

Criticism of preprocessors commonly focuses on the idiosyncratic languages they employ for their own built-in directives and for users to define and invoke macros. The languages of early preprocessors were derided as "clumsy and restrictive" [@layzell1985history] and "hard to read" [@brown1969survey], and even modern preprocessors are sometimes attacked for relying on "the clumsiness of a separate language of limited expressiveness" [@ernst2002empirical] or, at the other extreme, for being overly complicated, quirky, opaque, or hard to learn, even for experienced programmers and markup users [@pesch1992configurable; @paddon1993shake; @ernst2002empirical].

Our general-purpose preprocessor, GPP, avoids these issues by providing a lightweight but flexible macro language whose syntax can be customized by the user. The tool's built-in presets allow its directives to be made to resemble those of many popular languages, including HTML and \TeX. This greatly reduces the learning curve for GPP when it is used with these languages, eliminates the cognitive burden of repeatedly "mode switching" between source and preprocessor syntax when reading or composing, and allows existing syntax highlighters and other tools to process GPP directives with little or no further configuration. Furthermore, users are not limited to using these presets, but can fully define their own syntax for GPP directives and macros. This makes GPP particularly attractive for use in research and development, where its syntax can be readily adapted to match novel programming and markup languages.
Our general-purpose preprocessor, GPP, avoids these issues by providing a lightweight but flexible macro language whose syntax can be customized by the user. The tool's built-in presets allow its directives to be made to resemble those of many popular languages, including HTML and \LaTeX. This greatly reduces the learning curve for GPP when it is used with these languages, eliminates the cognitive burden of repeatedly "mode switching" between source and preprocessor syntax when reading or composing, and allows existing syntax highlighters and other tools to process GPP directives with little or no further configuration. Furthermore, users are not limited to using these presets, but can fully define their own syntax for GPP directives and macros. This makes GPP particularly attractive for use in research and development, where its syntax can be readily adapted to match bespoke programming and markup languages.

GPP's independence from any one programming or markup language makes it more versatile than the C Preprocessor, which was formerly "abused" as a general text processor and is still sometimes (inappropriately) used for non-C applications [@stallman2020c]. While GPP is less powerful than m4 [@seindal2016m4], it is arguably more flexible, and supports all the basic operations expected of a modern, high-level preprocessing system, including conditional tests, arithmetic evaluation, and POSIX-style wildcard matching ("globbing"). In addition to macros, GPP understands comments and strings, whose syntax and behaviour can also be widely customized to fit any particular purpose.

Expand Down

0 comments on commit 870d1a4

Please sign in to comment.