1em que cada letra representa a declaração de uma variável.
2 {
3 x y
4
5 {
6 a
7 b
8 }
9 {
10 t
11 { r }
12 h}
13 c
14 }
A saída do programa deverá ser:
Declaração de x na linha 3Sugestão: Use uma pilha de caracteres para guardar os nomes das variáveis. Quando aparece no programa um '{' insere na pilha um sinal de início de âmbito (por exemplo o próprio '{'). Quando aparece uma variável insere o seu nome na pilha. Quando termina um âmbito (ou seja, quando aparece um '}') tem apenas de desempilhar até encontrar um sinal de início de âmbito.
Declaração de y na linha 3
Declaração de a na linha 6
Declaração de b na linha 7
Fim de âmbito de b, a na linha 8
Declaração de t na linha 10
Declaração de r na linha 11
Fim de âmbito de r na linha 11
Declaração de h na linha 12
Fim de âmbito de h, t na linha 12
Declaração de c na linha 13
Fim de âmbito de c, y, x na linha 14
Opcionalmente pode, cada vez que encontrar um '?' no ficheiro, mostrar todas as variáveis declaradas no respectivo bloco até ao momento. Para resolver esta parte do exercício isso poderá usar duas pilhas. Pode ainda tornar o programa mais poderoso se, de cada vez que encontrar '!', mostrar todas as variáveis visíveis nesse ponto (admite-se que uma variável de um bloco é visível dentro de qualquer sub-bloco do mesmo bloco após a sua declaração).