coins.ffront
Class DeclManager

java.lang.Object
  extended bycoins.ffront.BaseManager
      extended bycoins.ffront.DeclManager

public class DeclManager
extends BaseManager

Declaration Manager


Field Summary
(package private)  F77Sym f7Sym
           
(package private)  FirList fCharParamList
           
(package private)  CommonManager fCommonMgr
           
(package private)  ConstManager fConstMgr
           
(package private)  EquivManager fEquivMgr
           
(package private)  ImplicitManager fImplMgr
           
(package private)  BlockStmt fInitialPart
           
(package private)  Subp fSubp
           
(package private)  SubpDefinition fSubpDef
           
(package private)  SymTable fSymTable
           
(package private)  Type functionType
           
(package private)  HeaderStmt programHeader
           
 
Fields inherited from class coins.ffront.BaseManager
fHir, fHirUtil, fTypeUtil, hir, hirRoot, sym, symRoot
 
Constructor Summary
DeclManager(FirToHir fth, F77Sym f7s)
           
 
Method Summary
(package private)  void addInitialPart(Stmt stmt)
           
(package private)  java.lang.String characterLengthVarName(java.lang.String id)
           
(package private)  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
(package private)  void declDimensionVariable(Type type, java.lang.String ident, FirList dims)
           
(package private)  void declDimensionVariableWithLength(Type type, java.lang.String ident, FirList dims, Token length)
           
(package private)  void declVariable(Type type, java.lang.String ident)
           
(package private)  void declVariableWithLength(Type type, java.lang.String ident, Token length)
           
(package private)  void defineFunctionType()
          define function type (void if subroutine or main).
(package private)  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)
           
(package private)  Var defineVar(java.lang.String lexem)
           
(package private)  boolean deleteFromSymbolTable(java.lang.String name)
           
(package private)  void flattenExpList_r(java.util.List list, ExpListExp explist)
           
(package private)  ExpListExp flattenExpList(ExpListExp e)
           
(package private)  ConstManager getConstManager()
           
 Type getDeclType(java.lang.String pIdent)
           
(package private)  Type getFunctionType()
          get function type
 Type getImplicitType(java.lang.String id)
           
(package private)  HeaderStmt getProgramHeader()
           
(package private)  java.lang.String getProgramUnitName()
           
(package private)  Type getSymbolType(java.lang.String name)
           
(package private)  boolean isBlockVariable(java.lang.String ident)
           
(package private)  boolean isDefinedInLocal(Sym sym)
           
(package private)  boolean isDefinedSymbol(java.lang.String name)
           
(package private)  boolean isEquivVariable(java.lang.String ident)
           
(package private)  boolean isParamIdent(java.lang.String ident)
           
(package private)  Exp makeBlockVariableExp(java.lang.String ident)
           
(package private)  Exp makeEquivVariableExp(java.lang.String ident)
           
(package private)  void processDecl()
          Process Declare.
(package private)  void processDimension()
          process Dimension statement
(package private)  void processExternal()
          Process external declaration.
(package private)  void processProgramHeader()
          Process program header statement.
(package private)  void processSave()
           
(package private)  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)
           
(package private)  void setInitialValue(Var v, Exp e)
           
(package private)  void setInitialValue(Var v, Exp e, java.lang.String lexem)
           
(package private)  void setProgramHeader(HeaderStmt pHeader)
           
(package private)  Sym symBlockVariable(java.lang.String ident)
           
(package private)  Sym symEquivVariable(java.lang.String ident)
           
 
Methods inherited from class coins.ffront.BaseManager
dp, printMsgFatal, printMsgRecovered
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

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
Constructor Detail

DeclManager

public DeclManager(FirToHir fth,
                   F77Sym f7s)
Method Detail

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.

Parameters:
ident -
Returns:
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.

Parameters:
ident -
pType -
Returns:
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.

Parameters:
ident -
Returns:
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.

Parameters:
id - subprogram name
returnType - type of the subprogram
pParams - parameters
Returns:
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)