Evaluating Software Design Patterns
— the "Gang of Four" patterns implemented in Java 6

Uses of Interface
dk.rode.thesis.interpreter.Expression

Packages that use Expression
dk.rode.thesis.builder Implementations and examples of the Builder design pattern [Gamma95, p.97]. 
dk.rode.thesis.interpreter Implementations and examples of the Interpreter design pattern [Gamma95, p.243]. 
 

Uses of Expression in dk.rode.thesis.builder
 

Classes in dk.rode.thesis.builder that implement Expression
 class TypedFlowExpression<E>
          A typed flow expression represents one or more expressions to be evaluated in order, one at a time, where the type of value the evaluation of the expressions produces associated with it at runtime.
 

Methods in dk.rode.thesis.builder with type parameters of type Expression
protected
<V,W extends Expression<V>>
W
CountingExpressionBuilder.count(W expression)
          Updates the number of times this builder has seen an expression with the same name as expression.
 

Methods in dk.rode.thesis.builder that return Expression
 Expression<Boolean> StandardExpressionBuilder.buildAndExpression(Expression<Boolean> first, Expression<Boolean> second)
           
 Expression<Boolean> ExpressionBuilder.buildAndExpression(Expression<Boolean> first, Expression<Boolean> second)
          Builds a new short-circuit AND expression.
 Expression<Boolean> CountingExpressionBuilder.buildAndExpression(Expression<Boolean> first, Expression<Boolean> second)
           
 Expression<E> StandardExpressionBuilder.buildAssignmentExpression(VariableExpression<E> variable, Expression<? extends E> expression)
           
 Expression<E> ExpressionBuilder.buildAssignmentExpression(VariableExpression<E> variable, Expression<? extends E> expression)
          Builds a new ASSIGNMENT expression.
 Expression<E> CountingExpressionBuilder.buildAssignmentExpression(VariableExpression<E> variable, Expression<? extends E> expression)
           
 Expression<E> StandardExpressionBuilder.buildBreakExpression(TypedExpression<E> expression)
           
 Expression<E> ExpressionBuilder.buildBreakExpression(TypedExpression<E> expression)
          Builds a new BREAK expression.
 Expression<E> CountingExpressionBuilder.buildBreakExpression(TypedExpression<E> expression)
           
 Expression<E> StandardExpressionBuilder.buildConditionalExpression(Expression<Boolean> condition, Expression<? extends E> first, Expression<? extends E> second)
           
 Expression<E> ExpressionBuilder.buildConditionalExpression(Expression<Boolean> condition, Expression<? extends E> first, Expression<? extends E> second)
          Builds a new CONDITIONAL expression.
 Expression<E> CountingExpressionBuilder.buildConditionalExpression(Expression<Boolean> condition, Expression<? extends E> first, Expression<? extends E> second)
           
<V> Expression<V>
ExpressionBuilder.buildConstantExpression(Class<V> type, V value)
          Builds a new CONSTANT expression.
<V> Expression<V>
CountingExpressionBuilder.buildConstantExpression(Class<V> type, V value)
           
<V> Expression<V>
AbstractExpressionBuilder.buildConstantExpression(Class<V> type, V value)
           
 Expression<E> StandardExpressionBuilder.buildCurrentExpression()
           
 Expression<E> ExpressionBuilder.buildCurrentExpression()
          Builds a new CURRENT expression.
 Expression<E> CountingExpressionBuilder.buildCurrentExpression()
           
 Expression<Boolean> StandardExpressionBuilder.buildEqualExpression(Expression<?> first, Expression<?> second)
           
 Expression<Boolean> ExpressionBuilder.buildEqualExpression(Expression<?> first, Expression<?> second)
          Builds a new EQUAL expression.
 Expression<Boolean> CountingExpressionBuilder.buildEqualExpression(Expression<?> first, Expression<?> second)
           
 Expression<Boolean> StandardComparableExpressionBuilder.buildGreaterThanExpression(Expression<E> first, Expression<E> second)
           
 Expression<Boolean> CountingComparableExpressionBuilder.buildGreaterThanExpression(Expression<E> first, Expression<E> second)
           
 Expression<Boolean> ComparableExpressionBuilder.buildGreaterThanExpression(Expression<E> first, Expression<E> second)
          Builds a new GREATER THAN expression.
 Expression<E> StandardExpressionBuilder.buildInitialisedFlowExpression(Expression<? extends E>... expressions)
           
 Expression<E> ExpressionBuilder.buildInitialisedFlowExpression(Expression<? extends E>... expressions)
          Builds a new initialised FLOW expression.
 Expression<E> CountingExpressionBuilder.buildInitialisedFlowExpression(Expression<? extends E>... expressions)
           
 Expression<E> StandardExpressionBuilder.buildNextExpression(Expression<? extends Number> count)
           
 Expression<E> ExpressionBuilder.buildNextExpression(Expression<? extends Number> count)
          Builds a new NEXT expression.
 Expression<E> CountingExpressionBuilder.buildNextExpression(Expression<? extends Number> count)
           
 Expression<Boolean> StandardExpressionBuilder.buildNonShortCircuitAndExpression(Expression<Boolean> first, Expression<Boolean> second)
           
 Expression<Boolean> ExpressionBuilder.buildNonShortCircuitAndExpression(Expression<Boolean> first, Expression<Boolean> second)
          Builds a new non short-circuit AND expression.
 Expression<Boolean> CountingExpressionBuilder.buildNonShortCircuitAndExpression(Expression<Boolean> first, Expression<Boolean> second)
           
 Expression<Boolean> StandardExpressionBuilder.buildNonShortCircuitOrExpression(Expression<Boolean> first, Expression<Boolean> second)
           
 Expression<Boolean> ExpressionBuilder.buildNonShortCircuitOrExpression(Expression<Boolean> first, Expression<Boolean> second)
          Builds a new non short-circuit OR expression.
 Expression<Boolean> CountingExpressionBuilder.buildNonShortCircuitOrExpression(Expression<Boolean> first, Expression<Boolean> second)
           
 Expression<Boolean> StandardExpressionBuilder.buildNotExpression(Expression<Boolean> expression)
           
 Expression<Boolean> ExpressionBuilder.buildNotExpression(Expression<Boolean> expression)
          Builds a new NOT expression.
 Expression<Boolean> CountingExpressionBuilder.buildNotExpression(Expression<Boolean> expression)
           
 Expression<Boolean> StandardExpressionBuilder.buildOrExpression(Expression<Boolean> first, Expression<Boolean> second)
           
 Expression<Boolean> ExpressionBuilder.buildOrExpression(Expression<Boolean> first, Expression<Boolean> second)
          Builds a new short-circuit OR expression.
 Expression<Boolean> CountingExpressionBuilder.buildOrExpression(Expression<Boolean> first, Expression<Boolean> second)
           
 Expression<E> StandardExpressionBuilder.buildResetExpression()
           
 Expression<E> ExpressionBuilder.buildResetExpression()
          Builds a new RESET expression.
 Expression<E> CountingExpressionBuilder.buildResetExpression()
           
 Expression<Boolean> StandardExpressionBuilder.buildReverseExpression(Expression<Boolean> reverse)
           
 Expression<Boolean> ExpressionBuilder.buildReverseExpression(Expression<Boolean> reverse)
          Builds a new REVERSE expression.
 Expression<Boolean> CountingExpressionBuilder.buildReverseExpression(Expression<Boolean> reverse)
           
 Expression<E> StandardComparableExpressionBuilder.buildSetExpression(Expression<E> value)
           
 Expression<E> CountingComparableExpressionBuilder.buildSetExpression(Expression<E> value)
           
 Expression<E> ComparableExpressionBuilder.buildSetExpression(Expression<E> value)
          Builds a new SET expression.
 Expression<Boolean> StandardComparableExpressionBuilder.buildSmallerThanExpression(Expression<E> first, Expression<E> second)
           
 Expression<Boolean> CountingComparableExpressionBuilder.buildSmallerThanExpression(Expression<E> first, Expression<E> second)
           
 Expression<Boolean> ComparableExpressionBuilder.buildSmallerThanExpression(Expression<E> first, Expression<E> second)
          Builds a new SMALLER THAN expression.
private
<E extends Comparable<? super E>>
Expression<E>
Main.create(ComparableExpressionBuilder<E> builder, Class<E> type, E value)
          Builds: next[20], y = current, (reverse[true] ?
 Expression<E> ExpressionBuilder.getRootExpression()
          Returns the root expression constructed by this builder.
 Expression<E> AbstractExpressionBuilder.getRootExpression()
           
protected static
<V> Expression<V>
AbstractExpressionBuilder.initialiseExpressions(Expression<V> expression)
          Initialises all initialisable expressions reachable from the expression supplied as expression that has not already been initialised.
 

Methods in dk.rode.thesis.builder that return types with arguments of type Expression
 List<Expression<?>> TypedFlowExpression.operands()
           
 

Methods in dk.rode.thesis.builder with parameters of type Expression
 TypedFlowExpression<E> TypedFlowExpression.add(Expression<? extends E> expression)
           
 TypedExpression<Boolean> TypedExpressionBuilder.buildAndExpression(Expression<Boolean> first, Expression<Boolean> second)
           
 TypedExpression<Boolean> TypedExpressionBuilder.buildAndExpression(Expression<Boolean> first, Expression<Boolean> second)
           
 Expression<Boolean> StandardExpressionBuilder.buildAndExpression(Expression<Boolean> first, Expression<Boolean> second)
           
 Expression<Boolean> StandardExpressionBuilder.buildAndExpression(Expression<Boolean> first, Expression<Boolean> second)
           
 Expression<Boolean> ExpressionBuilder.buildAndExpression(Expression<Boolean> first, Expression<Boolean> second)
          Builds a new short-circuit AND expression.
 Expression<Boolean> ExpressionBuilder.buildAndExpression(Expression<Boolean> first, Expression<Boolean> second)
          Builds a new short-circuit AND expression.
 Expression<Boolean> CountingExpressionBuilder.buildAndExpression(Expression<Boolean> first, Expression<Boolean> second)
           
 Expression<Boolean> CountingExpressionBuilder.buildAndExpression(Expression<Boolean> first, Expression<Boolean> second)
           
 TypedExpression<E> TypedExpressionBuilder.buildAssignmentExpression(VariableExpression<E> variable, Expression<? extends E> expression)
           
 Expression<E> StandardExpressionBuilder.buildAssignmentExpression(VariableExpression<E> variable, Expression<? extends E> expression)
           
 Expression<E> ExpressionBuilder.buildAssignmentExpression(VariableExpression<E> variable, Expression<? extends E> expression)
          Builds a new ASSIGNMENT expression.
 Expression<E> CountingExpressionBuilder.buildAssignmentExpression(VariableExpression<E> variable, Expression<? extends E> expression)
           
 TypedExpression<E> TypedExpressionBuilder.buildConditionalExpression(Expression<Boolean> condition, Expression<? extends E> first, Expression<? extends E> second)
           
 TypedExpression<E> TypedExpressionBuilder.buildConditionalExpression(Expression<Boolean> condition, Expression<? extends E> first, Expression<? extends E> second)
           
 TypedExpression<E> TypedExpressionBuilder.buildConditionalExpression(Expression<Boolean> condition, Expression<? extends E> first, Expression<? extends E> second)
           
 Expression<E> StandardExpressionBuilder.buildConditionalExpression(Expression<Boolean> condition, Expression<? extends E> first, Expression<? extends E> second)
           
 Expression<E> StandardExpressionBuilder.buildConditionalExpression(Expression<Boolean> condition, Expression<? extends E> first, Expression<? extends E> second)
           
 Expression<E> StandardExpressionBuilder.buildConditionalExpression(Expression<Boolean> condition, Expression<? extends E> first, Expression<? extends E> second)
           
 Expression<E> ExpressionBuilder.buildConditionalExpression(Expression<Boolean> condition, Expression<? extends E> first, Expression<? extends E> second)
          Builds a new CONDITIONAL expression.
 Expression<E> ExpressionBuilder.buildConditionalExpression(Expression<Boolean> condition, Expression<? extends E> first, Expression<? extends E> second)
          Builds a new CONDITIONAL expression.
 Expression<E> ExpressionBuilder.buildConditionalExpression(Expression<Boolean> condition, Expression<? extends E> first, Expression<? extends E> second)
          Builds a new CONDITIONAL expression.
 Expression<E> CountingExpressionBuilder.buildConditionalExpression(Expression<Boolean> condition, Expression<? extends E> first, Expression<? extends E> second)
           
 Expression<E> CountingExpressionBuilder.buildConditionalExpression(Expression<Boolean> condition, Expression<? extends E> first, Expression<? extends E> second)
           
 Expression<E> CountingExpressionBuilder.buildConditionalExpression(Expression<Boolean> condition, Expression<? extends E> first, Expression<? extends E> second)
           
 TypedExpression<Boolean> TypedExpressionBuilder.buildEqualExpression(Expression<?> first, Expression<?> second)
           
 TypedExpression<Boolean> TypedExpressionBuilder.buildEqualExpression(Expression<?> first, Expression<?> second)
           
 Expression<Boolean> StandardExpressionBuilder.buildEqualExpression(Expression<?> first, Expression<?> second)
           
 Expression<Boolean> StandardExpressionBuilder.buildEqualExpression(Expression<?> first, Expression<?> second)
           
 Expression<Boolean> ExpressionBuilder.buildEqualExpression(Expression<?> first, Expression<?> second)
          Builds a new EQUAL expression.
 Expression<Boolean> ExpressionBuilder.buildEqualExpression(Expression<?> first, Expression<?> second)
          Builds a new EQUAL expression.
 Expression<Boolean> CountingExpressionBuilder.buildEqualExpression(Expression<?> first, Expression<?> second)
           
 Expression<Boolean> CountingExpressionBuilder.buildEqualExpression(Expression<?> first, Expression<?> second)
           
 void ExpressionBuilder.buildExpression(Expression<? extends E> expression)
          Adds the constructed expression supplied as expression to the root expression constructed by this builder.
 void AbstractExpressionBuilder.buildExpression(Expression<? extends E> expression)
           
 TypedExpression<Boolean> TypedComparableExpressionBuilder.buildGreaterThanExpression(Expression<E> first, Expression<E> second)
           
 TypedExpression<Boolean> TypedComparableExpressionBuilder.buildGreaterThanExpression(Expression<E> first, Expression<E> second)
           
 Expression<Boolean> StandardComparableExpressionBuilder.buildGreaterThanExpression(Expression<E> first, Expression<E> second)
           
 Expression<Boolean> StandardComparableExpressionBuilder.buildGreaterThanExpression(Expression<E> first, Expression<E> second)
           
 Expression<Boolean> CountingComparableExpressionBuilder.buildGreaterThanExpression(Expression<E> first, Expression<E> second)
           
 Expression<Boolean> CountingComparableExpressionBuilder.buildGreaterThanExpression(Expression<E> first, Expression<E> second)
           
 Expression<Boolean> ComparableExpressionBuilder.buildGreaterThanExpression(Expression<E> first, Expression<E> second)
          Builds a new GREATER THAN expression.
 Expression<Boolean> ComparableExpressionBuilder.buildGreaterThanExpression(Expression<E> first, Expression<E> second)
          Builds a new GREATER THAN expression.
 TypedExpression<E> TypedExpressionBuilder.buildInitialisedFlowExpression(Expression<? extends E>... expressions)
           
 Expression<E> StandardExpressionBuilder.buildInitialisedFlowExpression(Expression<? extends E>... expressions)
           
 Expression<E> ExpressionBuilder.buildInitialisedFlowExpression(Expression<? extends E>... expressions)
          Builds a new initialised FLOW expression.
 Expression<E> CountingExpressionBuilder.buildInitialisedFlowExpression(Expression<? extends E>... expressions)
           
 TypedExpression<E> TypedExpressionBuilder.buildNextExpression(Expression<? extends Number> count)
           
 Expression<E> StandardExpressionBuilder.buildNextExpression(Expression<? extends Number> count)
           
 Expression<E> ExpressionBuilder.buildNextExpression(Expression<? extends Number> count)
          Builds a new NEXT expression.
 Expression<E> CountingExpressionBuilder.buildNextExpression(Expression<? extends Number> count)
           
 TypedExpression<Boolean> TypedExpressionBuilder.buildNonShortCircuitAndExpression(Expression<Boolean> first, Expression<Boolean> second)
           
 TypedExpression<Boolean> TypedExpressionBuilder.buildNonShortCircuitAndExpression(Expression<Boolean> first, Expression<Boolean> second)
           
 Expression<Boolean> StandardExpressionBuilder.buildNonShortCircuitAndExpression(Expression<Boolean> first, Expression<Boolean> second)
           
 Expression<Boolean> StandardExpressionBuilder.buildNonShortCircuitAndExpression(Expression<Boolean> first, Expression<Boolean> second)
           
 Expression<Boolean> ExpressionBuilder.buildNonShortCircuitAndExpression(Expression<Boolean> first, Expression<Boolean> second)
          Builds a new non short-circuit AND expression.
 Expression<Boolean> ExpressionBuilder.buildNonShortCircuitAndExpression(Expression<Boolean> first, Expression<Boolean> second)
          Builds a new non short-circuit AND expression.
 Expression<Boolean> CountingExpressionBuilder.buildNonShortCircuitAndExpression(Expression<Boolean> first, Expression<Boolean> second)
           
 Expression<Boolean> CountingExpressionBuilder.buildNonShortCircuitAndExpression(Expression<Boolean> first, Expression<Boolean> second)
           
 TypedExpression<Boolean> TypedExpressionBuilder.buildNonShortCircuitOrExpression(Expression<Boolean> first, Expression<Boolean> second)
           
 TypedExpression<Boolean> TypedExpressionBuilder.buildNonShortCircuitOrExpression(Expression<Boolean> first, Expression<Boolean> second)
           
 Expression<Boolean> StandardExpressionBuilder.buildNonShortCircuitOrExpression(Expression<Boolean> first, Expression<Boolean> second)
           
 Expression<Boolean> StandardExpressionBuilder.buildNonShortCircuitOrExpression(Expression<Boolean> first, Expression<Boolean> second)
           
 Expression<Boolean> ExpressionBuilder.buildNonShortCircuitOrExpression(Expression<Boolean> first, Expression<Boolean> second)
          Builds a new non short-circuit OR expression.
 Expression<Boolean> ExpressionBuilder.buildNonShortCircuitOrExpression(Expression<Boolean> first, Expression<Boolean> second)
          Builds a new non short-circuit OR expression.
 Expression<Boolean> CountingExpressionBuilder.buildNonShortCircuitOrExpression(Expression<Boolean> first, Expression<Boolean> second)
           
 Expression<Boolean> CountingExpressionBuilder.buildNonShortCircuitOrExpression(Expression<Boolean> first, Expression<Boolean> second)
           
 TypedExpression<Boolean> TypedExpressionBuilder.buildNotExpression(Expression<Boolean> expression)
           
 Expression<Boolean> StandardExpressionBuilder.buildNotExpression(Expression<Boolean> expression)
           
 Expression<Boolean> ExpressionBuilder.buildNotExpression(Expression<Boolean> expression)
          Builds a new NOT expression.
 Expression<Boolean> CountingExpressionBuilder.buildNotExpression(Expression<Boolean> expression)
           
 TypedExpression<Boolean> TypedExpressionBuilder.buildOrExpression(Expression<Boolean> first, Expression<Boolean> second)
           
 TypedExpression<Boolean> TypedExpressionBuilder.buildOrExpression(Expression<Boolean> first, Expression<Boolean> second)
           
 Expression<Boolean> StandardExpressionBuilder.buildOrExpression(Expression<Boolean> first, Expression<Boolean> second)
           
 Expression<Boolean> StandardExpressionBuilder.buildOrExpression(Expression<Boolean> first, Expression<Boolean> second)
           
 Expression<Boolean> ExpressionBuilder.buildOrExpression(Expression<Boolean> first, Expression<Boolean> second)
          Builds a new short-circuit OR expression.
 Expression<Boolean> ExpressionBuilder.buildOrExpression(Expression<Boolean> first, Expression<Boolean> second)
          Builds a new short-circuit OR expression.
 Expression<Boolean> CountingExpressionBuilder.buildOrExpression(Expression<Boolean> first, Expression<Boolean> second)
           
 Expression<Boolean> CountingExpressionBuilder.buildOrExpression(Expression<Boolean> first, Expression<Boolean> second)
           
 TypedExpression<Boolean> TypedExpressionBuilder.buildReverseExpression(Expression<Boolean> reverse)
           
 Expression<Boolean> StandardExpressionBuilder.buildReverseExpression(Expression<Boolean> reverse)
           
 Expression<Boolean> ExpressionBuilder.buildReverseExpression(Expression<Boolean> reverse)
          Builds a new REVERSE expression.
 Expression<Boolean> CountingExpressionBuilder.buildReverseExpression(Expression<Boolean> reverse)
           
 TypedExpression<E> TypedComparableExpressionBuilder.buildSetExpression(Expression<E> value)
           
 Expression<E> StandardComparableExpressionBuilder.buildSetExpression(Expression<E> value)
           
 Expression<E> CountingComparableExpressionBuilder.buildSetExpression(Expression<E> value)
           
 Expression<E> ComparableExpressionBuilder.buildSetExpression(Expression<E> value)
          Builds a new SET expression.
 TypedExpression<Boolean> TypedComparableExpressionBuilder.buildSmallerThanExpression(Expression<E> first, Expression<E> second)
           
 TypedExpression<Boolean> TypedComparableExpressionBuilder.buildSmallerThanExpression(Expression<E> first, Expression<E> second)
           
 Expression<Boolean> StandardComparableExpressionBuilder.buildSmallerThanExpression(Expression<E> first, Expression<E> second)
           
 Expression<Boolean> StandardComparableExpressionBuilder.buildSmallerThanExpression(Expression<E> first, Expression<E> second)
           
 Expression<Boolean> CountingComparableExpressionBuilder.buildSmallerThanExpression(Expression<E> first, Expression<E> second)
           
 Expression<Boolean> CountingComparableExpressionBuilder.buildSmallerThanExpression(Expression<E> first, Expression<E> second)
           
 Expression<Boolean> ComparableExpressionBuilder.buildSmallerThanExpression(Expression<E> first, Expression<E> second)
          Builds a new SMALLER THAN expression.
 Expression<Boolean> ComparableExpressionBuilder.buildSmallerThanExpression(Expression<E> first, Expression<E> second)
          Builds a new SMALLER THAN expression.
protected static
<T> TypedExpression<T>
TypedExpressionBuilder.getTypedExpression(Expression<T> expression, Class<T> type)
          Returns a typed expression of the typed supplied as type based on expression.
protected static
<V> Expression<V>
AbstractExpressionBuilder.initialiseExpressions(Expression<V> expression)
          Initialises all initialisable expressions reachable from the expression supplied as expression that has not already been initialised.
 

Uses of Expression in dk.rode.thesis.interpreter
 

Subinterfaces of Expression in dk.rode.thesis.interpreter
 interface InitialisableExpression<E>
          An initialisable expression represents an expression that require several steps to be constructed, and hence must be initialised before actual use.
 interface NonTerminalExpression<E>
          A non terminal expression represents a grammar rule, but this interface is a marker interface only as it offers no specific functionality.
 interface TerminalExpression<E>
          A terminal expression represents an operation to be performed on a given sequence, but this interface is a marker interface only as it offers no specific functionality.
 interface TypedExpression<E>
          A typed expression exposes the type of the value its evaluation produces via its TypedExpression.type() method.
 

Classes in dk.rode.thesis.interpreter that implement Expression
 class AbstractExpression<E>
          An abstract expression represents the basic traits of any expression.
 class AndExpression
          A logical and expression for two expressions evaluating to a Boolean value.
 class AssignmentExpression<E>
          An assignment expression assigns the result of the evaluation of an expression to a variable.
 class BinaryExpression<T,E>
          A binary expression represents any expression that involves (at least) two sub-expressions as operands.
 class BreakExpression<E>
          A break expression allows the interpretation of a given expression syntax-tree to break at the point of the break expression, and possibly continue the interpretation starting from a specified target expression.
 class CompareExpression<E extends Comparable<? super E>>
          A compare expression can compare two expressions evaluating to the same Comparable type as smaller than, smaller than or equal, equal, not equal, greater than, or equal or greater than.
 class ConditionalExpression<E>
          A conditional expression represents an if-then-else expression.
 class ConstantExpression<E>
          A constant expression represents an expression that can be assigned a constant value.
 class CurrentExpression<E>
          A current expression will invoke current() on a given sequence when evaluated.
 class EqualExpression
          An equal expression can determine if the result of evaluating two expressions is equal or not, regardless of types.
 class FlowExpression<E>
          A flow expression represents one or more expressions to be evaluated in order, one at a time.
 class NextExpression<E>
          A next expression will invoke next() a number of times on a given sequence when evaluated.
 class NotExpression
          A not expression (!)
 class OrExpression
          A logical or expression for two expressions evaluating to a Boolean value.
 class ResetExpression<E>
          A reset expression will invoke reset() on a given sequence when evaluated.
 class ReverseExpression<E>
          A reverse expression will invoke reverse() on a given reversible sequence when evaluated, if so specified and only if possible.
 class SequenceExpression<T,E>
          A sequence expression represents a terminal expression used to manipulate a given sequence.
 class SetExpression<E extends Comparable<? super E>>
          A set expression will fast-forward the value of a given bounded sequence to match a specific value, if possible.
 class TypedExpressionDecorator<E>
          A type expression decorator allows any expression to be explicitly associated with the type of the values the evaluation of it will produce.
 class VariableExpression<E>
          A variable expression represents an expression that can be assigned a given value, which will be stored in a given context supplied at evaluation time.
 

Fields in dk.rode.thesis.interpreter declared as Expression
private  Expression<Boolean> ConditionalExpression.condition
          The condition in form of an expression that returns a Boolean value when evaluated.
private  Expression<? extends Number> NextExpression.count
          The number of times Sequence.next() is invoked for the manipulated sequence.
protected  Expression<E> TypedExpressionDecorator.expression
          The decorated expression.
private  Expression<Boolean> NotExpression.expression
          The expression to evaluated and the result negated.
private  Expression<? extends E> AssignmentExpression.expression
          The second operand.
protected  Expression<? extends T> BinaryExpression.first
          The first operand.
private  Expression<Boolean> ReverseExpression.reverse
          If this expression evaluates to true, the sequence will be tried reversed, not if it evaluates to false.
protected  Expression<? extends T> BinaryExpression.second
          The second operand.
private  Expression<E> SetExpression.value
          The comparable value to set for the sequence.
 

Fields in dk.rode.thesis.interpreter with type parameters of type Expression
private  List<Expression<? extends E>> FlowExpression.expressions
          The expressions to evaluate, in order.
private  Set<Expression<?>> Context.touched
          A set storing currently touched expressions based on their identity.
 

Methods in dk.rode.thesis.interpreter that return Expression
 Expression<E> Expression.copy()
          Copies this expression.
private
<E extends Comparable<? super E>>
Expression<E>
Main.create1(Sequence<E> sequence, Class<E> type, E value, Context context)
          Creates: next[20], y = current, (reverse[true] ?
private
<E extends Number & Comparable<? super E>>
Expression<E>
Main.create2(Sequence<E> sequence, Class<E> type, E value, Context context)
          Creates: next[value], foo = Integer{next[(boo ?
private
<E extends Comparable<? super E>>
Expression<E>
Main.create3(Sequence<E> sequence, Class<E> type, E value, Context context)
          Creates a loop-structure by using cyclic expression references without intermediate variables: (current < value ?
private
<E extends Number & Comparable<? super E>>
Expression<E>
Main.create4(Sequence<E> sequence, Class<E> type, E value1, E value2, Context context)
          Generates the mother of all sequence expressions: (current < value1 ?
private  Expression<Comparable<?>> Main.create5(Context context, Sequence<String> string, Sequence<Integer> integer, String stringValue, Integer integerValue)
          Creates an expression with a loop having 15 iterations as well as different sequences and types: ((!
 

Methods in dk.rode.thesis.interpreter that return types with arguments of type Expression
 List<Expression<?>> VariableExpression.operands()
           
 List<Expression<?>> TypedExpressionDecorator.operands()
           
 List<Expression<?>> SetExpression.operands()
           
 List<Expression<?>> SequenceExpression.operands()
           
 List<Expression<?>> ReverseExpression.operands()
           
 List<Expression<?>> NotExpression.operands()
           
 List<Expression<?>> NextExpression.operands()
           
 List<Expression<?>> FlowExpression.operands()
           
 List<Expression<?>> Expression.operands()
          Returns the expression operands used by this expression, in order.
 List<Expression<?>> ConditionalExpression.operands()
           
 List<Expression<?>> BreakExpression.operands()
           
 List<Expression<?>> BinaryExpression.operands()
           
 List<Expression<?>> AssignmentExpression.operands()
           
 

Methods in dk.rode.thesis.interpreter with parameters of type Expression
 FlowExpression<E> FlowExpression.add(Expression<? extends E> expression)
          Adds the expression supplied as expression to this flow expression.
static StringBuilder Expression.SymbolIdiom.asSymbol(Context context, Expression<?> parent, Expression<?> child)
          See asSymbol(Context).
static StringBuilder Expression.SymbolIdiom.asSymbol(Context context, Expression<?> parent, Expression<?> child)
          See asSymbol(Context).
static StringBuilder Expression.SymbolIdiom.asSymbol(Context context, Expression<?> parent, Expression<?> child, StringBuilder sb)
          See asSymbol(Context).
static StringBuilder Expression.SymbolIdiom.asSymbol(Context context, Expression<?> parent, Expression<?> child, StringBuilder sb)
          See asSymbol(Context).
 boolean VariableExpression.contains(Expression<?> expression)
           
 boolean TypedExpressionDecorator.contains(Expression<?> expression)
           
 boolean Expression.contains(Expression<?> expression)
          Returns true if this expression is or contains the expression supplied as expression, false if not.
 boolean ConditionalExpression.contains(Expression<?> expression)
           
 boolean AbstractExpression.contains(Expression<?> expression)
           
<E extends T>
T
Interpreter.interpret(Context context, Expression<E> expression)
          Interpret the expression syntax tree having the root supplied as expression, and returns the result.
<E extends T>
E
Interpreter.interpret(Context context, Expression<E> expression, Class<? super E> type)
          Interpret the expression syntax tree having the root supplied as expression, and returns the result.
 boolean Context.touch(Expression<?> expression)
          Touches the expression supplied as expression based on its identity and return false if it was the first time expression was touched since the last call to Context.reset(), true otherwise.
 

Constructors in dk.rode.thesis.interpreter with parameters of type Expression
AndExpression(boolean shortCircuit, Expression<Boolean> first, Expression<Boolean> second)
          Constructor.
AndExpression(boolean shortCircuit, Expression<Boolean> first, Expression<Boolean> second)
          Constructor.
AndExpression(Expression<Boolean> first, Expression<Boolean> second)
          Constructor.
AndExpression(Expression<Boolean> first, Expression<Boolean> second)
          Constructor.
AssignmentExpression(VariableExpression<E> variable, Expression<? extends E> expression)
          Constructor.
BinaryExpression(Expression<? extends T> first, Expression<? extends T> second)
          Constructor.
BinaryExpression(Expression<? extends T> first, Expression<? extends T> second)
          Constructor.
CompareExpression(CompareExpression.Comparison comparison, Expression<? extends E> first, Class<E> type, E value)
          Constructor.
CompareExpression(CompareExpression.Comparison comparison, Expression<? extends E> first, Class<E> type, String name)
          Constructor.
CompareExpression(CompareExpression.Comparison comparison, Expression<? extends E> first, Expression<? extends E> second)
          Constructor.
CompareExpression(CompareExpression.Comparison comparison, Expression<? extends E> first, Expression<? extends E> second)
          Constructor.
ConditionalExpression(Expression<Boolean> condition, Expression<? extends E> first, Expression<? extends E> second)
          Constructor.
ConditionalExpression(Expression<Boolean> condition, Expression<? extends E> first, Expression<? extends E> second)
          Constructor.
ConditionalExpression(Expression<Boolean> condition, Expression<? extends E> first, Expression<? extends E> second)
          Constructor.
EqualExpression(Expression<?> first, Expression<?> second)
          Constructor.
EqualExpression(Expression<?> first, Expression<?> second)
          Constructor.
ExpressionException(Expression<?> expression)
          Constructor.
NextExpression(Sequence<? extends E> sequence, Expression<? extends Number> count)
          Constructor, which will call Sequence.next() the number of times corresponding to the absolute value of the result of evaluating count when this expression is evaluated.
NextExpression(Sequence<? extends E> sequence, Expression<? extends Number> count, boolean includeHashCode)
          Constructor, which will call Sequence.next() the number of times corresponding to the absolute value of the result of evaluating count when this expression is evaluated.
NotExpression(Expression<Boolean> expression)
          Constructor.
OrExpression(boolean shortCircuit, Expression<Boolean> first, Expression<Boolean> second)
          Constructor.
OrExpression(boolean shortCircuit, Expression<Boolean> first, Expression<Boolean> second)
          Constructor.
OrExpression(Expression<Boolean> first, Expression<Boolean> second)
          Constructor.
OrExpression(Expression<Boolean> first, Expression<Boolean> second)
          Constructor.
ReverseExpression(Sequence<? extends E> sequence, Expression<Boolean> reverse)
          Constructor.
ReverseExpression(Sequence<? extends E> sequence, Expression<Boolean> reverse, boolean includeHashCode)
          Constructor.
SetExpression(Sequence<? extends E> sequence, Expression<E> value)
          Constructor.
SetExpression(Sequence<? extends E> sequence, Expression<E> value, boolean includeHashCode)
          Constructor.
TypedExpressionDecorator(Expression<E> expression, Class<E> type)
          Constructor, which decorates the expression supplied as expression having the type supplied as type.
TypedExpressionDecorator(Expression<E> expression, Class<E> type, boolean includeTypeInfo)
          Constructor, which decorates the expression supplied as expression having the type supplied as type.
 


Gunni Rode / rode.dk

Feel free to use and/or modify the Java 6 source code developed for this thesis AT YOUR OWN RISK, but note that the source code comes WITHOUT ANY — and I do mean WITHOUT ANY — form of warranty WHAT SO EVER!

The original thesis and source code are available at rode.dk/thesis.