Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
OO design in compiling an OO language
SIGCSE '99 The proceedings of the thirtieth SIGCSE technical symposium on Computer science education
Modern Compiler Design
Modern Compiler Implementation in Java
Modern Compiler Implementation in Java
Chirp on crickets: teaching compilers using an embedded robot controller
Proceedings of the 37th SIGCSE technical symposium on Computer science education
Hi-index | 0.00 |
We provide a systematic transformation of an LL(1) grammar to an object model that consists of an object structure representing the non-terminal symbols and their corresponding grammar production rules, a union of classes representing the terminal symbols (tokens).We present a variant form of the visitor pattern and apply it to the above union of token classes to model a predictive recursive descent parser on the given grammar. Parsing a non-terminal is represented by a visitor to the tokens. For non-terminals that have more than one production rule, the corresponding visitors are chained together according to the chain of responsibility pattern in order to be processed correctly by a valid token. The abstract factory pattern, where each concrete factory corresponds to a non-terminal symbol, is used to manufacture appropriate parsing visitors.Our object-oriented formulation for predictive recursive descent parsing eliminates the traditional construction of the predictive parsing table and yields a parser that is declarative and has minimal conditionals. It not only serves to teach standard techniques in parsing but also as a non-trivial exercise of object modeling for objects-first introductory courses.