|  | @@ -1,32 +1,76 @@
 | 
	
		
			
				|  |  |  // Definição das classes utilizadas para armazenar o algoritmo
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -var tiposDados = Object.freeze({void:"void", integer:"integer", real:"real", text:"text", boolean:"boolean"});
 | 
	
		
			
				|  |  | +// Não adicionar elementos ao tipoDados, pois existem componentes que dependem do seu tamanho e isso afetará seu funcionamento
 | 
	
		
			
				|  |  | +var tiposDados = Object.freeze({void:"void", integer:"integer", real:"real", text:"text", boolean:"boolean", vector:"vector"});
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -var Variavel = function(tipo, nome, dimensoes = 0) {
 | 
	
		
			
				|  |  | +var tiposComandos = Object.freeze({comment:"comment", reader:"reader", writer:"writer"});
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +var Variavel = function(tipo, nome, valor, dimensoes = 0, eh_constante = false, linhas = 0, colunas = 0) {
 | 
	
		
			
				|  |  |  	this.tipo = tipo;
 | 
	
		
			
				|  |  |  	this.nome = nome;
 | 
	
		
			
				|  |  | +	this.valor = valor;
 | 
	
		
			
				|  |  |  	this.dimensoes = dimensoes;
 | 
	
		
			
				|  |  | +	this.eh_constante = eh_constante;
 | 
	
		
			
				|  |  | +	this.linhas = linhas;
 | 
	
		
			
				|  |  | +	this.colunas = colunas;
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -var Funcao = function(nome, tipo_retorno = tiposDados.void, dimensoes_retorno = 0, lista_parametros = null, eh_principal = false, esta_oculta = false) {
 | 
	
		
			
				|  |  | +var Funcao = function(nome, tipo_retorno = tiposDados.void, dimensoes_retorno = 0, lista_parametros = null, eh_principal = false, esta_oculta = false, variaveis = null, comentario_funcao = null) {
 | 
	
		
			
				|  |  |  	this.nome = nome;
 | 
	
		
			
				|  |  |  	this.tipo_retorno = tipo_retorno;
 | 
	
		
			
				|  |  |  	this.dimensoes_retorno = dimensoes_retorno;
 | 
	
		
			
				|  |  |  	this.lista_parametros = lista_parametros;
 | 
	
		
			
				|  |  |  	this.eh_principal = eh_principal;
 | 
	
		
			
				|  |  |  	this.esta_oculta = esta_oculta;
 | 
	
		
			
				|  |  | +	this.variaveis = variaveis;
 | 
	
		
			
				|  |  | +	this.comentario_funcao = comentario_funcao;
 | 
	
		
			
				|  |  | +	this.comandos = null;
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +var Comentario = function(texto_comentario) {
 | 
	
		
			
				|  |  | +	this.tipo = tiposComandos.comment;
 | 
	
		
			
				|  |  | +	this.texto_comentario = texto_comentario;
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +var Comando = function(tipo) {
 | 
	
		
			
				|  |  | +	this.tipo = tipo;
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +var Expressao = function(conteudo) {
 | 
	
		
			
				|  |  | +	this.conteudo = conteudo;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  var Programa = function () {
 | 
	
		
			
				|  |  |  	this.funcoes = new Array();
 | 
	
		
			
				|  |  | +	this.globais = new Array();
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  function adicionarFuncao(funcao) {
 | 
	
		
			
				|  |  |  	programa.funcoes.push(funcao);
 | 
	
		
			
				|  |  | -};
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +function adicionarVariavel(funcao, variavel) {
 | 
	
		
			
				|  |  | +	if (programa.funcoes[funcao].variaveis == null) {
 | 
	
		
			
				|  |  | +		programa.funcoes[funcao].variaveis = new Array();
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	programa.funcoes[funcao].variaveis.push(variavel);
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +//var tex = i18n('text');
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // Adicionando a função principal automaticamente
 | 
	
		
			
				|  |  |  var programa = new Programa();
 | 
	
		
			
				|  |  | -var funcaoPrincipal = new Funcao("principal", tiposDados.void, 0, null, true);
 | 
	
		
			
				|  |  | +var funcaoPrincipal = new Funcao(i18n("start"), tiposDados.void, 0, [], true);
 | 
	
		
			
				|  |  | +funcaoPrincipal.comentario_funcao = new Comentario(i18n('text_comment_main'));
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +//funcaoPrincipal.lista_parametros.push(new Variavel(tiposDados.text, "args"));
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +adicionarFuncao(funcaoPrincipal);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +var funcaoSomar = new Funcao("somar", tiposDados.integer, 0, [], false, false, null, new Comentario(i18n('text_comment_start')));
 | 
	
		
			
				|  |  | +funcaoSomar.lista_parametros.push(new Variavel(tiposDados.integer, "a"));
 | 
	
		
			
				|  |  | +funcaoSomar.lista_parametros.push(new Variavel(tiposDados.integer, "b"));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -adicionarFuncao(funcaoPrincipal);
 | 
	
		
			
				|  |  | +adicionarFuncao(funcaoSomar);
 |