| 
					
				 | 
			
			
				@@ -322,12 +322,26 @@ export class SemanticAnalyser { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       this.checkCommands(type, cmd.commands, optional); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } else if (cmd instanceof For) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      this.checkCommand(type, cmd.assignment, optional); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      const resultType = this.evaluateExpressionType(cmd.condition); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      if (!resultType.isCompatible(Types.BOOLEAN)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        throw ProcessorErrorFactory.for_condition_type_full(cmd.condition.toString(), cmd.sourceInfo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const var_type = this.evaluateExpressionType(cmd.for_id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (!var_type.isCompatible(Types.INTEGER)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // TODO better error message 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        throw new Error("A variavel do comando repita_para deve ser do tipo inteiro"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const from_type = this.evaluateExpressionType(cmd.for_from); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (!from_type.isCompatible(Types.INTEGER)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // TODO better error message 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        throw new Error("o paramentro 'de' do comando repita_para deve ser do tipo inteiro"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const to_type = this.evaluateExpressionType(cmd.for_to); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (!to_type.isCompatible(Types.INTEGER)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // TODO better error message 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        throw new Error("o paramentro 'ate' do comando repita_para deve ser do tipo inteiro"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const pass_type = this.evaluateExpressionType(cmd.for_pass); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (!pass_type.isCompatible(Types.INTEGER)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // TODO better error message 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        throw new Error("o paramentro 'passo' do comando repita_para deve ser do tipo inteiro"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      this.checkCommand(type, cmd.increment, optional); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       this.checkCommands(type, cmd.commands, optional); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } else if (cmd instanceof Switch) { 
			 |