12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- import { Types } from './../ast/types';
- const tiposComandos = Object.freeze({comment:"comment", reader:"reader", writer:"writer"});
- export class Variavel {
- constructor (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;
- }
- }
- export class Funcao {
- constructor (nome, tipo_retorno = Types.VOID, dimensoes_retorno = 0, lista_parametros = null, eh_principal = false, esta_oculta = false, variaveis = [], 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 = [];
- }
- }
- export class Comentario {
-
- constructor (texto_comentario) {
- this.tipo = tiposComandos.comment;
- this.texto_comentario = texto_comentario;
- }
- }
- export class Comando {
- constructor (tipo) {
- this.tipo = tipo;
- }
- }
- export class Expressao {
- constructor (conteudo) {
- this.conteudo = conteudo;
- }
- }
- export class Programa {
- constructor () {
- this.funcoes = [];
- this.globais = [];
- };
- adicionarFuncao (funcao) {
- this.funcoes.push(funcao);
- }
- adicionarVariavel(funcao, variavel) {
- if (this.funcoes[funcao].variaveis === null) {
- this.funcoes[funcao].variaveis = [];
- }
- this.funcoes[funcao].variaveis.push(variavel);
- }
- adicionarGlobal (variavel) {
- this.globais.push(variavel);
- }
- }
|