Browse files

Atualizando

  • Loading branch information...
1 parent a5b5cfc commit 39ed9b2cca07e2f565cb445abba396148496ac97 @tellesnobrega committed May 10, 2012
Showing with 21,961 additions and 0 deletions.
  1. +8,398 −0 Ocl-Assembly-Compiler/Profe.xml
  2. +8 −0 Ocl-Assembly-Compiler/exemplos.ocl
  3. BIN Ocl-Assembly-Compiler/lib/jdom-1.1.jar
  4. +8,549 −0 Ocl-Assembly-Compiler/profe_modificado.xml
  5. +239 −0 Ocl-Assembly-Compiler/src/codigoGerado/AnalisadorSemantico.java
  6. +12 −0 Ocl-Assembly-Compiler/src/codigoGerado/Constant.java
  7. +22 −0 Ocl-Assembly-Compiler/src/codigoGerado/Gerador.java
  8. +131 −0 Ocl-Assembly-Compiler/src/codigoGerado/parser/Atributo.java
  9. +225 −0 Ocl-Assembly-Compiler/src/codigoGerado/parser/Classe.java
  10. +133 −0 Ocl-Assembly-Compiler/src/codigoGerado/parser/Colecao.java
  11. +66 −0 Ocl-Assembly-Compiler/src/codigoGerado/parser/Constantes.java
  12. +86 −0 Ocl-Assembly-Compiler/src/codigoGerado/parser/Elemento.java
  13. +44 −0 Ocl-Assembly-Compiler/src/codigoGerado/parser/Enumeration.java
  14. +239 −0 Ocl-Assembly-Compiler/src/codigoGerado/parser/GerenciadorEntidades.java
  15. +52 −0 Ocl-Assembly-Compiler/src/codigoGerado/parser/GerenciadorPacotes.java
  16. +151 −0 Ocl-Assembly-Compiler/src/codigoGerado/parser/Metodo.java
  17. +105 −0 Ocl-Assembly-Compiler/src/codigoGerado/parser/Pacote.java
  18. +27 −0 Ocl-Assembly-Compiler/src/codigoGerado/parser/Parametro.java
  19. +78 −0 Ocl-Assembly-Compiler/src/codigoGerado/parser/TradutorXMI.java
  20. +6 −0 Ocl-Assembly-Compiler/src/codigoGerado/parser/Util.java
  21. +28 −0 Ocl-Assembly-Compiler/src/codigoGerado/parser/VisibilidadeKind.java
  22. +19 −0 Ocl-Assembly-Compiler/src/codigoGerado/semantico/ActualParameterListClass.java
  23. +17 −0 Ocl-Assembly-Compiler/src/codigoGerado/semantico/AddOperatorClass.java
  24. +32 −0 Ocl-Assembly-Compiler/src/codigoGerado/semantico/AdditiveExpressionClass.java
  25. +25 −0 Ocl-Assembly-Compiler/src/codigoGerado/semantico/BooleanClass.java
  26. +17 −0 Ocl-Assembly-Compiler/src/codigoGerado/semantico/ClassifierContextClass.java
  27. +17 −0 Ocl-Assembly-Compiler/src/codigoGerado/semantico/CollectionItensClass.java
  28. +26 −0 Ocl-Assembly-Compiler/src/codigoGerado/semantico/CollectionKindClass.java
  29. +17 −0 Ocl-Assembly-Compiler/src/codigoGerado/semantico/ConstraintClass.java
  30. +17 −0 Ocl-Assembly-Compiler/src/codigoGerado/semantico/ContextDeclarationClass.java
  31. +25 −0 Ocl-Assembly-Compiler/src/codigoGerado/semantico/DeclaratorAuxClass.java
  32. +17 −0 Ocl-Assembly-Compiler/src/codigoGerado/semantico/DeclaratorClass.java
  33. +17 −0 Ocl-Assembly-Compiler/src/codigoGerado/semantico/ExpressionClass.java
  34. +20 −0 Ocl-Assembly-Compiler/src/codigoGerado/semantico/IfExpressionClass.java
  35. +20 −0 Ocl-Assembly-Compiler/src/codigoGerado/semantico/LiteralClass.java
  36. +20 −0 Ocl-Assembly-Compiler/src/codigoGerado/semantico/LiteralCollectionClass.java
  37. +17 −0 Ocl-Assembly-Compiler/src/codigoGerado/semantico/LogicalExpressionClass.java
  38. +14 −0 Ocl-Assembly-Compiler/src/codigoGerado/semantico/LogicalOperatorClass.java
  39. +17 −0 Ocl-Assembly-Compiler/src/codigoGerado/semantico/ManyActualParameterListClass.java
  40. +17 −0 Ocl-Assembly-Compiler/src/codigoGerado/semantico/ManyDeclaratorClass.java
  41. +17 −0 Ocl-Assembly-Compiler/src/codigoGerado/semantico/ManyLogicalExpressionClass.java
  42. +17 −0 Ocl-Assembly-Compiler/src/codigoGerado/semantico/ManyPostfixExpressionClass.java
  43. +17 −0 Ocl-Assembly-Compiler/src/codigoGerado/semantico/ManySelfPostfixExpressionClass.java
  44. +26 −0 Ocl-Assembly-Compiler/src/codigoGerado/semantico/MultiplicativeExpressionClass.java
  45. +18 −0 Ocl-Assembly-Compiler/src/codigoGerado/semantico/MultiplyOperatorClass.java
  46. +17 −0 Ocl-Assembly-Compiler/src/codigoGerado/semantico/NumberClass.java
  47. +17 −0 Ocl-Assembly-Compiler/src/codigoGerado/semantico/OCLExpressionClass.java
  48. +19 −0 Ocl-Assembly-Compiler/src/codigoGerado/semantico/OCLExpressionsClass.java
  49. +17 −0 Ocl-Assembly-Compiler/src/codigoGerado/semantico/OPTNameClass.java
  50. +17 −0 Ocl-Assembly-Compiler/src/codigoGerado/semantico/OPTPropertyCallClass.java
  51. +17 −0 Ocl-Assembly-Compiler/src/codigoGerado/semantico/OPTRelationalExpressionClass.java
  52. +47 −0 Ocl-Assembly-Compiler/src/codigoGerado/semantico/OptAdditiveExpressionClass.java
  53. +17 −0 Ocl-Assembly-Compiler/src/codigoGerado/semantico/PathNameClass.java
  54. +20 −0 Ocl-Assembly-Compiler/src/codigoGerado/semantico/PostfixExpressionClass.java
  55. +37 −0 Ocl-Assembly-Compiler/src/codigoGerado/semantico/PrimaryExpressionClass.java
  56. +20 −0 Ocl-Assembly-Compiler/src/codigoGerado/semantico/PropertyCallClass.java
  57. +20 −0 Ocl-Assembly-Compiler/src/codigoGerado/semantico/PropertyCallColClass.java
  58. +17 −0 Ocl-Assembly-Compiler/src/codigoGerado/semantico/PropertyCallParametersClass.java
  59. +17 −0 Ocl-Assembly-Compiler/src/codigoGerado/semantico/PropertyCallParametersColClass.java
  60. +17 −0 Ocl-Assembly-Compiler/src/codigoGerado/semantico/RelationalExpressionClass.java
  61. +14 −0 Ocl-Assembly-Compiler/src/codigoGerado/semantico/RelationalOperatorClass.java
  62. +17 −0 Ocl-Assembly-Compiler/src/codigoGerado/semantico/SimpleTypeSpecifierClass.java
  63. +17 −0 Ocl-Assembly-Compiler/src/codigoGerado/semantico/StereotypeClass.java
  64. +32 −0 Ocl-Assembly-Compiler/src/codigoGerado/semantico/UnaryExpressionClass.java
  65. +14 −0 Ocl-Assembly-Compiler/src/codigoGerado/semantico/UnaryOperatorClass.java
  66. +239 −0 Ocl-Assembly-Compiler/src/gerador/AnalisadorSemantico.java
  67. +131 −0 Ocl-Assembly-Compiler/src/gerador/parser/Atributo.java
  68. +225 −0 Ocl-Assembly-Compiler/src/gerador/parser/Classe.java
  69. +133 −0 Ocl-Assembly-Compiler/src/gerador/parser/Colecao.java
  70. +66 −0 Ocl-Assembly-Compiler/src/gerador/parser/Constantes.java
  71. +86 −0 Ocl-Assembly-Compiler/src/gerador/parser/Elemento.java
  72. +44 −0 Ocl-Assembly-Compiler/src/gerador/parser/Enumeration.java
  73. +239 −0 Ocl-Assembly-Compiler/src/gerador/parser/GerenciadorEntidades.java
  74. +52 −0 Ocl-Assembly-Compiler/src/gerador/parser/GerenciadorPacotes.java
  75. +151 −0 Ocl-Assembly-Compiler/src/gerador/parser/Metodo.java
  76. +105 −0 Ocl-Assembly-Compiler/src/gerador/parser/Pacote.java
  77. +27 −0 Ocl-Assembly-Compiler/src/gerador/parser/Parametro.java
  78. +78 −0 Ocl-Assembly-Compiler/src/gerador/parser/TradutorXMI.java
  79. +6 −0 Ocl-Assembly-Compiler/src/gerador/parser/Util.java
  80. +28 −0 Ocl-Assembly-Compiler/src/gerador/parser/VisibilidadeKind.java
  81. +19 −0 Ocl-Assembly-Compiler/src/gerador/semantico/ActualParameterListClass.java
  82. +17 −0 Ocl-Assembly-Compiler/src/gerador/semantico/AddOperatorClass.java
  83. +32 −0 Ocl-Assembly-Compiler/src/gerador/semantico/AdditiveExpressionClass.java
  84. +25 −0 Ocl-Assembly-Compiler/src/gerador/semantico/BooleanClass.java
  85. +17 −0 Ocl-Assembly-Compiler/src/gerador/semantico/ClassifierContextClass.java
  86. +17 −0 Ocl-Assembly-Compiler/src/gerador/semantico/CollectionItensClass.java
  87. +26 −0 Ocl-Assembly-Compiler/src/gerador/semantico/CollectionKindClass.java
  88. +17 −0 Ocl-Assembly-Compiler/src/gerador/semantico/ConstraintClass.java
  89. +17 −0 Ocl-Assembly-Compiler/src/gerador/semantico/ContextDeclarationClass.java
  90. +25 −0 Ocl-Assembly-Compiler/src/gerador/semantico/DeclaratorAuxClass.java
  91. +17 −0 Ocl-Assembly-Compiler/src/gerador/semantico/DeclaratorClass.java
  92. +17 −0 Ocl-Assembly-Compiler/src/gerador/semantico/ExpressionClass.java
  93. +20 −0 Ocl-Assembly-Compiler/src/gerador/semantico/IfExpressionClass.java
  94. +20 −0 Ocl-Assembly-Compiler/src/gerador/semantico/LiteralClass.java
  95. +20 −0 Ocl-Assembly-Compiler/src/gerador/semantico/LiteralCollectionClass.java
  96. +17 −0 Ocl-Assembly-Compiler/src/gerador/semantico/LogicalExpressionClass.java
  97. +14 −0 Ocl-Assembly-Compiler/src/gerador/semantico/LogicalOperatorClass.java
  98. +17 −0 Ocl-Assembly-Compiler/src/gerador/semantico/ManyActualParameterListClass.java
  99. +17 −0 Ocl-Assembly-Compiler/src/gerador/semantico/ManyDeclaratorClass.java
  100. +17 −0 Ocl-Assembly-Compiler/src/gerador/semantico/ManyLogicalExpressionClass.java
  101. +17 −0 Ocl-Assembly-Compiler/src/gerador/semantico/ManyPostfixExpressionClass.java
  102. +17 −0 Ocl-Assembly-Compiler/src/gerador/semantico/ManySelfPostfixExpressionClass.java
  103. +26 −0 Ocl-Assembly-Compiler/src/gerador/semantico/MultiplicativeExpressionClass.java
  104. +18 −0 Ocl-Assembly-Compiler/src/gerador/semantico/MultiplyOperatorClass.java
  105. +17 −0 Ocl-Assembly-Compiler/src/gerador/semantico/NumberClass.java
  106. +17 −0 Ocl-Assembly-Compiler/src/gerador/semantico/OCLExpressionClass.java
  107. +19 −0 Ocl-Assembly-Compiler/src/gerador/semantico/OCLExpressionsClass.java
  108. +17 −0 Ocl-Assembly-Compiler/src/gerador/semantico/OPTNameClass.java
  109. +17 −0 Ocl-Assembly-Compiler/src/gerador/semantico/OPTPropertyCallClass.java
  110. +17 −0 Ocl-Assembly-Compiler/src/gerador/semantico/OPTRelationalExpressionClass.java
  111. +47 −0 Ocl-Assembly-Compiler/src/gerador/semantico/OptAdditiveExpressionClass.java
  112. +17 −0 Ocl-Assembly-Compiler/src/gerador/semantico/PathNameClass.java
  113. +20 −0 Ocl-Assembly-Compiler/src/gerador/semantico/PostfixExpressionClass.java
  114. +37 −0 Ocl-Assembly-Compiler/src/gerador/semantico/PrimaryExpressionClass.java
  115. +20 −0 Ocl-Assembly-Compiler/src/gerador/semantico/PropertyCallClass.java
  116. +20 −0 Ocl-Assembly-Compiler/src/gerador/semantico/PropertyCallColClass.java
  117. +17 −0 Ocl-Assembly-Compiler/src/gerador/semantico/PropertyCallParametersClass.java
  118. +17 −0 Ocl-Assembly-Compiler/src/gerador/semantico/PropertyCallParametersColClass.java
  119. +17 −0 Ocl-Assembly-Compiler/src/gerador/semantico/RelationalExpressionClass.java
  120. +14 −0 Ocl-Assembly-Compiler/src/gerador/semantico/RelationalOperatorClass.java
  121. +17 −0 Ocl-Assembly-Compiler/src/gerador/semantico/SimpleTypeSpecifierClass.java
  122. +17 −0 Ocl-Assembly-Compiler/src/gerador/semantico/StereotypeClass.java
  123. +32 −0 Ocl-Assembly-Compiler/src/gerador/semantico/UnaryExpressionClass.java
  124. +14 −0 Ocl-Assembly-Compiler/src/gerador/semantico/UnaryOperatorClass.java
View
8,398 Ocl-Assembly-Compiler/Profe.xml
8,398 additions, 0 deletions not shown because the diff is too large. Please use a local Git client to view these changes.
View
8 Ocl-Assembly-Compiler/exemplos.ocl
@@ -0,0 +1,8 @@
+context ProgramaFidelidade inv inv_01:
+self.socio.conta.pontos > 0
+
+context ProgramaFidelidade inv inv_02:
+self.socio.socio->exists(masculino)
+
+context Conta inv inv_03:
+self.transacoes->select(pontos > 12)->forAll(self.transacoes.cartao.valido)
View
BIN Ocl-Assembly-Compiler/lib/jdom-1.1.jar
Binary file not shown.
View
8,549 Ocl-Assembly-Compiler/profe_modificado.xml
8,549 additions, 0 deletions not shown because the diff is too large. Please use a local Git client to view these changes.
View
239 Ocl-Assembly-Compiler/src/codigoGerado/AnalisadorSemantico.java
@@ -0,0 +1,239 @@
+package gerador;
+
+import gerador.parser.Classe;
+import gerador.parser.Colecao;
+import gerador.parser.GerenciadorEntidades;
+import gerador.semantico.PrimaryExpressionClass;
+import gerador.semantico.PropertyCallClass;
+import gerador.semantico.PropertyCallColClass;
+
+import java.io.FileWriter;
+import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Stack;
+
+public class AnalisadorSemantico {
+
+ private static AnalisadorSemantico instance;
+ private GerenciadorEntidades gerenciador = GerenciadorEntidades
+ .getInstance();
+
+ private Stack<Classe> contextos = new Stack<Classe>();
+ private Stack<String> variaveis = new Stack<String>();
+ private Stack<String> fluxos = new Stack<String>();
+ private Stack<Boolean> isFluxos = new Stack<Boolean>();
+ private Map<String, Classe> metodosColecao = new HashMap<String, Classe>();
+ private String logicalOperator;
+ private String alias;
+ private int contador = 1;
+ private boolean fluxoComum = true;
+ public String fluxoAlternativo;
+ private String fluxo;
+ public String ultimaOperacaoSobreColecao;
+
+ public static FileWriter writer;
+ public static PrintWriter saida;
+
+ private AnalisadorSemantico() {
+ populaMetodosColecao();
+ }
+
+ private void populaMetodosColecao() {
+ metodosColecao.put("size", gerenciador.getClasse("Number"));
+ metodosColecao.put("exists", gerenciador.getClasse("Boolean"));
+ metodosColecao.put("notEmpty", gerenciador.getClasse("Boolean"));
+ metodosColecao.put("forAll", gerenciador.getClasse("Boolean"));
+ metodosColecao.put("select", gerenciador.getClasse(""));
+ metodosColecao.put("isEmpty", gerenciador.getClasse("Boolean"));
+ metodosColecao.put("isUnique", gerenciador.getClasse("Boolean"));
+ metodosColecao.put("includes", gerenciador.getClasse("Boolean"));
+ metodosColecao.put("includesAll", gerenciador.getClasse("Boolean"));
+ metodosColecao.put("first", gerenciador.getClasse(""));
+ metodosColecao.put("last", gerenciador.getClasse(""));
+ metodosColecao.put("excludes", gerenciador.getClasse("Boolean"));
+ metodosColecao.put("excludesAll", gerenciador.getClasse("Boolean"));
+ }
+
+ public void setAlias(String alias) {
+ this.alias = alias;
+ }
+
+ public String getAlias() {
+ return this.alias;
+ }
+
+ public Stack<Classe> getContextos() {
+ return this.contextos;
+ }
+
+ public static AnalisadorSemantico getInstance() {
+ if (instance == null)
+ instance = new AnalisadorSemantico();
+ return instance;
+ }
+
+ public void setVariavel() {
+ if (variaveis.isEmpty()) {
+ variaveis.add("i1");
+ } else {
+ variaveis.add("i" + (Integer.parseInt(variaveis.peek().split("i")[1]) + 1));
+ }
+ }
+
+ public String getVariavel() {
+ return variaveis.peek();
+ }
+
+ public void retrocedeVariavel() {
+ variaveis.pop();
+ }
+
+ public void setContexto() {
+ Classe contexto = AnalisadorSemantico.getInstance().getContextos().get(0);
+ if (contexto == null) {
+ throw new RuntimeException("Erro no contexto");
+ }
+ contextos.add(contexto);
+ }
+
+ public void setContexto(int linha, int coluna, String nome) {
+ Classe contexto = gerenciador.getClasse(nome);
+ if (contexto == null) {
+ throw new RuntimeException("O contexto " + nome
+ + AnalisadorSemantico.identificaErro(linha, coluna)
+ + "nao existe.");
+ }
+ contextos.add(contexto);
+ }
+
+ public void setContexto(int linha, int coluna, Object o) {
+ Classe contexto;
+ if (o instanceof PropertyCallClass) {
+ Classe classe = ((PropertyCallClass) o).getTipo();
+ if (classe.ehColecao()) {
+ contexto = (Colecao) classe;
+ } else {
+ contexto = gerenciador.getClasse(classe.getNome());
+ }
+ } else if (o instanceof PropertyCallColClass) {
+ Classe classe = ((PropertyCallColClass) o).getTipo();
+ if (classe.ehColecao()) {
+ contexto = (Colecao) classe;
+ } else {
+ contexto = gerenciador.getClasse(classe.getNome());
+ }
+ } else {
+ Classe classe = ((PrimaryExpressionClass) o).getTipo();
+ if (classe.ehColecao()) {
+ contexto = (Colecao) classe;
+ } else {
+ contexto = gerenciador.getClasse(classe.getNome());
+ }
+
+ }
+ if (contexto == null) {
+ throw new RuntimeException("O contexto "
+ + AnalisadorSemantico.identificaErro(linha, coluna)
+ + "nao existe.");
+ }
+
+ contextos.add(contexto);
+ }
+
+ public void retrocedeContexto() {
+ if (!contextos.isEmpty())
+ contextos.pop();
+ }
+
+ public Classe getContexto() {
+ return contextos.peek();
+ }
+
+ public GerenciadorEntidades getGerenciador() {
+ return gerenciador;
+ }
+
+ public static String identificaErro(int linha, int coluna) {
+ return " (linha: " + (linha + 1) + ", coluna " + (coluna + 1) + ") ";
+ }
+
+ public boolean temMetodoColecao(String nome) {
+ return metodosColecao.keySet().contains(nome);
+ }
+
+ public Map<String, Classe> getMetodosColecao() {
+ return metodosColecao;
+ }
+
+ public void setMetodosColecao(Map<String, Classe> metodosColecao) {
+ this.metodosColecao = metodosColecao;
+ }
+
+ public void setLogicalOperator(String operador) {
+ this.logicalOperator = operador;
+ }
+
+ public String getLogicalOperator() {
+ return logicalOperator;
+ }
+
+ public boolean isFluxoComum() {
+ return this.isFluxos .peek();
+ }
+
+ public void empilhaFluxoComum(boolean fluxoComum) {
+ this.isFluxos.push(fluxoComum);
+ }
+
+ public void desempilhaFluxoComum() {
+ if (isFluxos.isEmpty())
+ this.isFluxos.pop();
+ }
+
+ public void setFluxoAlternativo(String fluxoAlternativo) {
+ if (this.fluxoAlternativo == null)
+ this.fluxoAlternativo = fluxoAlternativo;
+
+ }
+
+ public String getFluxoAlternativo() {
+ return fluxoAlternativo;
+ }
+
+ public void iniciaFluxoAlternativo() {
+ this.fluxo = "";
+ }
+
+ public void empilhaFluxo() {
+ this.fluxos.push(this.fluxo);
+ }
+
+ public void desempilhaFluxo() {
+ if (!fluxos.isEmpty())
+ this.fluxos.pop();
+ }
+
+ public String getFluxoAtual() {
+ return this.fluxos.peek();
+ }
+
+ public Stack<String> getFluxos() {
+ return fluxos;
+ }
+
+ public void setFluxos(Stack<String> fluxos) {
+ this.fluxos = fluxos;
+ }
+
+ public String getFluxo() {
+ return fluxo;
+ }
+
+ public void setFluxo(String fluxo) {
+ this.fluxo += fluxo;
+ }
+
+}
View
12 Ocl-Assembly-Compiler/src/codigoGerado/Constant.java
@@ -0,0 +1,12 @@
+package gerador;
+
+public class Constant {
+ private static final String FILE_SEPARATOR = System.getProperty("file.separator");
+
+ public static final String ANALISADOR_LEXICO_PATH = "src" + FILE_SEPARATOR + "analisador" + FILE_SEPARATOR + "AnalisadorLexico.flex";
+ public static final String ANALISADOR_SINTATICO_PATH = "src" + FILE_SEPARATOR + "analisador" + FILE_SEPARATOR + "AnalisadorSintatico.cup";
+
+ public static final String CODIGO_GERADO_PATH = "src" + FILE_SEPARATOR + "codigoGerado";
+
+ public static final String EXEMPLO_PATH = "src" + FILE_SEPARATOR + "exemplo" + FILE_SEPARATOR;
+}
View
22 Ocl-Assembly-Compiler/src/codigoGerado/Gerador.java
@@ -0,0 +1,22 @@
+package gerador;
+
+import java.io.IOException;
+
+import java_cup.internal_error;
+
+public class Gerador {
+ public static void gerarAnalisadorLexico() {
+ String[] path = {Constant.ANALISADOR_LEXICO_PATH, "-d", Constant.CODIGO_GERADO_PATH};
+ JFlex.Main.main(path);
+ }
+
+ public static void gerarAnalisadorSintatico() throws internal_error, IOException, Exception {
+ String[] path = {"-package", "codigoGerado", "-destdir", Constant.CODIGO_GERADO_PATH, Constant.ANALISADOR_SINTATICO_PATH};
+ java_cup.Main.main(path);
+ }
+
+ public static void main(String[] args) throws internal_error, IOException, Exception {
+ gerarAnalisadorLexico();
+ gerarAnalisadorSintatico();
+ }
+}
View
131 Ocl-Assembly-Compiler/src/codigoGerado/parser/Atributo.java
@@ -0,0 +1,131 @@
+package gerador.parser;
+
+import java.util.List;
+
+import org.jdom.Attribute;
+import org.jdom.Element;
+
+public class Atributo extends Elemento {
+ private boolean estatico;
+ private VisibilidadeKind visibilidade;
+ private String nome;
+ private Classe tipo;
+
+ public Atributo(String nome, Classe tipo, VisibilidadeKind visibilidade) {
+ this.nome = nome;
+ this.tipo = tipo;
+ this.visibilidade = visibilidade;
+ }
+
+ public Atributo(Element elemento, List<Classe> classes)
+ throws Exception {
+ super(elemento);
+
+ Attribute attrName = elemento.getAttribute("name");
+ Attribute attrVis = elemento.getAttribute("visibility");
+ Attribute attrType = elemento.getAttribute("type");
+
+ if (attrName != null) {
+ this.setNome(attrName.getValue());
+ }
+ this.setVisibilidade(attrVis.getValue());
+ this.traduz(attrType, classes);
+
+ if (attrName != null && !attrName.getValue().trim().isEmpty()) {
+ this.setNome(attrName.getValue());
+ } else {
+ this.setNome(TradutorXMI.getNomeAtributoPadraoUML(this.getTipo()));
+ }
+ }
+
+ public boolean ehEstatico() {
+ return estatico;
+ }
+
+ public void setEstatico(boolean estatico) {
+ this.estatico = estatico;
+ }
+
+ public void setVisibilidade(String visibilidade) {
+ this.visibilidade = VisibilidadeKind.getByDescricao(visibilidade);
+ }
+
+ public VisibilidadeKind getVisibilidade() {
+ return visibilidade;
+ }
+
+ public void setTipo(Classe tipo) {
+ this.tipo = tipo;
+ }
+
+ public Classe getTipo() {
+ return tipo;
+ }
+
+ public void setNome(String nome) {
+ this.nome = nome;
+ }
+
+ public String getNome() {
+ return nome;
+ }
+
+ private void traduz(Attribute attrType, List<Classe> classes)
+ throws Exception {
+ if (attrType == null) {
+ String value = "";
+
+ Element child = element.getChild("type");
+ Attribute attribute = child.getAttribute("href");
+ String attrValue = attribute.getValue();
+ int index = attrValue.indexOf("#");
+ value = attrValue.substring(index + 1, attrValue.length());
+
+ if (value.equals("Double") || value.equals("Float")) {
+ value = "Real";
+ }
+
+ Classe classe = TradutorXMI.getClassePorId(classes, value);
+ this.setTipo(classe);
+ } else {
+ Classe classe = TradutorXMI.getClassePorId(classes,
+ attrType.getValue());
+
+ if (classe != null) {
+ this.setTipo(classe);
+
+ Element lowerValue = element
+ .getChild(Constantes.LOWER_VALUE);
+ Element upperValue = element
+ .getChild(Constantes.UPPER_VALUE);
+
+ if (lowerValue != null) {
+ Attribute lowerValueAtt = lowerValue
+ .getAttribute(Constantes.LOWER_VALUE_ATTR);
+ if (lowerValueAtt != null) {
+ if (lowerValueAtt.getValue().equals(
+ Constantes.MANY)
+ || Integer.valueOf(lowerValueAtt.getValue()) > 1) {
+ setTipo(new Colecao(classe));
+ }
+ }
+ }
+
+ if (upperValue != null) {
+ Attribute upperValueAtt = upperValue
+ .getAttribute(Constantes.UPPER_VALUE_ATTR);
+
+ if (upperValueAtt != null) {
+ if (upperValueAtt.getValue().equals(
+ Constantes.MANY)
+ || Integer.valueOf(upperValueAtt.getValue()) > 1) {
+ this.setTipo(new Colecao(classe));
+ }
+ }
+ }
+ } else {
+ throw new Exception("Elemento nao encontrado.");
+ }
+ }
+ }
+}
View
225 Ocl-Assembly-Compiler/src/codigoGerado/parser/Classe.java
@@ -0,0 +1,225 @@
+package gerador.parser;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.jdom.Attribute;
+import org.jdom.Element;
+
+public class Classe extends Elemento {
+ private Classe classeMae;
+
+ protected boolean abstrata;
+
+ protected String nome;
+ protected VisibilidadeKind visibilidade;
+ protected Map<String, Atributo> atributos;
+ protected Map<String, Metodo> metodos;
+
+ public Classe(Element element) throws Exception {
+ super(element);
+
+ this.atributos = new HashMap<String, Atributo>();
+ this.metodos = new HashMap<String, Metodo>();
+
+ Attribute attrName = element.getAttribute("name");
+ Attribute attrVis = element.getAttribute("visibility");
+
+ setNome(attrName.getValue());
+ setVisibilidade(attrVis.getValue());
+ }
+
+ public Classe(String nome) {
+ super(nome);
+
+ this.atributos = new HashMap<String, Atributo>();
+ this.metodos = new HashMap<String, Metodo>();
+
+ this.nome = nome;
+ this.visibilidade = VisibilidadeKind.PUBLIC;
+ }
+
+ public boolean ehColecao() {
+ return false;
+ }
+
+ public List<Atributo> getAtributos() {
+ return new ArrayList<Atributo>(atributos.values());
+ }
+
+ public List<Metodo> getMetodos() {
+ return new ArrayList<Metodo>(metodos.values());
+ }
+
+ public void setVisibilidade(String visibilidade) {
+ this.visibilidade = VisibilidadeKind.getByDescricao(visibilidade);
+ }
+
+ public void addAtributo(Atributo atributo) throws Exception {
+ if (atributos.containsKey(atributo.getNome())) {
+ throw new Exception("Atributo " + atributo.getNome()
+ + " ja existente na classe " + nome + "!");
+ }
+ atributos.put(atributo.getNome(), atributo);
+ }
+
+ public Atributo getAtributo(String nome) {
+ Atributo atributo = this.atributos.get(nome);
+ if (atributo != null)
+ return atributo;
+ if (classeMae != null)
+ atributo = classeMae.getAtributo(nome);
+ if (atributo != null
+ && atributo.getVisibilidade().equals(VisibilidadeKind.PRIVATE))
+ atributo = null;
+ return atributo;
+ }
+
+ public void addMetodo(Metodo metodo) throws Exception {
+ if (metodos.containsKey(metodo.getNome())) {
+ throw new Exception("Metodo " + metodo.getNome()
+ + " ja existente na classe " + nome + "!");
+ }
+ metodos.put(metodo.getNome(), metodo);
+ }
+
+ public Metodo getMetodo(String nome) {
+ Metodo metodo = metodos.get(nome);
+ if (metodo != null)
+ return metodo;
+ if (classeMae != null)
+ metodo = classeMae.getMetodo(nome);
+ if (metodo != null
+ && metodo.getVisibilidade().equals(VisibilidadeKind.PRIVATE))
+ metodo = null;
+ return metodo;
+ }
+
+ public boolean isTypeOf(Classe outra) {
+ return existeAncestralEmComum(this, outra);
+ }
+
+ public void setNome(String nome) {
+ this.nome = nome;
+ }
+
+ public String getNome() {
+ return nome;
+ }
+
+ public Classe getClasseMae() {
+ return classeMae;
+ }
+
+ public void setAbstrata(boolean abstrata) {
+ this.abstrata = abstrata;
+ }
+
+ public boolean ehAbstrata() {
+ return abstrata;
+ }
+
+ public void setClasseMae(Classe classeMae) {
+ this.classeMae = classeMae;
+ }
+
+ public VisibilidadeKind getVisibilidade() {
+ return visibilidade;
+ }
+
+ public boolean temAtributo(String nome) {
+ return getAtributo(nome) != null;
+ }
+
+ public boolean temMetodo(String nomeOp) {
+ return getMetodo(nomeOp) != null;
+ }
+
+ public boolean ehFilhoDe(Classe outra) {
+ Classe mae = this.classeMae;
+ while (mae != null) {
+ if (mae.equals(outra))
+ return true;
+ mae = mae.getClasseMae();
+ }
+ return false;
+ }
+
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((nome == null) ? 0 : nome.hashCode());
+ return result;
+ }
+
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ Classe other = (Classe) obj;
+ if (nome == null) {
+ if (other.nome != null)
+ return false;
+ } else if (!nome.equals(other.nome))
+ return false;
+ return true;
+ }
+
+ @SuppressWarnings("unchecked")
+ public void read(List<Classe> classes) throws Exception {
+ if (this.element != null) {
+ List<Element> children = this.element.getChildren();
+
+ if (children != null && !children.isEmpty()) {
+ for (Element child : children) {
+
+ List<Attribute> attributes2 = child.getAttributes();
+ Attribute attr = (Attribute) attributes2.get(0);
+ String value = attr.getValue();
+
+ if (value.equals("uml:Property")) {
+ Atributo atributo = new Atributo(child, classes);
+ this.addAtributo(atributo);
+ } else if (value.equals("uml:Operation")) {
+ Metodo metodo = new Metodo(child, classes);
+ this.addMetodo(metodo);
+ } else if (value.equals("uml:Generalization")) {
+ List<Attribute> attributes = child.getAttributes();
+ Attribute xmiId = (Attribute) attributes.get(3);
+ String id = xmiId.getValue();
+ Classe classeMae = TradutorXMI.getClassePorId(classes,
+ id);
+
+ this.setClasseMae(classeMae);
+ }
+ }
+ }
+ }
+ }
+
+ private static boolean existeAncestralEmComum(Classe a, Classe b) {
+ Classe atual = b;
+
+ while (atual != null) {
+ Classe outra = a;
+ while (outra != null) {
+ if (outra.equals(atual) && !outra.getNome().equals("OclType"))
+ return true;
+ outra = outra.getClasseMae();
+ }
+ atual = atual.getClasseMae();
+ }
+
+ return false;
+ }
+
+ @Override
+ public String toString() {
+ return this.nome;
+ }
+}
View
133 Ocl-Assembly-Compiler/src/codigoGerado/parser/Colecao.java
@@ -0,0 +1,133 @@
+package gerador.parser;
+
+import org.jdom.Element;
+
+public class Colecao extends Classe {
+ private Classe tipoObjetos;
+ private String tipoObjetosStr;
+ private ColecaoKind tipoColecao;
+
+ public Colecao(Classe tipoObjetos) {
+ this(tipoObjetos, ColecaoKind.COLLECTION);
+ }
+
+ public Colecao(Classe tipoObjetos, ColecaoKind tipoColecao) {
+ super(tipoObjetos.getNome());
+ this.setTipoColecao(tipoColecao);
+ this.setNome(formatNome(tipoObjetos.getNome()));
+ this.setTipoObjetos(tipoObjetos);
+ }
+
+ public Colecao(Element elemento, String tipoObjetosStr)
+ throws Exception {
+ super(elemento);
+ this.setTipoColecao(ColecaoKind.COLLECTION);
+ this.setNome(formatNome(tipoObjetosStr));
+ this.setTipoObjetosStr(tipoObjetosStr);
+ }
+
+ public boolean ehColecao() {
+ return true;
+ }
+
+ public Atributo getAtributo(String atributo) {
+ return tipoObjetos.getAtributo(atributo);
+ }
+
+ public Metodo getMetodo(String nome) {
+ Classe bool = GerenciadorEntidades.getInstance().getClasse("Boolean");
+ Classe integer = GerenciadorEntidades.getInstance()
+ .getClasse("Integer");
+
+ if (nome.equals(Constantes.OP_COL_ANY)) {
+ return new Metodo(nome, tipoObjetos, bool);
+ } else if (nome.equals(Constantes.OP_COL_AT)) {
+ return new Metodo(nome, tipoObjetos, integer);
+ } else if (nome.equals(Constantes.OP_COL_SELECT)) {
+ return new Metodo(nome, new Colecao(tipoObjetos), bool);
+ } else if (nome.equals(Constantes.OP_COL_REJECT)) {
+ return new Metodo(nome, new Colecao(tipoObjetos), bool);
+ } else if (nome.equals(Constantes.OP_COL_IS_EMPTY)) {
+ return new Metodo(nome, bool);
+ } else if (nome.equals(Constantes.OP_COL_NOT_EMPTY)) {
+ return new Metodo(nome, bool);
+ } else if (nome.equals(Constantes.OP_COL_SIZE)) {
+ return new Metodo(nome, integer);
+ } else if (nome.equals(Constantes.OP_COL_INCLUDES)) {
+ return new Metodo(nome, bool, tipoObjetos);
+ } else if (nome.equals(Constantes.OP_COL_EXCLUDES)) {
+ return new Metodo(nome, bool, tipoObjetos);
+ } else if (nome.equals(Constantes.OP_COL_INCLUDES_ALL)) {
+ return new Metodo(nome, bool, new Colecao(tipoObjetos));
+ } else if (nome.equals(Constantes.OP_COL_EXCLUDES_ALL)) {
+ return new Metodo(nome, bool, new Colecao(tipoObjetos));
+ } else if (nome.equals(Constantes.OP_COL_INCLUDING)) {
+ return new Metodo(nome, new Colecao(tipoObjetos), tipoObjetos);
+ } else if (nome.equals(Constantes.OP_COL_EXCLUDING)) {
+ return new Metodo(nome, new Colecao(tipoObjetos), tipoObjetos);
+ } else if (nome.equals(Constantes.OP_COL_SUM)) {
+ return new Metodo(nome, integer);
+ } else if (nome.equals(Constantes.OP_COL_IS_UNIQUE)) {
+ return new Metodo(nome, bool, bool);
+ } else if (nome.equals(Constantes.OP_COL_COUNT)) {
+ return new Metodo(nome, integer, bool);
+ } else if (nome.equals(Constantes.OP_COL_EXISTS)) {
+ return new Metodo(nome, bool, bool);
+ } else if (nome.equals(Constantes.OP_COL_FOR_ALL)) {
+ return new Metodo(nome, bool, bool);
+ } else if (nome.equals(Constantes.OP_COL_UNION)) {
+ return new Metodo(nome, new Colecao(tipoObjetos), new Colecao(
+ tipoObjetos));
+ } else if (nome.equals(Constantes.OP_COL_INTERSECTION)) {
+ return new Metodo(nome, new Colecao(tipoObjetos), new Colecao(
+ tipoObjetos));
+ }
+ return null;
+ }
+
+ public void setTipoObjetos(Classe tipoObjetos) {
+ this.tipoObjetos = tipoObjetos;
+ }
+
+ public Classe getTipoObjetos() {
+ return tipoObjetos;
+ }
+
+ public Classe getTipoRetornoMetodo(String nomeOp) {
+ return metodos.get(nomeOp).getTipoRetorno();
+ }
+
+ public void setTipoObjetosStr(String tipoObjetosStr) {
+ this.tipoObjetosStr = tipoObjetosStr;
+ }
+
+ public String getTipoObjetosStr() {
+ return tipoObjetosStr;
+ }
+
+ public void setTipoColecao(ColecaoKind tipoColecao) {
+ this.tipoColecao = tipoColecao;
+ }
+
+ public ColecaoKind getTipoColecao() {
+ return tipoColecao == null ? ColecaoKind.COLLECTION : tipoColecao;
+ }
+
+ private String formatNome(String tipoObjetos) {
+ return getTipoColecao().getNome() + "<" + tipoObjetos + ">";
+ }
+
+ public enum ColecaoKind {
+ BAG("Bag"), COLLECTION("Collection"), SET("Set"), ORDERED_SET("OrderedSet"), SEQUENCE("Sequence");
+
+ private String nome;
+
+ ColecaoKind(String nome) {
+ this.nome = nome;
+ }
+
+ public String getNome() {
+ return nome;
+ }
+ }
+}
View
66 Ocl-Assembly-Compiler/src/codigoGerado/parser/Constantes.java
@@ -0,0 +1,66 @@
+package gerador.parser;
+
+public interface Constantes {
+ final String OP_OCL_IS_NEW = "oclIsNew";
+ final String OP_OCL_IS_KIND_OF = "oclIsKindOf";
+ final String OP_OCL_IS_TYPE_OF = "oclIsTypeOf";
+ final String OP_OCL_IS_UNDEFINED = "oclIsUndefined";
+ final String OP_UNARY_MENOS = "-";
+ final String OP_UNARY_NOT = "not";
+ final String OP_LOGICAL_AND = "and";
+ final String OP_LOGICAL_XOR = "xor";
+ final String OP_LOGICAL_OR = "or";
+ final String OP_IMPLIES = "implies";
+ final String OP_PLUS = "+";
+ final String OP_TIMES = "*";
+ final String OP_DIV = "/";
+ final String OP_EQUAL = "=";
+ final String OP_LT = "<=";
+ final String OP_L = "<";
+ final String OP_B = ">";
+ final String OP_BT = ">=";
+ final String OP_DIFF = "<>";
+ final String APRE = "@pre";
+ final String SELF = "self";
+ final String RESULT = "result";
+ final String VOID = "void";
+ final String OP_COL_ANY = "any";
+ final String OP_COL_EXISTS = "exists";
+ final String OP_COL_SUM = "sum";
+ final String OP_COL_COUNT = "count";
+ final String OP_COL_SIZE = "size";
+ final String OP_COL_NOT_EMPTY = "notEmpty";
+ final String OP_COL_FOR_ALL = "forAll";
+ final String OP_COL_UNION = "union";
+ final String OP_COL_INTERSECTION = "intersection";
+ final String OP_COL_INCLUDES_ALL = "includesAll";
+ final String OP_COL_EXCLUDES_ALL = "excludesAll";
+ final String OP_COL_COLLECT = "collect";
+ final String OP_COL_REJECT = "reject";
+ final String OP_COL_SELECT = "select";
+ final String OP_COL_EXCLUDES = "excludes";
+ final String OP_COL_EXCLUDING = "excluding";
+ final String OP_COL_IS_EMPTY = "isEmpty";
+ final String OP_COL_INCLUDES = "includes";
+ final String OP_COL_INCLUDING = "including";
+ final String OP_COL_FIRST = "first";
+ final String OP_COL_LAST = "last";
+ final String OP_COL_AT = "at";
+ final String OP_COL_IS_UNIQUE = "isUnique";
+
+ public static final String PACOTE_PADRAO = "padrao";
+ public static final String UML_MODEL = "Model";
+ public static final String UML_CLASS = "uml:Class";
+ public static final String UML_ENUM = "uml:Enumeration";
+ public static final String PACKAGED_ELEMENT = "packagedElement";
+ public static final String CONTEUDO_COLLECTION_PATTERN = "<[a-zA-Z]+>";
+ public static final String COLLECTION_PATTERN = "(Set|OrderedSet|Bag|Sequence)"
+ + CONTEUDO_COLLECTION_PATTERN;
+ public static final String LOWER_VALUE = "lowerValue";
+ public static final String LOWER_VALUE_ATTR = "value";
+ public static final String UPPER_VALUE = "upperValue";
+ public static final String UPPER_VALUE_ATTR = "value";
+ public static final String MANY = "*";
+}
+
+
View
86 Ocl-Assembly-Compiler/src/codigoGerado/parser/Elemento.java
@@ -0,0 +1,86 @@
+package gerador.parser;
+
+import java.util.List;
+
+import org.jdom.Attribute;
+import org.jdom.Element;
+
+public abstract class Elemento {
+ protected String id;
+ protected List<Attribute> attributes;
+ protected Element element;
+
+ public Elemento() {}
+
+ public Elemento(String id) {
+ try {
+ this.setId(id);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ @SuppressWarnings({ "unchecked", "rawtypes" })
+ public Elemento(Element model) throws Exception {
+ List attributes = model.getAttributes();
+ Attribute xmiId = (Attribute) attributes.get(1);
+ String id = xmiId.getValue();
+
+ this.setId(id);
+ this.setAttributes(attributes);
+ this.setElement(model);
+
+ }
+
+ public Element getElement() {
+ return element;
+ }
+
+ public void setElement(Element element) {
+ this.element = element;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) throws Exception {
+ if (id == null || id.equals("")) {
+ throw new Exception("Elemento nulo ou vazio.");
+ }
+ this.id = id;
+ }
+
+ public List<Attribute> getAttributes() {
+ return attributes;
+ }
+
+ public void setAttributes(List<Attribute> attributes) {
+ this.attributes = attributes;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((id == null) ? 0 : id.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ Elemento other = (Elemento) obj;
+ if (id == null) {
+ if (other.id != null)
+ return false;
+ } else if (!id.equals(other.id))
+ return false;
+ return true;
+ }
+}
View
44 Ocl-Assembly-Compiler/src/codigoGerado/parser/Enumeration.java
@@ -0,0 +1,44 @@
+package gerador.parser;
+
+import java.util.LinkedList;
+import java.util.List;
+
+import org.jdom.Attribute;
+import org.jdom.Element;
+
+public class Enumeration extends Classe {
+ private List<String> enumList;
+
+ @SuppressWarnings("unchecked")
+ public Enumeration(Element elemento) throws Exception {
+ super(elemento);
+ setEnumList(new LinkedList<String>());
+
+ Attribute attrName = elemento.getAttribute("name");
+ Attribute attrVis = elemento.getAttribute("visibility");
+
+ this.setNome(attrName.getValue());
+ this.setVisibilidade(attrVis.getValue());
+
+ readEnum(elemento.getChildren());
+ }
+
+ public void setEnumList(List<String> enumList) {
+ this.enumList = enumList;
+ }
+
+ public List<String> getEnumList() {
+ return enumList;
+ }
+
+ private void readEnum(List<Element> children) {
+ if (children != null && !children.isEmpty()) {
+ for (Element child : children) {
+ Attribute attribute = child.getAttribute("name");
+ String value = attribute.getValue();
+
+ enumList.add(value);
+ }
+ }
+ }
+}
View
239 Ocl-Assembly-Compiler/src/codigoGerado/parser/GerenciadorEntidades.java
@@ -0,0 +1,239 @@
+package gerador.parser;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.jdom.Attribute;
+import org.jdom.Document;
+import org.jdom.Element;
+import org.jdom.JDOMException;
+import org.jdom.input.SAXBuilder;
+
+public class GerenciadorEntidades {
+ private static GerenciadorEntidades instance;
+
+ private List<Classe> tiposPrimitivos;
+ private GerenciadorPacotes pacotes;
+
+ private GerenciadorEntidades() {
+ tiposPrimitivos = new ArrayList<Classe>();
+ pacotes = new GerenciadorPacotes();
+ }
+
+ public static GerenciadorEntidades getInstance() {
+ if (instance == null)
+ instance = new GerenciadorEntidades();
+ return instance;
+ }
+
+ public void addClasse(String nomeClasse) throws Exception {
+ pacotes.getPacotePadrao().addClasse(new Classe(nomeClasse));
+ }
+
+ public Classe getClasse(String nomeClasse) {
+ Pacote pacote = pacotes.getPacotePadrao();
+ if (pacote == null)
+ return null;
+ return pacote.getClasse(nomeClasse);
+ }
+
+ public Classe getClasse(String nomePacote, String nomeClasse) {
+ Pacote pacote = pacotes.getPacote(nomePacote);
+ if (pacote == null)
+ return null;
+ return pacote.getClasse(nomeClasse);
+ }
+
+ public GerenciadorPacotes getPacotes() {
+ return pacotes;
+ }
+
+ public void setPacotes(GerenciadorPacotes pacotes) {
+ this.pacotes = pacotes;
+ }
+
+ public void read() throws Exception {
+ criaClassesDefault();
+ }
+
+ @SuppressWarnings("unchecked")
+ public void read(String pathXmi) throws Exception {
+ read();
+
+ if (pathXmi == null) {
+ throw new Exception("Argumentos Invalidos!");
+ }
+
+ SAXBuilder builder = new SAXBuilder();
+ try {
+ Document xmlDoc = builder.build(pathXmi);
+ Element rootElement = xmlDoc.getRootElement();
+ List<Element> children = rootElement.getChildren();
+
+ try {
+ read(new HashMap<String, Colecao>(), children);
+ } catch (Exception e) {
+ throw new Exception(e);
+ }
+ } catch (JDOMException e) {
+ throw new Exception(e);
+ } catch (IOException e) {
+ throw new Exception(e);
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ private void read(Map<String, Colecao> colecoes, Element model)
+ throws Exception {
+ Pacote pacote = getPacotes().getPacotePadrao();
+
+ List<Element> children = model.getChildren();
+ for (Element child : children) {
+ if (child.getName().equals(Constantes.PACKAGED_ELEMENT)) {
+ List<Attribute> attributes = child.getAttributes();
+ Attribute attribute = (Attribute) attributes.get(0);
+ String value = attribute.getValue();
+
+ if (value.equals(Constantes.UML_CLASS)) {
+ Attribute attrName = child.getAttribute("name");
+ String nome = attrName.getValue();
+
+ if (nome.matches(Constantes.COLLECTION_PATTERN)) {
+
+ Matcher matcher = Pattern.compile(
+ Constantes.CONTEUDO_COLLECTION_PATTERN)
+ .matcher(nome);
+ matcher.find();
+ String conteudoColecao = matcher.group();
+ conteudoColecao = conteudoColecao.replaceAll("<", "")
+ .replaceAll(">", "");
+ Colecao colecao = new Colecao(child, conteudoColecao);
+ colecoes.put(colecao.getId(), colecao);
+ } else {
+ Classe classe = new Classe(child);
+ pacote.addClasse(classe);
+ }
+ } else if (value.equals(Constantes.UML_ENUM)) {
+ Enumeration enumeration = new Enumeration(child);
+ pacote.addEnumeration(enumeration);
+ }
+ }
+ }
+ }
+
+ private void read(Map<String, Colecao> colecoes, List<Element> children)
+ throws Exception {
+ for (Element child : children) {
+ if (child.getName().equals(Constantes.UML_MODEL)) {
+ read(colecoes, child);
+ }
+ }
+
+ List<Classe> classes = pacotes.getAllClasses();
+ Iterator<?> it = colecoes.values().iterator();
+
+ while (it.hasNext()) {
+ Colecao colecao = (Colecao) it.next();
+ Classe tipoConteudoColecao = TradutorXMI.getClassePorNome(classes,
+ colecao.getTipoObjetosStr());
+ colecao.setTipoObjetos(tipoConteudoColecao);
+ }
+
+ classes.addAll(colecoes.values());
+ if (classes != null && !classes.isEmpty()) {
+ for (Classe c : classes) {
+ c.read(classes);
+ }
+ }
+
+ setClasseMaeOclType(classes);
+ }
+
+ private void setClasseMaeOclType(List<Classe> classes) {
+ Classe bool = getClasse("Boolean");
+ Classe oclType = new Classe("OclType");
+
+ Metodo oclIsNew = new Metodo(Constantes.OP_OCL_IS_NEW, bool);
+ Metodo oclIsUndefined = new Metodo(Constantes.OP_OCL_IS_UNDEFINED, bool);
+ Metodo oclIsKindOf = new Metodo(Constantes.OP_OCL_IS_KIND_OF, bool,
+ oclType);
+ Metodo oclIsTypeOf = new Metodo(Constantes.OP_OCL_IS_TYPE_OF, bool,
+ oclType);
+
+ try {
+ oclType.addMetodo(oclIsNew);
+ oclType.addMetodo(oclIsUndefined);
+ oclType.addMetodo(oclIsKindOf);
+ oclType.addMetodo(oclIsTypeOf);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ for (Classe classe : classes) {
+ if (!tiposPrimitivos.contains(classe)) {
+ if (classe.getClasseMae() == null) {
+ classe.setClasseMae(oclType);
+ }
+ }
+ }
+ }
+
+ private void criaClassesDefault() throws Exception {
+ Classe number = new Classe("Number");
+ Classe string = new Classe("String");
+ Classe real = new Classe("Double");
+ Classe integer = new Classe("Integer");
+ Classe bool = new Classe("Boolean");
+
+ Metodo modulos = new Metodo("mod", integer, integer);
+ Metodo div = new Metodo("div", integer, integer);
+ Metodo abs = new Metodo("abs", real);
+ Metodo max = new Metodo("max", real, number);
+ Metodo min = new Metodo("min", real, number);
+ Metodo round = new Metodo("round", integer);
+ Metodo floor = new Metodo("floor", integer);
+ Metodo concat = new Metodo("concat", "__add__(", string, string);
+ Metodo size = new Metodo("size", "__len__(", integer);
+ Metodo lower = new Metodo("toLower", "lower(", string);
+ Metodo upper = new Metodo("toUpper", "upper(", string);
+ Metodo substring = new Metodo("substring", "__getSlice__(", string, integer, integer);
+
+ try {
+ number.addMetodo(modulos);
+ number.addMetodo(div);
+ number.addMetodo(abs);
+ number.addMetodo(max);
+ number.addMetodo(min);
+ number.addMetodo(round);
+ number.addMetodo(floor);
+ string.addMetodo(concat);
+ string.addMetodo(size);
+ string.addMetodo(lower);
+ string.addMetodo(upper);
+ string.addMetodo(substring);
+ } catch (Exception e1) {
+ e1.printStackTrace();
+ }
+
+ real.setClasseMae(number);
+ integer.setClasseMae(number);
+
+ try {
+ tiposPrimitivos.add(number);
+ tiposPrimitivos.add(string);
+ tiposPrimitivos.add(real);
+ tiposPrimitivos.add(integer);
+ tiposPrimitivos.add(bool);
+
+ pacotes.getPacotePadrao().addClasses(tiposPrimitivos);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+}
View
52 Ocl-Assembly-Compiler/src/codigoGerado/parser/GerenciadorPacotes.java
@@ -0,0 +1,52 @@
+package gerador.parser;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+public class GerenciadorPacotes {
+ private HashMap<String, Pacote> pacotes;
+
+ public GerenciadorPacotes() {
+ pacotes = new HashMap<String, Pacote>();
+ pacotes.put(Constantes.PACOTE_PADRAO, new Pacote(
+ Constantes.PACOTE_PADRAO));
+ }
+
+ public void addPacote(Pacote p) throws Exception {
+ if (pacotes.containsKey(p.getNome())) {
+ throw new Exception("Ja existe pacote " + p.getNome() + "!");
+ }
+ pacotes.put(p.getNome(), p);
+ }
+
+ public Pacote getPacote(String nome) {
+ return pacotes.get(nome);
+ }
+
+ public Pacote getPacotePadrao() {
+ return pacotes.get(Constantes.PACOTE_PADRAO);
+ }
+
+ public List<Classe> getAllClasses() {
+ List<Classe> classes = new ArrayList<Classe>();
+
+ ArrayList<Pacote> packages = new ArrayList<Pacote>(pacotes.values());
+ for (Pacote pacote : packages) {
+ classes.addAll(pacote.getClasses());
+ //classes.addAll(pacote.getEnumerations());
+ }
+
+ return classes;
+ }
+
+ public List<Enumeration> getAllEnumerations() {
+ List<Enumeration> enumerations = new ArrayList<Enumeration>();
+
+ ArrayList<Pacote> packages = new ArrayList<Pacote>(pacotes.values());
+ for (Pacote pacote : packages)
+ enumerations.addAll(pacote.getEnumerations());
+
+ return enumerations;
+ }
+}
View
151 Ocl-Assembly-Compiler/src/codigoGerado/parser/Metodo.java
@@ -0,0 +1,151 @@
+package gerador.parser;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.jdom.Attribute;
+import org.jdom.Element;
+
+public class Metodo extends Elemento {
+ private boolean estatico;
+ private boolean abstrato;
+ private boolean metodoFinal;
+
+ private String nome;
+ private String codigoPython;
+ private VisibilidadeKind visibilidade;
+ private Classe tipoRetorno;
+ private List<Parametro> parametros;
+
+ public Metodo(String nomeOp, Classe tipoRetorno, Classe... tiposParametros) {
+ this(nomeOp);
+ this.tipoRetorno = tipoRetorno;
+ for (Classe classe : tiposParametros) {
+ addParametro(new Parametro("", classe));
+ }
+ }
+
+ public Metodo(String nomeOp, String codigoPython, Classe tipoRetorno, Classe... tiposParametros) {
+ this(nomeOp);
+ this.tipoRetorno = tipoRetorno;
+ this.codigoPython = codigoPython;
+ for (Classe classe : tiposParametros) {
+ addParametro(new Parametro("", classe));
+ }
+ }
+
+ public Metodo(String nome) {
+ this.parametros = new ArrayList<Parametro>();
+ this.nome = nome;
+ this.visibilidade = VisibilidadeKind.PUBLIC;
+ }
+
+ @SuppressWarnings("unchecked")
+ public Metodo(Element elemento, List<Classe> classes)
+ throws Exception {
+ super(elemento);
+
+ Attribute attrName = elemento.getAttribute("name");
+ Attribute attrVis = elemento.getAttribute("visibility");
+
+ this.parametros = new ArrayList<Parametro>();
+ this.setNome(attrName.getValue());
+ this.setVisibilidade(attrVis.getValue());
+ this.read(elemento.getChildren(), classes);
+ }
+
+ public String getNome() {
+ return nome;
+ }
+
+ public void setVisibilidade(String visibilidade) {
+ this.visibilidade = VisibilidadeKind.getByDescricao(visibilidade);
+ }
+
+ public VisibilidadeKind getVisibilidade() {
+ return visibilidade;
+ }
+
+ public void setTipoRetorno(Classe tipoRetorno) {
+ this.tipoRetorno = tipoRetorno;
+ }
+
+ public Classe getTipoRetorno() {
+ return tipoRetorno;
+ }
+
+ public void setMetodoFinal(boolean metodoFinal) {
+ this.metodoFinal = metodoFinal;
+ }
+
+ public boolean isMetodoFinal() {
+ return metodoFinal;
+ }
+
+ public void setAbstrato(boolean abstrato) {
+ this.abstrato = abstrato;
+ }
+
+ public boolean isAbstrato() {
+ return abstrato;
+ }
+
+ public void setEstatico(boolean estatico) {
+ this.estatico = estatico;
+ }
+
+ public boolean isEstatico() {
+ return estatico;
+ }
+
+ public void setNome(String nome) {
+ this.nome = nome;
+ }
+
+ public List<Parametro> getParametros() {
+ return parametros;
+ }
+
+ public int getQuantidadeParametros() {
+ return parametros.size();
+ }
+
+ public void addParametro(Parametro p) {
+ parametros.add(p);
+ }
+
+ private void read(List<Element> children, List<Classe> classes)
+ throws Exception {
+ if (children != null && !children.isEmpty()) {
+ for (Element child : children) {
+ Atributo atributo = new Atributo(child, classes);
+ Attribute attribute = child.getAttribute("direction");
+
+ if (attribute != null) {
+ if (attribute.getValue().equals("return")) {
+ setTipoRetorno(atributo.getTipo());
+ } else {
+ parametros.add(new Parametro(atributo.getNome(),
+ atributo.getTipo()));
+ }
+ } else {
+ parametros.add(new Parametro(atributo.getNome(), atributo
+ .getTipo()));
+ }
+ }
+ }
+
+ if (tipoRetorno == null) {
+ setTipoRetorno(GerenciadorEntidades.getInstance().getClasse(
+ Constantes.VOID));
+ }
+ }
+
+ public String getCodigoPython() {
+ return codigoPython;
+ }
+
+ public void setCodigoPython(String codigoPython) {
+ this.codigoPython = codigoPython;
+ }
+}
View
105 Ocl-Assembly-Compiler/src/codigoGerado/parser/Pacote.java
@@ -0,0 +1,105 @@
+package gerador.parser;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class Pacote {
+ private String nome;
+ private Map<String, Classe> classes;
+ private Map<String, Enumeration> enumerations;
+
+ public Pacote(String nome) {
+ this.nome = nome;
+
+ this.classes = new HashMap<String, Classe>();
+ this.enumerations = new HashMap<String, Enumeration>();
+ }
+
+ public void setNome(String nome) {
+ this.nome = nome;
+ }
+
+ public String getNome() {
+ return nome;
+ }
+
+ public boolean temClasse(String nome) {
+ return classes.containsKey(nome);
+ }
+
+ public boolean temEnum(String nome) {
+ return enumerations.containsKey(nome);
+ }
+
+ public Classe getClasse(String nome) {
+ return classes.get(nome);
+ }
+
+ public Enumeration getEnumeration(String nome) {
+ return enumerations.get(nome);
+ }
+
+ public void addClasse(Classe c) throws Exception {
+ if (classes.containsKey(c.getNome())) {
+ throw new Exception("Classe " + c.getNome()
+ + " ja existente no pacote");
+ }
+ classes.put(c.getNome(), c);
+ }
+
+ public void addEnumeration(Enumeration e) throws Exception {
+ if (classes.containsKey(e.getNome())) {
+ throw new Exception("Enumeration " + e.getNome()
+ + " ja existente no pacote");
+ }
+ classes.put(e.getNome(), e);
+ enumerations.put(e.getNome(), e);
+ }
+
+ public void addClasses(List<Classe> classes) throws Exception {
+ for (Classe c : classes) {
+ addClasse(c);
+ }
+ }
+
+ public List<Enumeration> getEnumerations() {
+ return new ArrayList<Enumeration>(enumerations.values());
+ }
+
+ public List<Classe> getClasses() {
+ return new ArrayList<Classe>(classes.values());
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((classes == null) ? 0 : classes.hashCode());
+ result = prime * result + ((nome == null) ? 0 : nome.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ Pacote other = (Pacote) obj;
+ if (classes == null) {
+ if (other.classes != null)
+ return false;
+ } else if (!classes.equals(other.classes))
+ return false;
+ if (nome == null) {
+ if (other.nome != null)
+ return false;
+ } else if (!nome.equals(other.nome))
+ return false;
+ return true;
+ }
+}
View
27 Ocl-Assembly-Compiler/src/codigoGerado/parser/Parametro.java
@@ -0,0 +1,27 @@
+package gerador.parser;
+
+public class Parametro {
+ private String nome;
+ private Classe tipo;
+
+ public Parametro(String nome, Classe tipo) {
+ this.nome = nome;
+ this.tipo = tipo;
+ }
+
+ public void setNome(String nome) {
+ this.nome = nome;
+ }
+
+ public String getNome() {
+ return nome;
+ }
+
+ public void setTipo(Classe tipo) {
+ this.tipo = tipo;
+ }
+
+ public Classe getTipo() {
+ return tipo;
+ }
+}
View
78 Ocl-Assembly-Compiler/src/codigoGerado/parser/TradutorXMI.java
@@ -0,0 +1,78 @@
+package gerador.parser;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class TradutorXMI {
+
+ private static TradutorXMI instance;
+
+ private TradutorXMI() {
+ }
+
+ public static TradutorXMI getInstance() {
+ if (instance == null)
+ instance = new TradutorXMI();
+ return instance;
+ }
+
+ public void traduz(String arquivoXmi) throws Exception {
+ GerenciadorEntidades gerenciadorEntidades = GerenciadorEntidades.getInstance();
+
+ Map<String, Enumeration> enums = new HashMap<String, Enumeration>();
+
+ try {
+ gerenciadorEntidades.read(arquivoXmi);
+
+ for (Enumeration enumeration : gerenciadorEntidades.getPacotes().getAllEnumerations())
+ enums.put(enumeration.getNome(), enumeration);
+
+ for (Classe classe : gerenciadorEntidades.getPacotes().getAllClasses()) {
+ Enumeration enume;
+ if ((enume = enums.get(classe.getNome())) != null) {
+ for (String atr : enume.getEnumList()) {
+ Atributo a = new Atributo(atr, classe, VisibilidadeKind.PUBLIC);
+ a.setEstatico(true);
+ classe.addAtributo(a);
+ }
+ }
+ }
+
+ } catch (Exception e) {
+ throw new Exception("A leitura do arquivo XML falhou!", e);
+ }
+ }
+
+ public static Classe getClassePorId(List<Classe> classes, String id) {
+ if (classes != null && !classes.isEmpty()) {
+ for (Classe classe : classes) {
+ if (classe.getId().equals(id)) {
+ return classe;
+ }
+ }
+ }
+ return null;
+ }
+
+ public static Classe getClassePorNome(List<Classe> classes, String nome) {
+ if (classes != null && !classes.isEmpty()) {
+ for (Classe classe : classes) {
+ if (classe.getNome().equalsIgnoreCase(nome)) {
+ return classe;
+ }
+ }
+ }
+ return null;
+ }
+
+ public static String getNomeAtributoPadraoUML(Classe classeDoAtributo) {
+ String nomeAtributo = classeDoAtributo.ehColecao() ? ((Colecao) classeDoAtributo)
+ .getTipoObjetos().getNome() : classeDoAtributo.getNome();
+ String caracterInicial = nomeAtributo.substring(0, 1);
+ return nomeAtributo.replaceFirst(caracterInicial,
+ caracterInicial.toLowerCase());
+
+ }
+
+}
View
6 Ocl-Assembly-Compiler/src/codigoGerado/parser/Util.java
@@ -0,0 +1,6 @@
+package gerador.parser;
+
+public class Util {
+
+ public static String QUEBRA_DE_LINHA = "\n";
+}
View
28 Ocl-Assembly-Compiler/src/codigoGerado/parser/VisibilidadeKind.java
@@ -0,0 +1,28 @@
+package gerador.parser;
+
+public enum VisibilidadeKind {
+ PUBLIC("Public"), PRIVATE("Private"), PROTECTED("Protected");
+
+ private String descricao;
+
+ VisibilidadeKind(String descricao) {
+ this.setDescricao(descricao);
+ }
+
+ public void setDescricao(String descricao) {
+ this.descricao = descricao;
+ }
+
+ public String getDescricao() {
+ return descricao;
+ }
+
+ public static VisibilidadeKind getByDescricao(String descricao) {
+ for (VisibilidadeKind v : values()) {
+ if (v.getDescricao().equalsIgnoreCase(descricao)) {
+ return v;
+ }
+ }
+ return null;
+ }
+}
View
19 Ocl-Assembly-Compiler/src/codigoGerado/semantico/ActualParameterListClass.java
@@ -0,0 +1,19 @@
+package gerador.semantico;
+
+
+public class ActualParameterListClass {
+
+ private String tipo;
+ private String codigo;
+
+ public ActualParameterListClass() {
+ }
+
+ public String getCodigo() {
+ return codigo;
+ }
+
+ public String getTipo() {
+ return tipo;
+ }
+}
View
17 Ocl-Assembly-Compiler/src/codigoGerado/semantico/AddOperatorClass.java
@@ -0,0 +1,17 @@
+package gerador.semantico;
+
+public class AddOperatorClass{
+
+ private String operador;
+
+ public AddOperatorClass(Object operador) {
+ this.operador = (String) operador;
+ }
+
+ public String getOperador() {
+ return operador;
+ }
+}
+
+
+
View
32 Ocl-Assembly-Compiler/src/codigoGerado/semantico/AdditiveExpressionClass.java
@@ -0,0 +1,32 @@
+package gerador.semantico;
+
+import gerador.parser.Classe;
+
+public class AdditiveExpressionClass{
+
+ private Classe tipo;
+ private String codigo;
+
+ public AdditiveExpressionClass(Object multiExp, Object OptAddExp){
+ MultiplicativeExpressionClass multi = (MultiplicativeExpressionClass) multiExp;
+ OptAdditiveExpressionClass optAdd = (OptAdditiveExpressionClass) OptAddExp;
+ if(optAdd == null){
+ this.tipo = multi.getTipo();
+ this.codigo = multi.getCodigo();
+ }
+ else{
+ this.tipo = optAdd.getTipo();
+ this.codigo = optAdd.getCodigo();
+ }
+ }
+
+
+ public Classe getTipo(){
+ return this.tipo;
+ }
+
+ public String getCodigo(){
+ return this.codigo;
+ }
+
+}
View
25 Ocl-Assembly-Compiler/src/codigoGerado/semantico/BooleanClass.java
@@ -0,0 +1,25 @@
+package gerador.semantico;
+
+import gerador.AnalisadorSemantico;
+import gerador.parser.Classe;
+
+public class BooleanClass {
+
+ private Classe tipo;
+ private String codigo;
+
+
+ public BooleanClass(Object expressao) {
+ AnalisadorSemantico analisador = AnalisadorSemantico.getInstance();
+ this.tipo = analisador.getGerenciador().getClasse("Boolean");
+ codigo = (String) expressao;
+ }
+
+ public Classe getTipo(){
+ return this.tipo;
+ }
+
+ public String getCodigo() {
+ return this.codigo;
+ }
+}
View
17 Ocl-Assembly-Compiler/src/codigoGerado/semantico/ClassifierContextClass.java
@@ -0,0 +1,17 @@
+package gerador.semantico;
+public class ClassifierContextClass {
+
+ private String tipo;
+ private String codigo;
+
+ public ClassifierContextClass() {
+ }
+
+ public String getCodigo() {
+ return codigo;
+ }
+
+ public String getTipo() {
+ return tipo;
+ }
+}
View
17 Ocl-Assembly-Compiler/src/codigoGerado/semantico/CollectionItensClass.java
@@ -0,0 +1,17 @@
+package gerador.semantico;
+public class CollectionItensClass {
+
+ private String tipo;
+ private String codigo;
+
+ public CollectionItensClass() {
+ }
+
+ public String getCodigo() {
+ return codigo;
+ }
+
+ public String getTipo() {
+ return tipo;
+ }
+}
View
26 Ocl-Assembly-Compiler/src/codigoGerado/semantico/CollectionKindClass.java
@@ -0,0 +1,26 @@
+package gerador.semantico;
+
+import gerador.parser.Classe;
+
+public class CollectionKindClass {
+
+ private Classe tipo;
+ private String valor;
+ private String codigo;
+
+ public CollectionKindClass(Object collecao) {
+ this.valor = (String) collecao;
+ }
+
+ public String getValor() {
+ return this.valor;
+ }
+
+ public Classe getTipo(){
+ return tipo;
+ }
+
+ public String getCodigo() {
+ return codigo;
+ }
+}
View
17 Ocl-Assembly-Compiler/src/codigoGerado/semantico/ConstraintClass.java
@@ -0,0 +1,17 @@
+package gerador.semantico;
+public class ConstraintClass {
+
+ private String tipo;
+ private String codigo;
+
+ public ConstraintClass() {
+ }
+
+ public String getCodigo() {
+ return codigo;
+ }
+
+ public String getTipo() {
+ return tipo;
+ }
+}
View
17 Ocl-Assembly-Compiler/src/codigoGerado/semantico/ContextDeclarationClass.java
@@ -0,0 +1,17 @@
+package gerador.semantico;
+public class ContextDeclarationClass {
+
+ private String tipo;
+ private String codigo;
+
+ public ContextDeclarationClass() {
+ }
+
+ public String getCodigo() {
+ return codigo;
+ }
+
+ public String getTipo() {
+ return tipo;
+ }
+}
View
25 Ocl-Assembly-Compiler/src/codigoGerado/semantico/DeclaratorAuxClass.java
@@ -0,0 +1,25 @@
+package gerador.semantico;
+
+import gerador.parser.Classe;
+
+public class DeclaratorAuxClass {
+
+ private Classe tipo;
+ private String codigo;
+
+ public String getCodigo() {
+ return codigo;
+ }
+
+ public Classe getTipo(){
+ return tipo;
+ }
+
+ public DeclaratorAuxClass(Object sts, Object md) {
+ // TODO Auto-generated constructor stub
+ }
+
+ public DeclaratorAuxClass(Object md) {
+ // TODO Auto-generated constructor stub
+ }
+}
View
17 Ocl-Assembly-Compiler/src/codigoGerado/semantico/DeclaratorClass.java
@@ -0,0 +1,17 @@
+package gerador.semantico;
+public class DeclaratorClass {
+
+ private String tipo;
+ private String codigo;
+
+ public DeclaratorClass() {
+ }
+
+ public String getCodigo() {
+ return codigo;
+ }
+
+ public String getTipo() {
+ return tipo;
+ }
+}
View
17 Ocl-Assembly-Compiler/src/codigoGerado/semantico/ExpressionClass.java
@@ -0,0 +1,17 @@
+package gerador.semantico;
+public class ExpressionClass {
+
+ private String tipo;
+ private String codigo;
+
+ public ExpressionClass() {
+ }
+
+ public String getCodigo() {
+ return codigo;
+ }
+
+ public String getTipo() {
+ return tipo;
+ }
+}
View
20 Ocl-Assembly-Compiler/src/codigoGerado/semantico/IfExpressionClass.java
@@ -0,0 +1,20 @@
+package gerador.semantico;
+
+import gerador.parser.Classe;
+
+public class IfExpressionClass {
+
+ private Classe tipo;
+ private String codigo;
+
+ public IfExpressionClass(){
+ }
+
+ public Classe getTipo(){
+ return this.tipo;
+ }
+
+ public String getCodigo(){
+ return this.codigo;
+ }
+}
View
20 Ocl-Assembly-Compiler/src/codigoGerado/semantico/LiteralClass.java
@@ -0,0 +1,20 @@
+package gerador.semantico;
+
+import gerador.parser.Classe;
+
+public class LiteralClass {
+
+ private Classe tipo;
+ private String codigo;
+
+ public LiteralClass() {
+ }
+
+ public String getCodigo() {
+ return codigo;
+ }
+
+ public Classe getTipo() {
+ return tipo;
+ }
+}
View
20 Ocl-Assembly-Compiler/src/codigoGerado/semantico/LiteralCollectionClass.java
@@ -0,0 +1,20 @@
+package gerador.semantico;
+
+import gerador.parser.Classe;
+
+public class LiteralCollectionClass {
+
+ private Classe tipo;
+ private String codigo;
+
+ public LiteralCollectionClass() {
+ }
+
+ public String getCodigo() {
+ return codigo;
+ }
+
+ public Classe getTipo() {
+ return tipo;
+ }
+}
View
17 Ocl-Assembly-Compiler/src/codigoGerado/semantico/LogicalExpressionClass.java
@@ -0,0 +1,17 @@
+package gerador.semantico;
+public class LogicalExpressionClass {
+
+ private String tipo;
+ private String codigo;
+
+ public LogicalExpressionClass() {
+ }
+
+ public String getCodigo() {
+ return codigo;
+ }
+
+ public String getTipo() {
+ return tipo;
+ }
+}
View
14 Ocl-Assembly-Compiler/src/codigoGerado/semantico/LogicalOperatorClass.java
@@ -0,0 +1,14 @@
+package gerador.semantico;
+
+public class LogicalOperatorClass {
+ private String operator;
+
+ public LogicalOperatorClass(Object operador) {
+ this.operator = (String) operador;
+ }
+
+
+ public String getOperador() {
+ return this.operator;
+ }
+}
View
17 Ocl-Assembly-Compiler/src/codigoGerado/semantico/ManyActualParameterListClass.java
@@ -0,0 +1,17 @@