Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
Crafting a compiler
More programming pearls: confessions of a coder
More programming pearls: confessions of a coder
Lex & yacc
Parsing techniques: a practical guide
Parsing techniques: a practical guide
Tcl and the Tk toolkit
An Improved Context-Free Recognizer
ACM Transactions on Programming Languages and Systems (TOPLAS)
An efficient context-free parsing algorithm
Communications of the ACM
A new method for compiler code generation
POPL '78 Proceedings of the 5th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Efficient Parsing for Natural Language: A Fast Algorithm for Practical Systems
Efficient Parsing for Natural Language: A Fast Algorithm for Practical Systems
Translation of Computer Languages
Translation of Computer Languages
Python; Essential Reference
Introduction to Automata Theory, Languages and Computability
Introduction to Automata Theory, Languages and Computability
Even faster generalized LR parsing
Acta Informatica
The Theory of Parsing, Translation, and Compiling
The Theory of Parsing, Translation, and Compiling
Deterministic Techniques for Efficient Non-Deterministic Parsers
Proceedings of the 2nd Colloquium on Automata, Languages and Programming
CC '96 Proceedings of the 6th International Conference on Compiler Construction
CC '99 Proceedings of the 8th International Conference on Compiler Construction, Held as Part of the European Joint Conferences on the Theory and Practice of Software, ETAPS'99
Current Parsing Techniques in Software Renovation Considered Harmful
IWPC '98 Proceedings of the 6th International Workshop on Program Comprehension
LR parsing for boolean grammars
DLT'05 Proceedings of the 9th international conference on Developments in Language Theory
Hi-index | 0.00 |
At some point in your career, you're going to implement a computer language. You probably won't be implementing Java or C++. You may not even recognize it as a language. Truth be told, there are an awful lot of domain-specific languages, or "little languages" [7] in common use: 驴 configuration files, 驴 HTML/XML documents, 驴 shell scripts, 驴 network protocols, 驴 mail headers, 驴 command-line arguments. The list goes on. A number of programs allow you to write scripts to control their operation; infact, just the other day I downloaded a neural network simulator which provided a little programming language to steer the simulation.How will you implement your language? There's the ad hoc approach, of course, but it's not well suited to languages whose design is complex or frequently changing. You also end up writing code to perform tasks which can be effectively automated.You might also consider using existing languages like Tcl [18] and Python [6]. These languages are designed to either be embedded in an existing application, or easily extended. This is a good solution when it can be used, saving a lot of time and effort. However, there may be concerns about tying your language to one which is itself changing, or the syntax and semantics of your language may not match those of such a "host" language.A third approach is to use compiler tools to implement your language. Most were designed for the implementation of large programming languages, but the same principles and techniques apply equally well to little languages. This article is the story of one such tool -- a parser generator tool -- and more importantly, what sort of tool is going to replace it, and why.