EXTENSIBLE PARSING & TRANSFORMATION We present the metafront tool for specifying flexible, safe, and efficient syntactic transformations between languages defined by context-free grammars. The transformations are guaranteed to terminate and to map grammatically legal input to grammatically legal output. We rely on a novel parser algorithm, specificity parsing, that is designed to support gradual extensions of a grammar by allowing productions to remain in a natural style and by statically reporting ambiguities and errors in terms of individual productions as they are being added. Our tool may be used as a parser generator in which the resulting parser automatically supports a flexible, safe, and efficient macro processor, or as an extensible lightweight compiler generator for domain-specific languages. We show substantial examples of both kinds.
FParsec is an F# adaptation of Parsec. It can parse context-sensitive, infinite look-ahead grammars. The basic idea behind combinator parsing is to compose parsers for higher-level grammar expressions from simple atomic parsers. A parser combinator library provides those predefined atomic parsers and the means to combine them into larger units. In the case of FParsec all parsers are F# functions, functions that can be combined with higher-level functions, so-called "combinators". The parser combinator approach as implemented by FParsec has a number of advantages * Power. Since parsers are first-class values within the language, users can draw on the full power of F# to implement their parsers. * Extensibility. FParsec has a modular design that is very amenable to extensions. No matter how complicated your grammar is, you will always be able to parse it * Quality of error messages. Parsers implemented with FParsec generate intelligible error messages
jose emilio labra gayo This page collects my personal links in the field of Programming Languages. At first, it was devoted to functional programming. Now, I am very interested in the expressiveness of programming languages in general. With the term advanced I mean that it is oriented to researchers on programming languages .