UNPKG

@designliquido/delegua

Version:

Linguagem de programação simples e moderna usando português estruturado.

41 lines 2.09 kB
import { SimboloInterface } from '../../../interfaces'; import { PilhaEscoposExecucao } from '../../pilha-escopos-execucao'; /** * Pilha de escopos de execução específica para Pituguês. * * Diferentemente de Delégua, Pituguês segue a regra de escopo local-first do * Python para atribuições dentro de funções: * * - Fora de uma função (escopo global, laços no nível global): o comportamento * é o padrão — a pilha é percorrida para encontrar a variável e atualizá-la, * ou ela é criada no escopo atual caso ainda não exista. * * - Dentro de uma função: a atribuição é sempre resolvida dentro da cadeia de * escopos da própria função (do topo da pilha até o escopo de tipo 'funcao' * inclusive), sem cruzar a fronteira para escopos ancestrais (globais). Se a * variável não for encontrada nessa cadeia, ela é criada no escopo da função * (não no escopo de laço interno, refletindo o comportamento do Python onde * `if`/`while`/`for` não criam namespaces próprios). * * Leituras continuam percorrendo toda a pilha normalmente. */ export declare class PilhaEscoposExecucaoPitugues extends PilhaEscoposExecucao { /** * Retorna o índice do escopo de função mais recente na pilha, ou -1 se não * houver nenhum (estamos no nível global). */ private indiceFuncaoAtual; /** * Atribui um valor a uma variável seguindo a semântica de escopo do Pituguês. * * Casos: * 1. Atribuição indexada (`x[i] = v`) → comportamento padrão (percorre a pilha). * 2. Fora de função → comportamento padrão com criação implícita se necessário. * 3. Dentro de função: * a. Variável encontrada na cadeia de escopos da função → atualiza lá. * b. Variável não encontrada (só existe no escopo global, ou é nova) → * cria no escopo da função (não no escopo de laço interno). */ atribuirVariavel(simbolo: SimboloInterface, valor: any, indice?: number): void; } //# sourceMappingURL=pilha-escopos-execucao-pitugues.d.ts.map