tgl.interpreter
クラス Stack

java.lang.Object
  上位を拡張 java.util.AbstractCollection<E>
      上位を拡張 java.util.AbstractList<E>
          上位を拡張 java.util.Vector<java.lang.Double>
              上位を拡張 tgl.interpreter.Stack
すべての実装されたインタフェース:
java.io.Serializable, java.lang.Cloneable, java.lang.Iterable<java.lang.Double>, java.util.Collection<java.lang.Double>, java.util.List<java.lang.Double>, java.util.RandomAccess

 class Stack
extends java.util.Vector<java.lang.Double>

インタプリタが使用するスタックを表す。 スタックとしてベクタを使用するので、この実装ではスタックポインタは存在しない。


フィールドの概要
 
クラス java.util.Vector から継承されたフィールド
capacityIncrement, elementCount, elementData
 
クラス java.util.AbstractList から継承されたフィールド
modCount
 
コンストラクタの概要
Stack()
           
 
メソッドの概要
(package private)  void extend(int n)
          スタックを指定された長さだけ伸ばす。
(package private)  int getFP()
          フレームポインタの値を取得する。
(package private)  double getFrameElement(int index)
          現在のフレームから指定された位置にあるデータを取り出す。
(package private)  int getTopIndex()
          スタックの先頭を指すインデックスを取得する。
(package private)  void initialize()
          スタックを初期化する。
(package private)  double peek()
          スタックの先頭にあるデータを返す。
(package private)  double pop()
          スタックからデータをひとつポップする。
(package private)  void push(double v)
          スタックにデータをひとつプッシュする。
(package private)  void releaseParameters(int c)
          仮引数領域を解放する。
(package private)  void resumeFramePointer()
          フレームポインタの値を、スタックに退避していた値に戻す。
(package private)  void setFrameElement(double v, int index)
          現在のフレームの指定された位置にデータを格納する。
(package private)  void updateFramePointer()
          フレームポインタを更新する。
 
クラス java.util.Vector から継承されたメソッド
add, add, addAll, addAll, addElement, capacity, clear, clone, contains, containsAll, copyInto, elementAt, elements, ensureCapacity, equals, firstElement, get, hashCode, indexOf, indexOf, insertElementAt, isEmpty, lastElement, lastIndexOf, lastIndexOf, remove, remove, removeAll, removeAllElements, removeElement, removeElementAt, removeRange, retainAll, set, setElementAt, setSize, size, subList, toArray, toArray, toString, trimToSize
 
クラス java.util.AbstractList から継承されたメソッド
iterator, listIterator, listIterator
 
クラス java.lang.Object から継承されたメソッド
finalize, getClass, notify, notifyAll, wait, wait, wait
 
インタフェース java.util.List から継承されたメソッド
iterator, listIterator, listIterator
 

コンストラクタの詳細

Stack

Stack()
メソッドの詳細

initialize

void initialize()
スタックを初期化する。 スタックに格納されたすべてのデータをクリアし、フレームポインタが スタックの底を指すようにする。また、main のフレーム内の最初の局所変数が 1番地に積まれるように、あらかじめデータをひとつプッシュしておく。


getFP

int getFP()
フレームポインタの値を取得する。

戻り値:
フレームポインタの値

getTopIndex

int getTopIndex()
スタックの先頭を指すインデックスを取得する。

戻り値:
スタックの先頭を指すインデックス

push

void push(double v)
スタックにデータをひとつプッシュする。

パラメータ:
v - スタックにプッシュするデータ

pop

double pop()
スタックからデータをひとつポップする。

戻り値:
スタックからポップされたデータ

peek

double peek()
スタックの先頭にあるデータを返す。スタックの先頭のデータは ポップされずにそのままスタックに残る。


getFrameElement

double getFrameElement(int index)
現在のフレームから指定された位置にあるデータを取り出す。 位置はフレームポインタが指す位置からの相対位置で指定する。 スタックの状態は変化しない。

パラメータ:
index - フレーム中の位置
戻り値:
フレーム中の指定された位置にあるデータ

setFrameElement

void setFrameElement(double v,
                     int index)
現在のフレームの指定された位置にデータを格納する。 位置はフレームポインタが指す位置からの相対位置で指定する。 スタックの状態は変化しない。

パラメータ:
v - フレーム中の指定した位置に格納するデータ
index - フレーム中の位置

updateFramePointer

void updateFramePointer()
フレームポインタを更新する。現在のフレームポインタの値を、 スタックにプッシュする。フレームポインタを退避したスタック中の 位置を指すように、フレームポインタの値を更新する。


resumeFramePointer

void resumeFramePointer()
フレームポインタの値を、スタックに退避していた値に戻す。 局所変数領域とフレームポインタが退避されていた領域を解放し, 退避されていたフレームポインタをフレームポインタの値とする。 これにより、この時点までアクティブだったフレームに対応する 手続きの呼び出し側のフレームがアクティブになる。


releaseParameters

void releaseParameters(int c)
仮引数領域を解放する。

パラメータ:
c - 仮引数の個数

extend

void extend(int n)
スタックを指定された長さだけ伸ばす。 これは局所変数のための領域の確保に使われる。 仕様より,局所変数の初期値は未定なので、 確保したすべての領域に null を格納する。

パラメータ:
n - スタックを伸ばす長さ