Visitor combination and traversal control
OOPSLA '01 Proceedings of the 16th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Extensible algebraic datatypes with defaults
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
AOSD '02 Proceedings of the 1st international conference on Aspect-oriented software development
Vector pascal reference manual
ACM SIGPLAN Notices
JastAdd: an aspect-oriented compiler construction system
Science of Computer Programming - Special issue: Language descriptions, tools and applications (LDTA'01)
Lana: An Approach to Programming Autonomous Systems
ECOOP '02 Proceedings of the 16th European Conference on Object-Oriented Programming
Securing web application code by static analysis and runtime protection
Proceedings of the 13th international conference on World Wide Web
OOPSLA '04 Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Software—Practice & Experience
MultiJava: Design rationale, compiler implementation, and applications
ACM Transactions on Programming Languages and Systems (TOPLAS)
Tatoo: an innovative parser generator
PPPJ '06 Proceedings of the 4th international symposium on Principles and practice of programming in Java
Precise static type analysis for object oriented programs
ACM SIGPLAN Notices
SYNTONY: network protocol simulation based on standard-conform UML 2 models
Proceedings of the 2nd international conference on Performance evaluation methodologies and tools
ANTLRWorks: an ANTLR grammar development environment
Software—Practice & Experience
DaStGen--A Data Structure Generator for Parallel C++ HPC Software
ICCS '08 Proceedings of the 8th international conference on Computational Science, Part III
Analyzing the performance of code-copying virtual machines
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
Automatic Symmetry Detection for Promela
Journal of Automated Reasoning
A precompiler to reduce the memory footprint of multiscale PDE solvers in C++
Future Generation Computer Systems
A Type-theoretic Reconstruction of the Visitor Pattern
Electronic Notes in Theoretical Computer Science (ENTCS)
Exploring the concurrency of an MPEG RVC decoder based on dataflow program analysis
IEEE Transactions on Circuits and Systems for Video Technology
Typed and unambiguous pattern matching on strings using regular expressions
Proceedings of the 12th international ACM SIGPLAN symposium on Principles and practice of declarative programming
Developing Camille, a text editor for Rodin
Software—Practice & Experience
Visitor-based Attribute Grammars with Side Effect
Electronic Notes in Theoretical Computer Science (ENTCS)
Building extensible specifications and implementations of Promela with AbleP
Proceedings of the 18th international SPIN conference on Model checking software
Automatic symmetry detection for model checking using computational group theory
FM'05 Proceedings of the 2005 international conference on Formal Methods
Efficient tiled loop generation: D-tiling
LCPC'09 Proceedings of the 22nd international conference on Languages and Compilers for Parallel Computing
ETCH: an enhanced type checking tool for promela
SPIN'05 Proceedings of the 12th international conference on Model Checking Software
Techniques for lightweight generator refactoring
GTTSE'05 Proceedings of the 2005 international conference on Generative and Transformational Techniques in Software Engineering
Symmetry reduction for probabilistic model checking using generic representatives
ATVA'06 Proceedings of the 4th international conference on Automated Technology for Verification and Analysis
Integrated definition of abstract and concrete syntax for textual languages
MODELS'07 Proceedings of the 10th international conference on Model Driven Engineering Languages and Systems
Statechart development beyond WYSIWYG
MODELS'07 Proceedings of the 10th international conference on Model Driven Engineering Languages and Systems
A nanopass framework for commercial compiler development
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
Hi-index | 0.00 |
In this paper, we introduce SableCC, an object-oriented framework that generates compilers (and interpreters) in the Java programming language. This framework is based on two fundamental design decisions. Firstly, the framework uses object-oriented techniques to automatically build a strictly-typed abstract syntax tree that matches the grammar of the compiled language which simplifies debugging. Secondly, the framework generates tree-walker classes using an extended version of the visitor design pattern which enables the implementation of actions on the nodes of the abstract syntax tree using inheritance. These two design decisions lead to a tool that supports a shorter development cycle for constructing compilers.To demonstrate the simplicity of the framework, we present all the steps of building an interpreter for a mini-BASIC language. This example could be easily modified to provide an embedded scripting language in an application. We also provide a brief description of larger systems that have been implemented using the SableCC tool.We conclude that the use of object-oriented techniques significantly reduces the length of the programmer written code, can shorten the development time and finally, makes the code easier to read and maintain.