TL;DR: PARSEC1, a text-based and spoken language processing framework based on the Constraint Dependency Grammar, and the development of CDG grammars using PARSEC grammar writing tools and the implementation of the PARSEC parser for word graphs is discussed.
Abstract: PARSEC1, a text-based and spoken language processing framework based on the Constraint Dependency Grammar (CDG) developed by Maruyama [26,27], is discussed. The scope of CDG is expanded to allow for the analysis of sentences containing lexically ambiguous words, to allow feature analysis in constraints, and to efficiently process multiple sentence candidates that are likely to arise in spoken language processing. The benefits of the CDG parsing approach are summarized. Additionally, the development CDG grammars using PARSEC grammar writing tools and the implementation of the PARSEC parser for word graphs is discussed. 'Parallel ARchitecture Sentence Constrainer
TL;DR: The semantics and design of a new library, called Parsley, is described, which retains a close resemblance to Parsec style whilst providing very competitive performance.
Abstract: Parser combinators are a clean and powerful abstraction which can provide reasonably efficient means of parsing a grammar into a form which the programmer desires They remain close to the domain of grammars whilst at the same time offering enormous flexibility In Haskell, the Parsec library is a prime example of such a library However, a direct translation to Scala proves to be unbearably slow This paper describes the semantics and design of a new library, called Parsley, which retains a close resemblance to Parsec style whilst providing very competitive performance
TL;DR: An attempt is made to develop a library for implementing many properties of functional programming languages, including currying, metafunctions, and some others, that are not explicitly included in C++.
Abstract: Modern functional programming languages, such as Haskell, Scala, ML, and F#, have properties that make it possible to implement logically complicated algorithms relatively easily. Among such properties is the composition of functions, currying, metafunctions (functions over functions), and some others. This makes it possible to obtain complex functions by combining simpler functions. An example of a complicated algorithm is a parser. In Haskell, there is a library called Parsec, which is a set of elementary parsers; by combining these parsers, one can create more complicated parsers. This fact makes the library relatively simple, yet powerful. The majority of these tools are not explicitly included in C++. However, C++ is sufficiently powerful for implementing many properties of functional programming languages. In this paper, an attempt is made to develop such a library.
TL;DR: Two of the contemporary implementations of parser combinators, ANTLR and Parsec, are introduced, along with a novel implementation, called Tinadic Parsing, based on the combination of the techniques used in parser generators andparser combinators.
Abstract: Today most recursive descent parsers are generated by providing grammars and generating parsers according to these grammars. An alternative approach to constructing parsers consists of parser combinators, which do not need a separate step to generate the parser, and furthermore claim to be clear and simple in use. Despite these claimed advantages, parser combinators have not been widely adopted and are rarely actually compared to parser generators. This paper introduces two of the contemporary implementations, ANTLR and Parsec, along with a novel implementation, called Tinadic Parsing, based on the combination of the techniques used in parser generators and parser combinators. The three implementations are compared and evaluated by the implementation of increasingly extended examples.