diff --git a/src/main/scala/other/Parser.scala b/src/main/scala/other/Parser.scala
index 525cc6bd3b94dccea2007f868a8159d0df83cad4..2f393f69e30a53e004cda905c2d7bfe97d35fe1e 100644
--- a/src/main/scala/other/Parser.scala
+++ b/src/main/scala/other/Parser.scala
@@ -139,11 +139,9 @@ class Arith extends JavaTokenParsers {
         case _ => println("Encontrei um procedimento em uma atribuição?"); "integer"
       }
       //assert tipos
-      if (tipoExpr!="integer" && tipoAtrib!="integer") {
-        if (tipoExpr != tipoAtrib) {
+      if (tipoExpr!="integer" && tipoAtrib!="integer" && tipoExpr!=tipoAtrib) {
           println("Erro de tipo: Atribuição recebendo tipo diferente. (["+tipoAtrib+"] := ["+tipoExpr+"])")
           sys.exit(1)
-        }
       } //Otherwise ok!
     }
     
@@ -210,6 +208,7 @@ class Arith extends JavaTokenParsers {
               stackbooltipo.clear()
             }
             else {
+                distinct.foreach{println}
                 println("Erro de tipo: dois lados da expressão booleana com tipos diferentes")
                 sys.exit(1)
             }
@@ -258,6 +257,7 @@ class Arith extends JavaTokenParsers {
     
     def expr_simples:Parser[Object] = termo ~ rep( ("+"|"-") ~ termo ) ^^
     { e =>
+      stackbooltipo foreach println;
       //TIPO
       val distinct = stacktipo.distinct
       if ( distinct.size == 1 || ( distinct.size == 2 && distinct.contains("integer") ) )
@@ -268,11 +268,11 @@ class Arith extends JavaTokenParsers {
           else { stacktipo.pop(); stackbooltipo.push( stacktipo.pop() ) }
         else
           stackbooltipo.push( stacktipo.top )
-        stacktipo.clear()
       } else {
-        println("Erro de tipo detectado! Expresão com tipos diferentes")
+        println("Erro de tipo: Expresão com tipos diferentes")
         sys.exit(1)
       }
+      stacktipo.clear()
       //END
       e match {
         case t ~ lst if ! lst.isEmpty =>