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
| クラス org.oklab.compiler.syntaxtree.Node から継承されたフィールド |
parent |
|
コンストラクタの概要 |
Scope(Node parent)
構文木への登録とローカル変数保存領域の作成を行う. |
| クラス 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)