diff --git a/T2/steamdb.rb b/T2/steamdb.rb
index 7284e2ff4d1a3a025eaca76702f35c5dfebd05c1..f42c55cff0894be9d58eb764e9d9b31540655adc 100644
--- a/T2/steamdb.rb
+++ b/T2/steamdb.rb
@@ -8,6 +8,35 @@ def is_a_integer (integer)
   integer =~ /\A\d+\z/ ? true : false
 end
 
+def parse_input (string)
+  i = 0
+  args = []
+  arg = ''
+  begin_quote = false
+  string.each_char do |c|
+    if c == '"'
+      begin_quote = !begin_quote
+    end
+
+    if c != ' ' || begin_quote == true
+      arg = arg + c
+    else
+      args[i] = arg
+      i = i + 1
+      arg = ''
+    end
+  end
+
+  if !begin_quote
+    args[i] = arg
+  elsif
+    puts "Erro de Síntaxe: Aspas não encontradas."
+    args = []
+  end
+
+  return args
+end
+
 def insere(tabela, args)
   error = false
   case tabela 
@@ -34,9 +63,12 @@ def insere(tabela, args)
         puts "Atributo #{x[0]} não encontrado."
         error = true
       end
+      if error 
+        break
+      end 
       next
     end 
-    if (!error)
+    if !error
       dev.save
       puts "Linha inserida na tabela #{tabela}."
     end
@@ -77,6 +109,9 @@ def insere(tabela, args)
         puts "Atributo #{x[0]} não encontrado."
         error = true
       end
+      if error 
+        break
+      end 
       next
     end 
     if (!error)
@@ -120,6 +155,9 @@ def insere(tabela, args)
         puts "Atributo #{x[0]} não encontrado."
         error = true
       end
+      if error
+        break
+      end
       next
     end
     if (!error)
@@ -149,6 +187,9 @@ def insere(tabela, args)
         puts "Atributo #{x[0]} não encontrado."
         error = true
       end
+      if error 
+        break
+      end 
       next
     end 
     if (!error)
@@ -178,6 +219,9 @@ def insere(tabela, args)
         puts "Atributo #{x[0]} não encontrado."
         error = true
       end
+      if error 
+        break
+      end 
       next
     end 
     if (!error)
@@ -223,12 +267,16 @@ def exclui(tabela, args)
         puts "Atributo #{x[0]} não encontrado."
         error = true
       end
+      if error 
+        break
+      end 
       next
     end
     if to_be_deleted.length > 0
       to_be_deleted.each do |d| 
         d.destroy
       end
+      puts "#{to_be_deleted.length} linha(s) deletada(s) da tabela #{tabela}!"
     end
   when "games"
     to_be_deleted = Game.all
@@ -274,12 +322,16 @@ def exclui(tabela, args)
         puts "Atributo #{x[0]} não encontrado."
         error = true
       end
+      if error 
+        break
+      end 
       next
     end
     if to_be_deleted.length > 0
       to_be_deleted.each do |d| 
         d.destroy
       end
+      puts "#{to_be_deleted.length} linha(s) deletada(s) da tabela #{tabela}!"
     end
   when "prices"
     to_be_deleted = Price.all
@@ -325,12 +377,16 @@ def exclui(tabela, args)
       	puts "Atributo #{x[0]} não encontrado."
       	error = true;
       end
+      if error 
+        break
+      end 
       next
     end
     if to_be_deleted.length > 0
       to_be_deleted.each do |d|
         d.destroy
       end
+      puts "#{to_be_deleted.length} linha(s) deletada(s) da tabela #{tabela}!"
     end
   when "categories"
     to_be_deleted = Category.all
@@ -362,12 +418,16 @@ def exclui(tabela, args)
         puts "Atributo #{x[0]} não encontrado."
         error = true;
       end
+      if error 
+        break
+      end 
       next
     end
     if to_be_deleted.length > 0
       to_be_deleted.each do |d|
         d.destroy
       end
+      puts "#{to_be_deleted.length} linha(s) deletada(s) da tabela #{tabela}!"
     end
   when "category_games"
     to_be_deleted = CategoryGame.all
@@ -392,22 +452,29 @@ def exclui(tabela, args)
         puts "Atributo #{x[0]} não encontrado."
         error = true;
       end
+      if error 
+        break
+      end 
       next
     end
     if to_be_deleted.length > 0
       to_be_deleted.each do |d|
         d.destroy
       end
+      puts "#{to_be_deleted.length} linha(s) deletada(s) da tabela #{tabela}!"
     end
   else
     puts "Tabela #{tabela} não encontrada."
   end
 end
 
-def altera(tabela)
+.select {|alt| alt.name == x[1].tr('"','')}
+
+def altera(tabela, args)
+  error = false
   case tabela
   when "developers"
-    #???????? como alterar? sintaxe do comando
+    
   when "games"
 
   when "prices"
@@ -464,25 +531,22 @@ end
 puts "Olá! Seja bem vindo ao SteamDB!"
 
 while true do
-  args = gets.split(" ")
+  args = parse_input(gets.tr("\n",""))
 
-  case args[0]
-  when "insere"
-    insere(args[1],args[2..args.length-1])
-  when "exclui"
-    exclui(args[1],args[2..args.length-1])
-  when "altera"
-    altera(args[1],args[2..args.length-1])
-  when "lista"
-    lista(args[1])
-  when "sair"
-    exit()
-  else 
-    puts "Comando não encontrado."
+  if args.length > 0
+    case args[0]
+    when "insere"
+      insere(args[1],args[2..args.length-1])
+    when "exclui"
+      exclui(args[1],args[2..args.length-1])
+    when "altera"
+      altera(args[1],args[2..args.length-1])
+    when "lista"
+      lista(args[1])
+    when "sair"
+      exit()
+    else 
+      puts "Comando não encontrado."
+    end
   end
 end
-
-
-# 1 x n = 1 usuário tendo vários jogos
-# 1 x 1 = 1 jogo só tem 1 tabela de preços (preços por país)
-# n x n = vários jogos tem várias categorias