avrora.syntax
Class Expr.BinOp

java.lang.Object
  extended byavrora.syntax.ASTNode
      extended byavrora.syntax.Expr
          extended byavrora.syntax.Expr.BinOp
Enclosing class:
Expr

public static class Expr.BinOp
extends Expr

The BinOp class represents a simple binary arithmetic operator such as addition, multiplication, etc. It contains two internal expressions, the left and right.


Nested Class Summary
 
Nested classes inherited from class avrora.syntax.Expr
Expr.BinOp, Expr.CharLiteral, Expr.Constant, Expr.Func, Expr.RelativeAddress, Expr.StringLiteral, Expr.Term, Expr.UnOp, Expr.Variable
 
Field Summary
 Expr left
          The left field records an expression that represents the operand on the left side of the operator.
 AbstractToken op
          The op field records the token that corresponds to the actual arithmetic operator.
 Expr right
          The right field records an expression that represents the operand on the right side of the operator.
 
Constructor Summary
Expr.BinOp(AbstractToken tok, Expr l, Expr r)
           
 
Method Summary
 int evaluate(int currentByteAddress, Context c)
          The evaluate() method computes the value of the expression in this context and returns its value.
 AbstractToken getLeftMostToken()
          The getLeftMostToken() method gets the first token associated with the abstract syntax tree node.
 AbstractToken getRightMostToken()
          The getRightMostToken() method gets the last token associated with the abstract syntax tree node.
 java.lang.String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

op

public final AbstractToken op
The op field records the token that corresponds to the actual arithmetic operator.


left

public final Expr left
The left field records an expression that represents the operand on the left side of the operator.


right

public final Expr right
The right field records an expression that represents the operand on the right side of the operator.

Constructor Detail

Expr.BinOp

public Expr.BinOp(AbstractToken tok,
                  Expr l,
                  Expr r)
Method Detail

evaluate

public int evaluate(int currentByteAddress,
                    Context c)
The evaluate() method computes the value of the expression in this context and returns its value. This implementation works straightforwardly by first evaluating the left operand, then the right, and then computing the result of the arithmetic operation.

Specified by:
evaluate in class Expr
Parameters:
currentByteAddress - the current byte address within the program
c - the context in which to evaluate this expression
Returns:
the value of the expression as a 32-bit integer

getLeftMostToken

public AbstractToken getLeftMostToken()
Description copied from class: ASTNode
The getLeftMostToken() method gets the first token associated with the abstract syntax tree node.

Specified by:
getLeftMostToken in class ASTNode
Returns:
an AbstractToken instance representing the first token that is a part of this syntactic item.

getRightMostToken

public AbstractToken getRightMostToken()
Description copied from class: ASTNode
The getRightMostToken() method gets the last token associated with the abstract syntax tree node.

Specified by:
getRightMostToken in class ASTNode
Returns:
an AbstractToken instance representing the last token that is a part of this syntactic item.

toString

public java.lang.String toString()