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 .
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
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.