Automatic verification of finite-state concurrent systems using temporal logic specifications
ACM Transactions on Programming Languages and Systems (TOPLAS)
Introduction to the ISO specification language LOTOS
Computer Networks and ISDN Systems - Special Issue: Protocol Specification and Testing
Communication and concurrency
Communications of the ACM
TXL: a rapid prototyping system for programming language dialects
Computer Languages
The design and implementation of hierarchical software systems with reusable components
ACM Transactions on Software Engineering and Methodology (TOSEM)
GENOA: a customizable language- and front-end independent code analyzer
ICSE '92 Proceedings of the 14th international conference on Software engineering
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
Lightweight source model extraction
SIGSOFT '95 Proceedings of the 3rd ACM SIGSOFT symposium on Foundations of software engineering
Evolution of Object Behavior Using Context Relations
IEEE Transactions on Software Engineering
Lightweight analysis of operational specifications using inference graphs
ICSE '01 Proceedings of the 23rd International Conference on Software Engineering
A component-based approach to building formal analysis tools
ICSE '01 Proceedings of the 23rd International Conference on Software Engineering
Object-Oriented Software Evolution
IEEE Transactions on Software Engineering
Traversals of object structures: Specification and Efficient Implementation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Self-configuring object-to-relational mapping queries
Proceedings of the 6th international symposium on Principles and practice of programming in Java
Hi-index | 0.00 |
The visitor pattern is appealing to developers of program-analysis tools because it separates the design of the data structures that represent a program from the design of software that traverses these structures. Unfortunately, the visitor pattern is difficult to apply when the analysis involves transformation logic that involves multiple program fragments simultaneously. We encountered this problem in our work on the {\proj} project and discovered a novel way to use multiple cooperating visitor objects to systematically implement such functions when they are specified via a set of transformation rules. This paper introduces our {\em curried-visitor framework} and illustrates how we applied it to implement a key component in the {\proj} framework. We are working on a code generator that will automatically synthesize curried-visitor frameworks from a description of a program's abstract syntax and a set of pattern-matching transformation rules.