Reversible Object-Oriented Interpreters

  • Authors:
  • Henry Lieberman

  • Affiliations:
  • -

  • Venue:
  • ECOOP '87 Proceedings of the European Conference on Object-Oriented Programming
  • Year:
  • 1987

Quantified Score

Hi-index 0.00

Visualization

Abstract

The "programs are data" philosophy of Lisp uses Lisp's S-expressions to represent programs, and permits a program written in Lisp itself to implement the interpreter for the language. Object-oriented languages can take this one step further: we can use objects to represent programs, and an object-oriented interpreter takes the form of responses to a protocol of messages for evaluating programs. Because objects are a richer data structure than simple S-expressions, the representation of programs can have more built-in intelligence than was feasible using simple list manipulation alone.This paper surveys techniques and applications for object-oriented interpreters. We focus particularly on object-oriented interpreters that are reversible, those that, unlike conventional interpreters, remember their history of evaluation. We illustrate the techniques involved with two applications of reversible object-oriented interpreters: a reversibIe stepper for Lisp, and a programming environment which constructs Lisp programs from examples.