Package edu.wisc.game.parser
Interface Expression
- All Known Subinterfaces:
Expression.ArithmeticExpression
- All Known Implementing Classes:
Expression.AdditiveExpression,Expression.BracketList,Expression.ColonExpression,Expression.ComparisonExpression,Expression.ExList,Expression.Id,Expression.MultiplicativeExpression,Expression.NegationExpression,Expression.Num,Expression.ParenList,Expression.QualifiedId,Expression.RangeExpression,Expression.SerialExpression,Expression.Star
public interface Expression
-
Nested Class Summary
Nested Classes Modifier and Type Interface Description static classExpression.AdditiveExpressionstatic interfaceExpression.ArithmeticExpressionAn arithmetic expression is composed of variables, constants, and arithmetic operations; parentheses can be used for ordering operations.static classExpression.BracketListstatic classExpression.ColonExpressionId:ArithmeticExpression; used in GS 3static classExpression.ComparisonExpressionHas exactly two operands, and the operator is '=='static classExpression.ExListCan be overridden as neededstatic classExpression.IdA variable.static interfaceExpression.MapperA Mapper is something that can take a variable (Expression.Id) and produce another Expression (e.g.static classExpression.MapTo<T>A HashMap storing a set of values of a given type T for each keystatic classExpression.MultiplicativeExpressionstatic classExpression.NegationExpression!E evaluates to [1] if E is an empty set, or to [] otherwisestatic classExpression.NumA numeric constantstatic classExpression.ParenListstatic classExpression.PropMapValues are String or Integerstatic classExpression.QualifiedIdA.Bstatic classExpression.RangeExpression[Num..Num]static classExpression.SerialExpressionAdditive or multiplicativestatic classExpression.StarA Star expression is simply "*".static classExpression.VarMapstatic classExpression.VarMap2Objects in question may be Integer, String, or PropMap (ImageObject or equivalent) -
Field Summary
Fields Modifier and Type Field Description static Expression.StarSTAR -
Method Summary
Modifier and Type Method Description Expressionmap(Expression.Mapper mapper)static Expression.BracketListmkBracketList(Vector<Token> tokens)static ExpressionmkCounterOrAtom(Vector<Token> tokens)Extracts one of the sections of a rule line: either the leading counter (int or star), or one of the atoms (paren lists that may include arithmetic expressions or stars)static Expression.ArithmeticExpressionmkLongestArithmeticExpression(Vector<Token> tokens)Creates the longest ArithmeticExpression starting at the beginning of the tokens array.static Expression.ArithmeticExpressionmkLongestE1(Vector<Token> tokens)E1 := (E) | Id.Id | Id | Num | -Num | [E,E,...]static Expression.ArithmeticExpressionmkLongestE2(Vector<Token> tokens)E2 := E1 | !E2static Expression.ArithmeticExpressionmkLongestE3(Vector<Token> tokens)E3 := E2 | E2*E2...static Expression.ArithmeticExpressionmkLongestE4(Vector<Token> tokens)static Expression.ArithmeticExpressionmkLongestE5(Vector<Token> tokens)static Expression.RangeExpressionmkRangeExpression(Vector<Token> tokens)If the given sequence of tokens starts with a range expression, extracts it; otherwise, returns nullstatic HashSet<Integer>moduloNB(Set<Integer> h0)Translates all elements of the set to the [0..NBU-1] range, as appropriate for bucket numbersstatic HashSet<Integer>moduloNB2(Set<Object> h0)static IntegertoInteger(Object o)StringtoSrc()
-
Field Details
-
Method Details
-
toInteger
-
map
- Throws:
RuleParseException
-
toSrc
String toSrc() -
mkCounterOrAtom
Extracts one of the sections of a rule line: either the leading counter (int or star), or one of the atoms (paren lists that may include arithmetic expressions or stars)- Throws:
RuleParseException
-
mkRangeExpression
static Expression.RangeExpression mkRangeExpression(Vector<Token> tokens) throws RuleParseExceptionIf the given sequence of tokens starts with a range expression, extracts it; otherwise, returns null- Throws:
RuleParseException
-
mkLongestArithmeticExpression
static Expression.ArithmeticExpression mkLongestArithmeticExpression(Vector<Token> tokens) throws RuleParseExceptionCreates the longest ArithmeticExpression starting at the beginning of the tokens array.E := E5 E5 := E4 | E4==E4 E4 := E3 | E3+E3+... E3 := E2 | E2*E2... E2 := E1 | !E2 E1 := (E) | Id.Id | Id | Num | [E4,E4,...]- Throws:
RuleParseException
-
mkLongestE5
- Throws:
RuleParseException
-
mkLongestE4
- Throws:
RuleParseException
-
mkLongestE3
E3 := E2 | E2*E2...- Throws:
RuleParseException
-
mkLongestE2
E2 := E1 | !E2- Throws:
RuleParseException
-
mkLongestE1
E1 := (E) | Id.Id | Id | Num | -Num | [E,E,...]- Throws:
RuleParseException
-
mkBracketList
- Throws:
RuleParseException
-
moduloNB
Translates all elements of the set to the [0..NBU-1] range, as appropriate for bucket numbers -
moduloNB2
-