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    }