001 package sexp; 002 003 /** 004 * SExp represents an s-expression. 005 */ 006 public interface SExp { 007 /** 008 * Apply a visitor to this s-expression. 009 * @requires visitor != null 010 * @returns result of applying the function represented by the visitor to this expression 011 */ 012 public <T> T accept(SExpVisitor<T> visitor); 013 }