At last, a guide that makes creating a language with its associated baggage of lexers, parsers and compilers, accessible to mere mortals, rather to a group of a few hardcore eclectics as it stood until now.
The first thing that catches the eye, is the subtitle:
The unix philosophy applied to language design, for GPLs and DSLs"
I'm getting ahead here, but a first sample of this philosophy becomes apparent at the beginnings of Chapter 5 where the Parser treats and calls the Lexer like unix's pipes as in lexer|parser. Until the end of the book, this pipeline is going to become larger, like a chain, due to the amount of components that end up interacting together.
The book opens by putting things into perspective in Chapter 1: Motivation: why do you want to build language tools?
There are two different scenarios in which you may want to do that:
1. you want to create a new language:
maybe a general purpose language (GPL), maybe a domain specific
language (DSL). In any case you may want to build some support for this
language of yours. Maybe you want to generate C and compile the
generated code, maybe you want to interpret it. Maybe you want
to build a compiler or a simulator for your language. Or you want to do
all of this stuff and more.
2. you want to create an additional
tool for an existing language. Do you want to perform static analysis on
your Java code? Or build a translator from Python to JavaScript? Maybe a
web editor for some less known language?
full review on i-programmer.info
Comments