Elegant, efficient LL (k) parser generation

William Leiserson

Note: imported from RIT’s Digital Media Library running on DSpace to RIT Scholar Works in December 2013.

Abstract

Dividing syntax and programmer-defined actions in LL parsers is a powerful means of increasing their viability in real world applications. An LL parser generator should be able to take advantage of every optimization available to it, without its programmers needing to worry, so strongly, about the decipherability of its output. Oops, a Java compiler compiler, provides this feature, though it is not entirely functional as an LL(k) parser generator. Extending it, and discovering some of the optimization possibilities will allow it to successfully compete with the other Java LL tools available, and possibly to compare to LR parsers. This means that efficiency can be added to the preexistent flexibility inherent to LL parsing, and LL truly becomes a viable alternative in many situations where efficiency is a requirement. It is our intention to extend oops in such a way as to exploit its advantages, especially in the area of decision-making.