org.oklab.compiler.syntaxtree.scope
クラス Scope

java.lang.Object
  上位を拡張 org.oklab.compiler.syntaxtree.Node
      上位を拡張 org.oklab.compiler.syntaxtree.scope.Scope
直系の既知のサブクラス:
Block, Method

public abstract class Scope
extends Node

()の中身を表す. メソッドやブロック文は内部にローカル変数を持つことが出来る.そのローカル変数は メソッドやブロック文が持つ情報の一部である.このScopeクラスは、そのローカル変数 情報を保持するクラスである.またこのクラスでローカル変数の処理をすべて行えるようにして、 それを継承すれば、継承した側はローカル変数を持つことが出来るようになる. 一般的には、プライベートなクラスで内包して作ったり、ユーティリティや構造体のように 参照してデータを取る実装もあるが、継承の実装方法をとることで、クラス定義を みてローカル変数管理構造を持つかどうかを判断できるようにしている.

導入されたバージョン:
1.0
バージョン:
1.0
作成者:
Satoshi Okita satoshiokita@gmail.com
関連項目:
Block, Method

フィールドの概要
private  java.util.Map<java.lang.String,Variable> localVariables
           
private  int localVariablesCount
          たとえば、メソッドの場合、そのメソッドの何個目の引数であるかを表す.
 
クラス org.oklab.compiler.syntaxtree.Node から継承されたフィールド
parent
 
コンストラクタの概要
Scope(Node parent)
          構文木への登録とローカル変数保存領域の作成を行う.
 
メソッドの概要
protected  Variable createReference(Node node, java.lang.String curentIdentifer)
           
 int localVariableCount()
          ツリー構造の構文解析木の葉から根に向かってローカル変数の数を取得する.
protected  void putLocalVariable(int type, java.lang.String curentIdentifer)
           
 
クラス org.oklab.compiler.syntaxtree.Node から継承されたメソッド
getReturnType, parseExpression, parseFactor, parseRefferenceOrCall, parseStatement, parseTerm, setParent
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

localVariables

private java.util.Map<java.lang.String,Variable> localVariables

localVariablesCount

private int localVariablesCount
たとえば、メソッドの場合、そのメソッドの何個目の引数であるかを表す.

コンストラクタの詳細

Scope

public Scope(Node parent)
構文木への登録とローカル変数保存領域の作成を行う.

パラメータ:
parent - 親ノード
メソッドの詳細

localVariableCount

public int localVariableCount()
クラス Node の記述:
ツリー構造の構文解析木の葉から根に向かってローカル変数の数を取得する. サブクラスで数が取れない場合、親クラスに数の取得を依頼する. これもgetReturnTypeメソッドと同じでNodeクラスに汎用的なメソッド定義をしている.

オーバーライド:
クラス Node 内の localVariableCount

putLocalVariable

protected void putLocalVariable(int type,
                                java.lang.String curentIdentifer)
                         throws CompileError
例外:
CompileError

createReference

protected Variable createReference(Node node,
                                   java.lang.String curentIdentifer)