ivprog-visual-1.0.js 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. // Definição das classes utilizadas para armazenar o algoritmo
  2. // Não adicionar elementos ao tipoDados, pois existem componentes que dependem do seu tamanho e isso afetará seu funcionamento
  3. var tiposDados = Object.freeze({void:"void", integer:"integer", real:"real", text:"text", boolean:"boolean", vector:"vector"});
  4. var tiposComandos = Object.freeze({comment:"comment", reader:"reader", writer:"writer"});
  5. var Variavel = function(tipo, nome, valor, dimensoes = 0, eh_constante = false, linhas = 0, colunas = 0) {
  6. this.tipo = tipo;
  7. this.nome = nome;
  8. this.valor = valor;
  9. this.dimensoes = dimensoes;
  10. this.eh_constante = eh_constante;
  11. this.linhas = linhas;
  12. this.colunas = colunas;
  13. };
  14. 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) {
  15. this.nome = nome;
  16. this.tipo_retorno = tipo_retorno;
  17. this.dimensoes_retorno = dimensoes_retorno;
  18. this.lista_parametros = lista_parametros;
  19. this.eh_principal = eh_principal;
  20. this.esta_oculta = esta_oculta;
  21. this.variaveis = variaveis;
  22. this.comentario_funcao = comentario_funcao;
  23. this.comandos = null;
  24. };
  25. var Comentario = function(texto_comentario) {
  26. this.tipo = tiposComandos.comment;
  27. this.texto_comentario = texto_comentario;
  28. };
  29. var Comando = function(tipo) {
  30. this.tipo = tipo;
  31. };
  32. var Expressao = function(conteudo) {
  33. this.conteudo = conteudo;
  34. };
  35. var Programa = function () {
  36. this.funcoes = new Array();
  37. this.globais = new Array();
  38. };
  39. function adicionarFuncao(funcao) {
  40. programa.funcoes.push(funcao);
  41. }
  42. function adicionarVariavel(funcao, variavel) {
  43. if (programa.funcoes[funcao].variaveis == null) {
  44. programa.funcoes[funcao].variaveis = new Array();
  45. }
  46. programa.funcoes[funcao].variaveis.push(variavel);
  47. }
  48. //var tex = i18n('text');
  49. // Adicionando a função principal automaticamente
  50. var programa = new Programa();
  51. var funcaoPrincipal = new Funcao(i18n("start"), tiposDados.void, 0, [], true);
  52. funcaoPrincipal.comentario_funcao = new Comentario(i18n('text_comment_main'));
  53. //funcaoPrincipal.lista_parametros.push(new Variavel(tiposDados.text, "args"));
  54. adicionarFuncao(funcaoPrincipal);
  55. var funcaoSomar = new Funcao("somar", tiposDados.integer, 0, [], false, false, null, new Comentario(i18n('text_comment_start')));
  56. funcaoSomar.lista_parametros.push(new Variavel(tiposDados.integer, "a"));
  57. funcaoSomar.lista_parametros.push(new Variavel(tiposDados.integer, "b"));
  58. adicionarFuncao(funcaoSomar);