The TEXbook
Latex: a document preparation system
Latex: a document preparation system
PLDI '93 Proceedings of the ACM SIGPLAN 1993 conference on Programming language design and implementation
A syntactic approach to type soundness
Information and Computation
LFP '86 Proceedings of the 1986 ACM conference on LISP and functional programming
A framework for preprocessor-aware C source code analyses
Software—Practice & Experience
Growing languages with metamorphic syntax macros
PEPM '02 Proceedings of the 2002 ACM SIGPLAN workshop on Partial evaluation and semantics-based program manipulation
Featherweight Java: a minimal core calculus for Java and GJ
ACM Transactions on Programming Languages and Systems (TOPLAS)
TEX by Topic: A Texnician's Reference
TEX by Topic: A Texnician's Reference
TEX: The Program
Rewrite Systems for Symbolic Evaluation of C-like Preprocessing
CSMR '04 Proceedings of the Eighth Euromicro Working Conference on Software Maintenance and Reengineering (CSMR'04)
Parsing C/C++ Code without Pre-processing
CC '09 Proceedings of the 18th International Conference on Compiler Construction: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009
Static Validation of C Preprocessor Macros
ASE '09 Proceedings of the 2009 IEEE/ACM International Conference on Automated Software Engineering
SugarJ: library-based syntactic language extensibility
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
Language composition untangled
Proceedings of the Twelfth Workshop on Language Descriptions, Tools, and Applications
A framework for extensible languages
Proceedings of the 12th international conference on Generative programming: concepts & experiences
A framework for extensible languages
Proceedings of the 12th international conference on Generative programming: concepts & experiences
Hi-index | 0.00 |
TEX (and its LATEX incarnation) is a widely used document preparation system for technical and scientific documents. At the same time, TEX is also an unusual programming language with a quite powerful macro system. Despite the wide range of TEX users (especially in the scientific community), and despite a widely perceived considerable level of "pain" in using TEX, there is almost no research on TEX. This paper is an attempt to change that. To this end, we present Featherweight TEX, a formal model of TEX which we hope can play a similar role for TEX as Featherweight Java did for Java. The main technical problem which we study in terms of Featherweight TEX is the parsing problem. As for other dynamic languages performing syntactic analysis at runtime, the concept of "static" parsing and its correctness is unclear in TEX and shall be clarified in this paper. Moreover, it is the case that parsing TEX is impossible in general, but we present evidence that parsers for practical subsets exists. We furthermore outline three immediate applications of our formalization of TEX and its parsing: a macro debugger, an analysis that detects syntactic inconsistencies, and a test framework for TEX parsers.