Class CpcGenJava

java.lang.Object
  |
  +--CpcGenJava
All Implemented Interfaces:
PseudocodiTokenTypes

class CpcGenJava
extends java.lang.Object
implements PseudocodiTokenTypes

Classe que s'encarrega d'escriure en un fitxer la traduccio al Java de les instruccions del pseudocodi.

Version:
1.0 - Data: 18/06/2003
Author:
Carles Royan Salvatella

Field Summary
private  java.lang.String className
           
private  boolean isDefaultConstructor
           
private  int numIdent
           
private  java.io.BufferedWriter out
           
private  boolean verboseMode
           
private  java.lang.String version
           
 
Fields inherited from interface PseudocodiTokenTypes
ACCIO, ALGORISME, ALTRAMENT, ATRIBUTS, ATRIBUTS_CLASSE, BOOLEA, CARACTER, CAS, CERT, CLASS_DEF, CLASS_TYPE, CLASSE, COMA, COMENTARI1, COMENTARI2, CONST, CONSTRUCTOR, CORXET_DRET, CORXET_ESQ, CREAR, DE, DESTRUCTOR, DESTRUIR, DIV, DOSPUNTS, ELEMENTAL_TYPE, ENTER, EOF, ESCRIURE, ESCRIURELN, ESPAIS_BLANC, EXPONENT, FALGORISME, FALS, FATRIBUTS, FATRIBUTS_CLASSE, FCAS, FCLASSE, FCONST, FCONSTRUCTOR, FDESTRUCTOR, FER, FFUNCIO, FIMPLEMENTACIO, FINS, FINTERFICIE, FMENTRE, FMETODE, FMETODE_CLASSE, FMETODES, FMETODES_CLASSE, FPER, FSI, FUNCIO, FVAR, HERETA, IDENTIFICADOR, IMPLEMENTACIO, INTERFICIE, JO, LITERAL_CADENA, LITERAL_CARACTER, LLAVORS, LLEGIR, MEMBRE_CLASSE, MENTRE, METODE, METODE_CLASSE, METODES, METODES_CLASSE, MOD, NULL, NULL_TREE_LOOKAHEAD, NUMERO, NUMERO_ENTER, NUMERO_REAL, OP_ASSIGNACIO, OP_CAS, OP_DIFERENT, OP_DIV, OP_I, OP_IGUAL, OP_MGRAN, OP_MGRAN_IGUAL, OP_MPETIT, OP_MPETIT_IGUAL, OP_MULT, OP_NO, OP_O, OP_RESTA, OP_SUMA, PAREN_DRET, PAREN_ESQ, PAS, PER, PRIVATE, PUBLIC, PUNT, PUNTCOMA, REAL, RES, RETORNA, SALT_LINIA, SI, SUPER, SUPER_CLASS, TAULA, VAR
 
Constructor Summary
CpcGenJava()
           
CpcGenJava(java.lang.String filename, java.lang.String ver, boolean verbose)
          Constructor. filename es el nom del fitxer de sortida, ver es la versio del traductor i verbose especifica si esta activat el mode verbose.
 
Method Summary
 void checkDefaultConstructor()
          Comprova si s'ha escrit un constructor per defecte.
 void closeFile()
          Tanca el fitxer de sortida.
private  void decIdent()
          Treu identacio (text cap a l'esquerra)
 java.lang.String getExpressionCrear(int type, java.lang.String textType)
          Retorna un string amb l'expressio "crear" traduida al java
 java.lang.String getExpressionLlegir(int type)
          Retorna un String amb l'expressio llegir traduida al java.
private  java.lang.String getStringOfElementalType(int type)
          Retorna un string que representa el tipus elemental
private  void incIdent()
          Afegeix identacio cap a la dreta
 void sepaInst()
          Escriu salt de linia.
 void writeDeclaConst(java.lang.String name, int Type, java.lang.String expressio, int typeDecl)
          Declara una constant. name es el nom, type el tipus, expressio el seu valor i typeDecl el modificador d'acces.
 void writeDeclaVar(java.lang.String name, int idType, int type, int dimension, java.lang.String typeClassName, int typeDecl)
          Escriu la declaracio d'una variable. name es el Identificador, idType el tipus de ident., type el tipus de variale, typeClassName es el nom de la classe, typeDecl es el modificador d'acces.
 void writeEndBlock()
          Escriu el final d'un bloc de codi
private  void writeFileHead()
          Escriu la capzalera del fitxer traduit.
private  void writeFuncParams(ParamInfo[] params, int numParams)
          Escriu en el fitxer els parametres d'un metode
 void writeHeadAccio(int funcType, java.lang.String name, ParamInfo[] params, int numParams)
          Escriu la declaracio d'una accio (VOID)
 void writeHeadFuncio(int funcType, java.lang.String name, ParamInfo[] params, int numParams, ParamInfo retParam)
          Escriu la declaracio d'una funcio que retorna un valor (retParam).
 void writeHeadOfClass(java.lang.String cName, java.lang.String superClassName)
          Escriu la declaracio de la classe, i declara variables auxiliars per poder fer E/S.
 void writeHeadOfMain()
          Escriu la declaracio de la funcio principal (main) en java.
private  void writeIdent()
          Escriu la identacio en el fitxer de sortida
 void writeInstAltrament()
          Escriu en el fitxer la instrucció altrament (ELSE)
 void writeInstAssig(java.lang.String varName, java.lang.String expression)
          Escriu la inst d'assignacio
 void writeInstCasAltres(java.lang.String expression)
          Escriu en el fitxer la instrucció "cas" (les cond. seguents a la primera) com a ELSE IF
 void writeInstCasPrimer(java.lang.String expression)
          Escriu en el fitxer la instrucció "cas" (la primera condicio) com a IF
 void writeInstCrida(java.lang.String crida)
          Escriu una crida a una accio/funcio
 void writeInstDestruir(java.lang.String varName)
          Escriu la instruccio destruir ID.
 void writeInstEscriure(java.lang.String expression)
          Escriu "escriure" utilitzant la classe d'entrada i sortida
 void writeInstEscriureln(java.lang.String expression)
          Escriu "escriureln" utilitzant la classe d'entrada i sortida
 void writeInstHeadMentre(java.lang.String expression)
          Escriu la capzalera de la inst. mentre, traduida com a while.
 void writeInstPer(java.lang.String indexVar, java.lang.String iniExp, java.lang.String endExp, java.lang.String pas)
          Escriu la inst. per com a FOR
 void writeInstRes()
          Escriu la instruccio res com un comentari
 void writeInstRetorna(java.lang.String varName)
          Escriu la instruccio retorna (RETURN)
 void writeInstSi(java.lang.String expression)
          Escriu en el fitxer la instrucció "si" com a IF
private  void writeValIni(int idType, int type, int dimension)
          Escriu el valor inicial de la variable.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

out

private java.io.BufferedWriter out

version

private java.lang.String version

className

private java.lang.String className

numIdent

private int numIdent

isDefaultConstructor

private boolean isDefaultConstructor

verboseMode

private boolean verboseMode
Constructor Detail

CpcGenJava

public CpcGenJava()

CpcGenJava

public CpcGenJava(java.lang.String filename,
                  java.lang.String ver,
                  boolean verbose)
Constructor. filename es el nom del fitxer de sortida, ver es la versio del traductor i verbose especifica si esta activat el mode verbose.

Method Detail

closeFile

public void closeFile()
Tanca el fitxer de sortida.


checkDefaultConstructor

public void checkDefaultConstructor()
Comprova si s'ha escrit un constructor per defecte. En cas negatiu l'escriu ara.


writeFileHead

private void writeFileHead()
Escriu la capzalera del fitxer traduit.


writeHeadOfMain

public void writeHeadOfMain()
Escriu la declaracio de la funcio principal (main) en java.


writeHeadOfClass

public void writeHeadOfClass(java.lang.String cName,
                             java.lang.String superClassName)
Escriu la declaracio de la classe, i declara variables auxiliars per poder fer E/S.


getStringOfElementalType

private java.lang.String getStringOfElementalType(int type)
Retorna un string que representa el tipus elemental


getExpressionCrear

public java.lang.String getExpressionCrear(int type,
                                           java.lang.String textType)
Retorna un string amb l'expressio "crear" traduida al java


getExpressionLlegir

public java.lang.String getExpressionLlegir(int type)
Retorna un String amb l'expressio llegir traduida al java. Es fa us de la classe d'entrada i sortida


writeEndBlock

public void writeEndBlock()
Escriu el final d'un bloc de codi


writeDeclaVar

public void writeDeclaVar(java.lang.String name,
                          int idType,
                          int type,
                          int dimension,
                          java.lang.String typeClassName,
                          int typeDecl)
Escriu la declaracio d'una variable. name es el Identificador, idType el tipus de ident., type el tipus de variale, typeClassName es el nom de la classe, typeDecl es el modificador d'acces.


writeValIni

private void writeValIni(int idType,
                         int type,
                         int dimension)
Escriu el valor inicial de la variable. Totes les variables tenen un valor inicial per defecte.


writeDeclaConst

public void writeDeclaConst(java.lang.String name,
                            int Type,
                            java.lang.String expressio,
                            int typeDecl)
Declara una constant. name es el nom, type el tipus, expressio el seu valor i typeDecl el modificador d'acces.


writeHeadAccio

public void writeHeadAccio(int funcType,
                           java.lang.String name,
                           ParamInfo[] params,
                           int numParams)
Escriu la declaracio d'una accio (VOID)


writeHeadFuncio

public void writeHeadFuncio(int funcType,
                            java.lang.String name,
                            ParamInfo[] params,
                            int numParams,
                            ParamInfo retParam)
Escriu la declaracio d'una funcio que retorna un valor (retParam).


writeFuncParams

private void writeFuncParams(ParamInfo[] params,
                             int numParams)
Escriu en el fitxer els parametres d'un metode


writeInstHeadMentre

public void writeInstHeadMentre(java.lang.String expression)
Escriu la capzalera de la inst. mentre, traduida com a while.


writeInstCrida

public void writeInstCrida(java.lang.String crida)
Escriu una crida a una accio/funcio


writeInstEscriure

public void writeInstEscriure(java.lang.String expression)
Escriu "escriure" utilitzant la classe d'entrada i sortida


writeInstEscriureln

public void writeInstEscriureln(java.lang.String expression)
Escriu "escriureln" utilitzant la classe d'entrada i sortida


writeInstPer

public void writeInstPer(java.lang.String indexVar,
                         java.lang.String iniExp,
                         java.lang.String endExp,
                         java.lang.String pas)
Escriu la inst. per com a FOR


writeInstSi

public void writeInstSi(java.lang.String expression)
Escriu en el fitxer la instrucció "si" com a IF


writeInstAltrament

public void writeInstAltrament()
Escriu en el fitxer la instrucció altrament (ELSE)


writeInstCasPrimer

public void writeInstCasPrimer(java.lang.String expression)
Escriu en el fitxer la instrucció "cas" (la primera condicio) com a IF


writeInstCasAltres

public void writeInstCasAltres(java.lang.String expression)
Escriu en el fitxer la instrucció "cas" (les cond. seguents a la primera) com a ELSE IF


writeInstAssig

public void writeInstAssig(java.lang.String varName,
                           java.lang.String expression)
Escriu la inst d'assignacio


writeInstRetorna

public void writeInstRetorna(java.lang.String varName)
Escriu la instruccio retorna (RETURN)


writeInstDestruir

public void writeInstDestruir(java.lang.String varName)

Escriu la instruccio destruir ID.

El que es fa es igualar a null, de tal manera que el GC s'encarregara de lliberar l'espai de mem.


writeInstRes

public void writeInstRes()
Escriu la instruccio res com un comentari


incIdent

private void incIdent()
Afegeix identacio cap a la dreta


decIdent

private void decIdent()
Treu identacio (text cap a l'esquerra)


writeIdent

private void writeIdent()
Escriu la identacio en el fitxer de sortida


sepaInst

public void sepaInst()
Escriu salt de linia.