Three Tools for Language Processing: BNF Converter, Functional Morphology, and Extract
Markus Forsberg · 2007
Purely functional programming and meta programming based on declarative models are productive approaches to language processing and language resource building. Three tools are presented as evidence of this: BNF Converter, Functional Morphology, and Extract. BNF Converter is a multi-lingual compiler tool. BNFC accepts as its input a grammar written in Labelled BNF (LBNF) notation, and generates a compiler front end: an abstract syntax, a lexer, and a parser. Furthermore, it generates a case skeleton usable as the starting point of back end construction, a pretty printer, a test bench, and a LATEX document usable as a language specification. The program components can be generated in Haskell, Java, C, C++, Objective Caml, and C#, and their standard parser and lexer tools. Functional Morphology and Extract are tools for creating lexical resources. Lexical resources, i.e. systematic computational descriptions of