Class Group

All Implemented Interfaces:
Comparable<Operator>

public class Group extends Operator
A group is a special N-ary operator delineated by a left-hand symbol and a right-hand symbol, with comma-separated arguments.

Typically, these are various forms of parentheses, although in principle any pair of two distinct symbols is allowed.

Author:
Curtis Rueden
  • Constructor Details

    • Group

      public Group(String initiator, String terminator, double precedence)
      Creates a new group.
      Parameters:
      initiator - The lefthand symbol signaling the start of the group.
      terminator - The righthand symbol signaling the end of the group.
      precedence - The group's operator precedence.
  • Method Details

    • getTerminator

      public String getTerminator()
      Gets the group's terminator symbol. (Use Token.getToken() to obtain the initiator symbol.)
      Returns:
      The terminator symbol.
    • incArity

      public void incArity()
      Increments the group's arity.
    • matches

      public boolean matches(Group g)
      Gets whether the given group is the same as this one, in terms of token (lefthand symbol), terminator (righthand symbol) and precedence.

      Note that this method intentionally does not compare arity; the idea is that if you have a Group and call instance() to duplicate it, that copy will match this one, even though the copy initially starts at arity 0.

      Parameters:
      g - The group to compare with this one.
      Returns:
      True iff the given group is the same as this one, in terms of token, terminator, and precedence.
    • getArity

      public int getArity()
      Description copied from class: Operator
      Gets the operator's arity.
      Overrides:
      getArity in class Operator
      Returns:
      The arity of the operator: 1 for unary, 2 for binary, etc.
    • isInfix

      public boolean isInfix()
      Description copied from class: Operator
      Gets whether the operator is an infix operator (e.g., a-b).
      Overrides:
      isInfix in class Operator
      Returns:
      True iff the operator is an infix operator.
    • isPrefix

      public boolean isPrefix()
      Description copied from class: Operator
      Gets whether the operator is a prefix operator (e.g., -a).
      Overrides:
      isPrefix in class Operator
      Returns:
      True iff the operator is a prefix operator.
    • instance

      public Group instance()
      Creates an instance of a group operator, using this one as a template.

      The created group will have the same initiator and terminator symbols, as well as the same precedence. But it will begin as a nullary group until incArity() is called.

      Overrides:
      instance in class Operator
      Returns:
      this or a new instance, depending on the type of operator.
    • toString

      public String toString()
      Overrides:
      toString in class Token