Generation of Indexes for Compiling Efficient Parsers from Formal Specifications
ABSTRACT Parsing schemata provide a formal, simple and uniform way to describe, analyze and compare different parsing algorithms. The
notion of a parsing schema comes from considering parsing as a deduction process which generates intermediate results called
items. An initial set of items is directly obtained from the input sentence, and the parsing process consists of the application
of inference rules (called deductive steps) which produce new items from existing ones. Each item contains a piece of information about the sentence’s structure, and
a successful parsing process will produce at least one final item containing a full parse tree for the sentence or guaranteeing its existence. Their abstraction of low-level details makes
parsing schemata useful to define parsers in a simple and straightforward way. Comparing parsers, or considering aspects such
as their correction and completeness or their computational complexity, also becomes easier if we think in terms of schemata.
However, when we want to actually use a parser by running it on a computer, we need to implement it in a programming language,
so we have to abandon the high level of abstraction and worry about implementation details that were irrelevant at the schema
level. In particular, we study in this article how the source parsing schema should be analysed to decide what kind of indexes
need to be generated in order to obtain an efficient parser.