coins.ffront
クラス DeclManager

java.lang.Object
  |
  +--coins.ffront.BaseManager
        |
        +--coins.ffront.DeclManager

public class DeclManager
extends BaseManager

Declaration Manager


フィールドの概要
(パッケージプライベート)  F77Sym f7Sym
           
(パッケージプライベート)  FirList fCharParamList
           
(パッケージプライベート)  CommonManager fCommonMgr
           
(パッケージプライベート)  ConstManager fConstMgr
           
(パッケージプライベート)  EquivManager fEquivMgr
           
(パッケージプライベート)  ImplicitManager fImplMgr
           
(パッケージプライベート)  BlockStmt fInitialPart
           
(パッケージプライベート)  Subp fSubp
           
(パッケージプライベート)  SubpDefinition fSubpDef
           
(パッケージプライベート)  SymTable fSymTable
           
(パッケージプライベート)  Type functionType
           
(パッケージプライベート)  HeaderStmt programHeader
           
 
クラス coins.ffront.BaseManager から継承したフィールド
fHir, fHirUtil, fTypeUtil, hir, hirRoot, sym, symRoot
 
コンストラクタの概要
DeclManager(FirToHir fth, F77Sym f7s)
           
 
メソッドの概要
(パッケージプライベート)  void addInitialPart(Stmt stmt)
           
(パッケージプライベート)  java.lang.String characterLengthVarName(java.lang.String id)
           
(パッケージプライベート)  void checkEntryStmt()
          If entryStmtList is not empty, (1) make new ENTRY statement and add it to the program body (2) add the parameters of each ENTRY statement to programHeader.fArgs (3) change program header (change header's name and parameters and add computed goto statement to goto the place of each ENTRY statement) (4) make new subprogram for each ENTRY statement
(パッケージプライベート)  void declDimensionVariable(Type type, java.lang.String ident, FirList dims)
           
(パッケージプライベート)  void declDimensionVariableWithLength(Type type, java.lang.String ident, FirList dims, Token length)
           
(パッケージプライベート)  void declVariable(Type type, java.lang.String ident)
           
(パッケージプライベート)  void declVariableWithLength(Type type, java.lang.String ident, Token length)
           
(パッケージプライベート)  void defineFunctionType()
          define function type (void if subroutine or main).
(パッケージプライベート)  Param defineParam(java.lang.String id)
          define id as parameter.
 Subp defineSubp(java.lang.String id, Type returnType, int visibility, IrList pParams)
          Define a subprogram in the current symbol table.
 Subp defineSubpWithoutClose(java.lang.String id, Type returnType, int visibility)
           
(パッケージプライベート)  Var defineVar(java.lang.String lexem)
           
(パッケージプライベート)  boolean deleteFromSymbolTable(java.lang.String name)
           
(パッケージプライベート)  void flattenExpList_r(java.util.List list, ExpListExp explist)
           
(パッケージプライベート)  ExpListExp flattenExpList(ExpListExp e)
           
(パッケージプライベート)  ConstManager getConstManager()
           
 Type getDeclType(java.lang.String pIdent)
           
(パッケージプライベート)  Type getFunctionType()
          get function type
 Type getImplicitType(java.lang.String id)
           
(パッケージプライベート)  HeaderStmt getProgramHeader()
           
(パッケージプライベート)  java.lang.String getProgramUnitName()
           
(パッケージプライベート)  Type getSymbolType(java.lang.String name)
           
(パッケージプライベート)  boolean isBlockVariable(java.lang.String ident)
           
(パッケージプライベート)  boolean isDefinedInLocal(Sym sym)
           
(パッケージプライベート)  boolean isDefinedSymbol(java.lang.String name)
           
(パッケージプライベート)  boolean isEquivVariable(java.lang.String ident)
           
(パッケージプライベート)  boolean isParamIdent(java.lang.String ident)
           
(パッケージプライベート)  Exp makeBlockVariableExp(java.lang.String ident)
           
(パッケージプライベート)  Exp makeEquivVariableExp(java.lang.String ident)
           
(パッケージプライベート)  void processDecl()
          Process Declare.
(パッケージプライベート)  void processDimension()
          process Dimension statement
(パッケージプライベート)  void processExternal()
          Process external declaration.
(パッケージプライベート)  void processProgramHeader()
          Process program header statement
(パッケージプライベート)  void processSave()
           
(パッケージプライベート)  void processTypeDecl()
          Process define variables as each types.
 Sym search(java.lang.String ident)
           
 Var searchOrAddVar(java.lang.String ident)
          If the ident is defined as a Var return the Var.
 Var searchOrAddVar(java.lang.String ident, Type pType)
          If the ident is defined as a Var of type pType return the Var.
 Sym searchSymOrAddVar(java.lang.String ident)
          If the ident is defined as a Sym return the Sym.
 Type searchType(java.lang.String ident)
           
 void setHirBody(BlockStmt blockStmt)
           
(パッケージプライベート)  void setInitialValue(Var v, Exp e)
           
(パッケージプライベート)  void setInitialValue(Var v, Exp e, java.lang.String lexem)
           
(パッケージプライベート)  void setProgramHeader(HeaderStmt pHeader)
           
(パッケージプライベート)  Sym symBlockVariable(java.lang.String ident)
           
(パッケージプライベート)  Sym symEquivVariable(java.lang.String ident)
           
 
クラス coins.ffront.BaseManager から継承したメソッド
dp, printMsgFatal, printMsgRecovered
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

fImplMgr

ImplicitManager fImplMgr

fCommonMgr

CommonManager fCommonMgr

fEquivMgr

EquivManager fEquivMgr

fConstMgr

ConstManager fConstMgr

f7Sym

F77Sym f7Sym

functionType

Type functionType

programHeader

HeaderStmt programHeader

fSubp

Subp fSubp

fSymTable

SymTable fSymTable

fSubpDef

SubpDefinition fSubpDef

fInitialPart

BlockStmt fInitialPart

fCharParamList

FirList fCharParamList
コンストラクタの詳細

DeclManager

public DeclManager(FirToHir fth,
                   F77Sym f7s)
メソッドの詳細

getImplicitType

public Type getImplicitType(java.lang.String id)

getDeclType

public Type getDeclType(java.lang.String pIdent)

getConstManager

ConstManager getConstManager()

processDecl

void processDecl()
Process Declare.


defineFunctionType

void defineFunctionType()
define function type (void if subroutine or main).


checkEntryStmt

void checkEntryStmt()
If entryStmtList is not empty, (1) make new ENTRY statement and add it to the program body (2) add the parameters of each ENTRY statement to programHeader.fArgs (3) change program header (change header's name and parameters and add computed goto statement to goto the place of each ENTRY statement) (4) make new subprogram for each ENTRY statement


processProgramHeader

void processProgramHeader()
Process program header statement. (1) define subprogram and symTable (2) define declared variables (3) add formal parameters to the subprogram (4) if it has "*" parameter change SUBROUTINE to INTEGER FUNCTION (5) in case of FUNCTION make a variable for return value


defineParam

Param defineParam(java.lang.String id)
define id as parameter. if id is already declared as parameter, ignore this.


characterLengthVarName

java.lang.String characterLengthVarName(java.lang.String id)

declVariable

void declVariable(Type type,
                  java.lang.String ident)

declDimensionVariable

void declDimensionVariable(Type type,
                           java.lang.String ident,
                           FirList dims)

declVariableWithLength

void declVariableWithLength(Type type,
                            java.lang.String ident,
                            Token length)

declDimensionVariableWithLength

void declDimensionVariableWithLength(Type type,
                                     java.lang.String ident,
                                     FirList dims,
                                     Token length)

processTypeDecl

void processTypeDecl()
Process define variables as each types.


processExternal

void processExternal()
Process external declaration.


processDimension

void processDimension()
process Dimension statement


processSave

void processSave()

isBlockVariable

boolean isBlockVariable(java.lang.String ident)

makeBlockVariableExp

Exp makeBlockVariableExp(java.lang.String ident)

symBlockVariable

Sym symBlockVariable(java.lang.String ident)

isEquivVariable

boolean isEquivVariable(java.lang.String ident)

makeEquivVariableExp

Exp makeEquivVariableExp(java.lang.String ident)

symEquivVariable

Sym symEquivVariable(java.lang.String ident)

searchOrAddVar

public Var searchOrAddVar(java.lang.String ident)
If the ident is defined as a Var return the Var. Else define new Var(ident, implicit type) and return it.

パラメータ:
ident -
戻り値:
Var symbol.

searchOrAddVar

public Var searchOrAddVar(java.lang.String ident,
                          Type pType)
If the ident is defined as a Var of type pType return the Var. Else define new Var(ident, pType) and return it.

パラメータ:
ident -
pType -
戻り値:
Var symbol.

isParamIdent

boolean isParamIdent(java.lang.String ident)

searchSymOrAddVar

public Sym searchSymOrAddVar(java.lang.String ident)
If the ident is defined as a Sym return the Sym. Else define new Var(ident, implicit type) and return it.

パラメータ:
ident -
戻り値:
HIR symbol.

search

public Sym search(java.lang.String ident)

searchType

public Type searchType(java.lang.String ident)

defineSubp

public Subp defineSubp(java.lang.String id,
                       Type returnType,
                       int visibility,
                       IrList pParams)
Define a subprogram in the current symbol table.

パラメータ:
id - subprogram name
returnType - type of the subprogram
pParams - parameters
戻り値:
subprogram symbol.

defineSubpWithoutClose

public Subp defineSubpWithoutClose(java.lang.String id,
                                   Type returnType,
                                   int visibility)

getFunctionType

Type getFunctionType()
get function type


setHirBody

public void setHirBody(BlockStmt blockStmt)

getProgramHeader

HeaderStmt getProgramHeader()

setProgramHeader

void setProgramHeader(HeaderStmt pHeader)

flattenExpList

ExpListExp flattenExpList(ExpListExp e)

flattenExpList_r

void flattenExpList_r(java.util.List list,
                      ExpListExp explist)

setInitialValue

void setInitialValue(Var v,
                     Exp e)

addInitialPart

void addInitialPart(Stmt stmt)

setInitialValue

void setInitialValue(Var v,
                     Exp e,
                     java.lang.String lexem)

getSymbolType

Type getSymbolType(java.lang.String name)

deleteFromSymbolTable

boolean deleteFromSymbolTable(java.lang.String name)

isDefinedSymbol

boolean isDefinedSymbol(java.lang.String name)

defineVar

Var defineVar(java.lang.String lexem)

getProgramUnitName

java.lang.String getProgramUnitName()

isDefinedInLocal

boolean isDefinedInLocal(Sym sym)