pascalinterpreter
Class BinaryOperator

java.lang.Object
  extended bypascalinterpreter.Operator
      extended bypascalinterpreter.BinaryOperator
Direct Known Subclasses:
Arithmetic, Assign, Relational

public abstract class BinaryOperator
extends Operator


Field Summary
 
Fields inherited from class pascalinterpreter.Operator
OP_REG_VAR_NAME
 
Constructor Summary
BinaryOperator()
           
 
Method Summary
protected  Variable[] execInitialize(Variable operandL, Variable operandR)
          Metoda pomocnicza - sprawdza typy, oraz wykonuje konwersję do wspólnego typu dla obu operandów.
abstract  void execute(Variable operandL, Variable operandR)
           
 boolean isPossible(DataType type1, DataType type2)
          Sprawdza, czy operacja jest możliwa z użyciem tego typu operandów.
protected  Variable[] makeConversion(Variable operand0, Variable operand1)
          Metoda wykonuje, jeżeli jest możliwa, konwersje operandów do wspólnego typu.
protected  double[] parseDouble(Variable[] operands)
          Wykonuje, jeżeli to możliwe, parsowanie wartości operandów (które są reprezentowane przez typ String) do liczb typu double.
 
Methods inherited from class pascalinterpreter.Operator
getRegistry, setRegistry, setRegistry, setRegistry, setRegistry
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

BinaryOperator

public BinaryOperator()
Method Detail

execute

public abstract void execute(Variable operandL,
                             Variable operandR)
                      throws RuntimeException,
                             InternalException
Throws:
RuntimeException
InternalException

isPossible

public boolean isPossible(DataType type1,
                          DataType type2)
Sprawdza, czy operacja jest możliwa z użyciem tego typu operandów.

Parameters:
type1 - - typ operandu L.
type2 - - typ operandu R.
Returns:
True, jeżeli operacja jest możliwa. W przeciwnym wypadku false.

makeConversion

protected Variable[] makeConversion(Variable operand0,
                                    Variable operand1)
                             throws InternalException,
                                    RuntimeException
Metoda wykonuje, jeżeli jest możliwa, konwersje operandów do wspólnego typu.

Parameters:
operand0 - - operand pierwszy.
operand1 - - operand drugi.
Returns:
Zwraca dwuelementową tablicę z dwoma operandami po konwersji do wspólnego typu.
Throws:
InternalException - - Wyjątek generowany, jeżeli konwersja nie mogła zostać wykonana.
RuntimeException

parseDouble

protected double[] parseDouble(Variable[] operands)
                        throws InternalException
Wykonuje, jeżeli to możliwe, parsowanie wartości operandów (które są reprezentowane przez typ String) do liczb typu double.

Parameters:
operands - - tablica dwuelementowa, zawierająca operandy.
Returns:
Zwraca tablicę dwuelementową liczb typu double z wartościami odpowiadającymi wartościom przekazanych do metody operanndów.
Throws:
InternalException - - Wyjątek generowany, gdy parsowanie nie jest możliwe (niepoprawny format danych - niedający się przekształcić do liczb typu double)

execInitialize

protected Variable[] execInitialize(Variable operandL,
                                    Variable operandR)
                             throws InternalException,
                                    RuntimeException
Metoda pomocnicza - sprawdza typy, oraz wykonuje konwersję do wspólnego typu dla obu operandów.

Parameters:
operandL - - operand lewy.
operandR - - operand prawy.
Returns:
Tablica dwuelementowa, zawierająca operandy po konwersji.
Throws:
InternalException - Wyjątek generowany, jeżeli operacja nie może zostać wykonana.
RuntimeException