001package org.clafer.ast; 002 003/** 004 * An expression in the AST language. Expressions are immutable. 005 * 006 * @author jimmy 007 */ 008public interface AstExpr { 009 010 /** 011 * Dynamic dispatch on the visitor. 012 * 013 * @param <A> the parameter type 014 * @param <B> the return type 015 * @param visitor the visitor 016 * @param a the parameter 017 * @return the return value 018 */ 019 public <A, B> B accept(AstExprVisitor<A, B> visitor, A a); 020}