Repository: DesignLiquido/delegua
Pull request #240 (2023-01-14 18:28:56)

Lexador Birl criando tokens individuais.


Patch:
diff --git a/.vscode/launch.json b/.vscode/launch.json
index 501f79b3..0209c6c1 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -15,7 +15,7 @@
                 "${workspaceFolder}${pathSeparator}execucao.ts",
                 "--dialeto",
                 "birl",
-                "./exemplos/birl/teste1.birl"
+                "./testes/exemplos/birl/teste1.birl"
             ],
             "runtimeExecutable": "node",
             "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
@@ -43,7 +43,7 @@
             "console": "integratedTerminal",
             "args": [
                 "${workspaceFolder}${pathSeparator}execucao.ts",
-                "./exemplos/dialetos/egua-classico/bhaskara.egua"
+                "./testes/exemplos/dialetos/egua-classico/bhaskara.egua"
             ],
             "runtimeExecutable": "node",
             "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
@@ -57,7 +57,7 @@
             "console": "integratedTerminal",
             "args": [
                 "${workspaceFolder}${pathSeparator}execucao.ts",
-                "./exemplos/estruturas-de-repeticao/enquanto.delegua"
+                "./testes/exemplos/estruturas-de-repeticao/enquanto.delegua"
             ],
             "runtimeExecutable": "node",
             "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
@@ -71,7 +71,7 @@
             "console": "integratedTerminal",
             "args": [
                 "${workspaceFolder}${pathSeparator}execucao.ts",
-                "./exemplos/estruturas-de-repeticao/enquanto-continua.delegua"
+                "./testes/exemplos/estruturas-de-repeticao/enquanto-continua.delegua"
             ],
             "runtimeExecutable": "node",
             "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
@@ -85,7 +85,7 @@
             "console": "integratedTerminal",
             "args": [
                 "${workspaceFolder}${pathSeparator}execucao.ts",
-                "./exemplos/estruturas-de-repeticao/fazer-enquanto.delegua"
+                "./testes/exemplos/estruturas-de-repeticao/fazer-enquanto.delegua"
             ],
             "runtimeExecutable": "node",
             "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
@@ -99,7 +99,7 @@
             "console": "integratedTerminal",
             "args": [
                 "${workspaceFolder}${pathSeparator}execucao.ts",
-                "./exemplos/estruturas-de-repeticao/fazer-enquanto-continua.delegua"
+                "./testes/exemplos/estruturas-de-repeticao/fazer-enquanto-continua.delegua"
             ],
             "runtimeExecutable": "node",
             "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
@@ -113,7 +113,7 @@
             "console": "integratedTerminal",
             "args": [
                 "${workspaceFolder}${pathSeparator}execucao.ts",
-                "./exemplos/estruturas-de-repeticao/para.delegua"
+                "./testes/exemplos/estruturas-de-repeticao/para.delegua"
             ],
             "runtimeExecutable": "node",
             "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
@@ -127,7 +127,7 @@
             "console": "integratedTerminal",
             "args": [
                 "${workspaceFolder}${pathSeparator}execucao.ts",
-                "./exemplos/estruturas-de-repeticao/para-continua.delegua"
+                "./testes/exemplos/estruturas-de-repeticao/para-continua.delegua"
             ],
             "runtimeExecutable": "node",
             "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
@@ -139,18 +139,7 @@
             "skipFiles": ["<node_internals>/**", "node_modules/**"],
             "cwd": "${workspaceRoot}",
             "console": "integratedTerminal",
-            "args": ["${workspaceFolder}${pathSeparator}execucao.ts", "./exemplos/condicionais/se.delegua"],
-            "runtimeExecutable": "node",
-            "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
-        },
-        {
-            "type": "node",
-            "request": "launch",
-            "name": "Delégua > Classes > Classe vazia",
-            "skipFiles": ["<node_internals>/**", "node_modules/**"],
-            "cwd": "${workspaceRoot}",
-            "console": "integratedTerminal",
-            "args": ["${workspaceFolder}${pathSeparator}execucao.ts", "./exemplos/classes/classe-vazia.delegua"],
+            "args": ["${workspaceFolder}${pathSeparator}execucao.ts", "./testes/exemplos/condicionais/se.delegua"],
             "runtimeExecutable": "node",
             "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
         },
@@ -161,22 +150,7 @@
             "skipFiles": ["<node_internals>/**", "node_modules/**"],
             "cwd": "${workspaceRoot}",
             "console": "integratedTerminal",
-            "args": ["${workspaceFolder}${pathSeparator}execucao.ts", "./exemplos/classes/construtor-classe.delegua"],
-            "runtimeExecutable": "node",
-            "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
-        },
-        {
-            "type": "node",
-            "request": "launch",
-            "name": "Delégua > Classes > Herança",
-            "skipFiles": ["<node_internals>/**", "node_modules/**"],
-            "cwd": "${workspaceRoot}",
-            "console": "integratedTerminal",
-            "args": [
-                "${workspaceFolder}${pathSeparator}execucao.ts", 
-                // "--depurador",
-                "./exemplos/classes/heranca.delegua"
-            ],
+            "args": ["${workspaceFolder}${pathSeparator}execucao.ts", "./testes/exemplos/classes/construtor-classe.delegua"],
             "runtimeExecutable": "node",
             "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
         },
@@ -187,22 +161,7 @@
             "skipFiles": ["<node_internals>/**", "node_modules/**"],
             "cwd": "${workspaceRoot}",
             "console": "integratedTerminal",
-            "args": ["${workspaceFolder}${pathSeparator}execucao.ts", "./exemplos/condicionais/escolha.delegua"],
-            "runtimeExecutable": "node",
-            "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
-        },
-        {
-            "type": "node",
-            "request": "launch",
-            "name": "Delégua > Estruturas de Dados > Inteiros",
-            "skipFiles": ["<node_internals>/**", "node_modules/**"],
-            "cwd": "${workspaceRoot}",
-            "console": "integratedTerminal",
-            "args": [
-                "${workspaceFolder}${pathSeparator}execucao.ts", 
-                // "--depurador",
-                "./exemplos/estruturas-de-dados/inteiros.delegua"
-            ],
+            "args": ["${workspaceFolder}${pathSeparator}execucao.ts", "./testes/exemplos/condicionais/escolha.delegua"],
             "runtimeExecutable": "node",
             "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
         },
@@ -213,7 +172,7 @@
             "skipFiles": ["<node_internals>/**", "node_modules/**"],
             "cwd": "${workspaceRoot}",
             "console": "integratedTerminal",
-            "args": ["${workspaceFolder}${pathSeparator}execucao.ts", "./exemplos/estruturas-de-repeticao/fazer-enquanto.delegua"],
+            "args": ["${workspaceFolder}${pathSeparator}execucao.ts", "./testes/exemplos/estruturas-de-repeticao/fazer-enquanto.delegua"],
             "runtimeExecutable": "node",
             "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
         },
@@ -224,7 +183,7 @@
             "skipFiles": ["<node_internals>/**", "node_modules/**"],
             "cwd": "${workspaceRoot}",
             "console": "integratedTerminal",
-            "args": ["${workspaceFolder}${pathSeparator}execucao.ts", "./exemplos/fibonacci.delegua"],
+            "args": ["${workspaceFolder}${pathSeparator}execucao.ts", "./testes/exemplos/fibonacci.delegua"],
             "runtimeExecutable": "node",
             "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
         },
@@ -237,7 +196,7 @@
             "console": "integratedTerminal",
             "args": [
                 "${workspaceFolder}${pathSeparator}execucao.ts",
-                "./exemplos/fila-estatica.delegua"
+                "./testes/exemplos/fila-estatica.delegua"
             ],
             "runtimeExecutable": "node",
             "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
@@ -249,7 +208,7 @@
             "skipFiles": ["<node_internals>/**", "node_modules/**"],
             "cwd": "${workspaceRoot}",
             "console": "integratedTerminal",
-            "args": ["${workspaceFolder}${pathSeparator}execucao.ts", "./exemplos/fizzbuzz.egua"],
+            "args": ["${workspaceFolder}${pathSeparator}execucao.ts", "./testes/exemplos/fizzbuzz.egua"],
             "runtimeExecutable": "node",
             "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
         },
@@ -263,7 +222,7 @@
             "args": [
                 "${workspaceFolder}${pathSeparator}execucao.ts",
                 // "--depurador",
-                "./exemplos/funcoes/funcoes-anonimas.delegua"
+                "./testes/exemplos/funcoes/funcoes-anonimas.delegua"
             ],
             "runtimeExecutable": "node",
             "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
@@ -278,7 +237,7 @@
             "args": [
                 "${workspaceFolder}${pathSeparator}execucao.ts",
                 // "--depurador",
-                "./exemplos/importacao/inicial.delegua"
+                "./testes/exemplos/importacao/inicial.delegua"
             ],
             "runtimeExecutable": "node",
             "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
@@ -293,7 +252,7 @@
             "args": [
                 "${workspaceFolder}${pathSeparator}execucao.ts",
                 // "--depurador",
-                "./exemplos/estruturas-de-dados/inteiros.delegua"
+                "./testes/exemplos/estruturas-de-dados/inteiros.delegua"
             ],
             "runtimeExecutable": "node",
             "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
@@ -307,7 +266,7 @@
             "console": "integratedTerminal",
             "args": [
                 "${workspaceFolder}${pathSeparator}execucao.ts",
-                "./exemplos/leia.delegua"
+                "./testes/exemplos/leia.delegua"
             ],
             "runtimeExecutable": "node",
             "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
@@ -319,7 +278,7 @@
             "skipFiles": ["<node_internals>/**", "node_modules/**"],
             "cwd": "${workspaceRoot}",
             "console": "integratedTerminal",
-            "args": ["${workspaceFolder}${pathSeparator}execucao.ts", "./exemplos/media.delegua"],
+            "args": ["${workspaceFolder}${pathSeparator}execucao.ts", "./testes/exemplos/media.delegua"],
             "runtimeExecutable": "node",
             "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
         },
@@ -332,7 +291,7 @@
             "console": "integratedTerminal",
             "args": [
                 "${workspaceFolder}${pathSeparator}execucao.ts",
-                "./exemplos/perceptron.delegua"
+                "./testes/exemplos/perceptron.delegua"
             ],
             "runtimeExecutable": "node",
             "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
@@ -346,7 +305,7 @@
             "console": "integratedTerminal",
             "args": [
                 "${workspaceFolder}${pathSeparator}execucao.ts",
-                "./exemplos/primitivas/texto/minusculo.delegua"
+                "./testes/exemplos/primitivas/texto/minusculo.delegua"
             ],
             "runtimeExecutable": "node",
             "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
@@ -358,7 +317,7 @@
             "skipFiles": ["<node_internals>/**", "node_modules/**"],
             "cwd": "${workspaceRoot}",
             "console": "integratedTerminal",
-            "args": ["${workspaceFolder}${pathSeparator}execucao.ts", "./exemplos/primitivas/lista/inclui.delegua"],
+            "args": ["${workspaceFolder}${pathSeparator}execucao.ts", "./testes/exemplos/primitivas/lista/inclui.delegua"],
             "runtimeExecutable": "node",
             "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
         },
@@ -382,7 +341,7 @@
             "console": "integratedTerminal",
             "args": [
                 "${workspaceFolder}${pathSeparator}execucao.ts",
-                "./exemplos/classes/teste-classe.delegua"
+                "./testes/exemplos/classes/teste-classe.delegua"
             ],
             "runtimeExecutable": "node",
             "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
@@ -394,7 +353,7 @@
             "skipFiles": ["<node_internals>/**", "node_modules/**"],
             "cwd": "${workspaceRoot}",
             "console": "integratedTerminal",
-            "args": ["${workspaceFolder}${pathSeparator}execucao.ts", "-p", "./exemplos/testes.egua"],
+            "args": ["${workspaceFolder}${pathSeparator}execucao.ts", "-p", "./testes/exemplos/testes.egua"],
             "runtimeExecutable": "node",
             "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
         },
@@ -405,7 +364,7 @@
             "runtimeArgs": [
                 "--inspect-brk",
                 "${workspaceRoot}/node_modules/jest/bin/jest.js",
-                "tradutor-javascript.test.ts",
+                // "interpretador.test.ts",
                 "--runInBand"
             ],
             "skipFiles": ["<node_internals>/**", "node_modules/**"],
@@ -440,23 +399,6 @@
             "console": "integratedTerminal",
             "internalConsoleOptions": "neverOpen"
         },
-        {
-            "type": "node",
-            "request": "launch",
-            "name": "Tradutores > Delégua > JavaScript > Teste",
-            "skipFiles": ["<node_internals>/**", "node_modules/**"],
-            "cwd": "${workspaceRoot}",
-            "console": "integratedTerminal",
-            "args": [
-                "${workspaceFolder}${pathSeparator}execucao.ts",
-                "-t",
-                "js",
-                "-s",
-                "./exemplos/condicionais/se.delegua"
-            ],
-            "runtimeExecutable": "node",
-            "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
-        },
         {
             "type": "node",
             "request": "launch",
@@ -467,7 +409,7 @@
             "args": [
                 "${workspaceFolder}${pathSeparator}execucao.ts",
                 // "--depurador",
-                "./exemplos/index.delegua"
+                "./testes/exemplos/index.delegua"
             ],
             "runtimeExecutable": "node",
             "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
@@ -483,7 +425,7 @@
                 "${workspaceFolder}${pathSeparator}execucao.ts",
                 "--dialeto",
                 "egua",
-                "./exemplos/dialetos/egua-classico/bhaskara.egua"
+                "./testes/exemplos/dialetos/egua-classico/bhaskara.egua"
             ],
             "runtimeExecutable": "node",
             "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
@@ -499,7 +441,7 @@
                 "${workspaceFolder}${pathSeparator}execucao.ts",
                 "--dialeto",
                 "egua",
-                "./exemplos/dialetos/egua-classico/estruturas-de-repeticao/para-continua.egua"
+                "./testes/exemplos/dialetos/egua-classico/estruturas-de-repeticao/para-continua.egua"
             ],
             "runtimeExecutable": "node",
             "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
@@ -515,7 +457,7 @@
                 "${workspaceFolder}${pathSeparator}execucao.ts",
                 "--dialeto",
                 "egua",
-                "./exemplos/dialetos/egua-classico/fibonacci.egua"
+                "./testes/exemplos/dialetos/egua-classico/fibonacci.egua"
             ],
             "runtimeExecutable": "node",
             "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
@@ -531,7 +473,7 @@
                 "${workspaceFolder}${pathSeparator}execucao.ts",
                 "--dialeto",
                 "egua",
-                "./exemplos/classes/construtor-classe.egua"
+                "./testes/exemplos/classes/construtor-classe.egua"
             ],
             "runtimeExecutable": "node",
             "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
@@ -547,7 +489,7 @@
                 "${workspaceFolder}${pathSeparator}execucao.ts",
                 "--dialeto",
                 "egua",
-                "./exemplos/dialetos/egua-classico/merge-sort.egua"
+                "./testes/exemplos/dialetos/egua-classico/merge-sort.egua"
             ],
             "runtimeExecutable": "node",
             "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
@@ -563,39 +505,7 @@
                 "${workspaceFolder}${pathSeparator}execucao.ts",
                 "--dialeto",
                 "egua",
-                "./exemplos/dialetos/egua-classico/fila-estatica.egua"
-            ],
-            "runtimeExecutable": "node",
-            "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
-        },
-        {
-            "type": "node",
-            "request": "launch",
-            "name": "Égua Clássico > Funções > Retorna sem valor",
-            "skipFiles": ["<node_internals>/**", "node_modules/**"],
-            "cwd": "${workspaceRoot}",
-            "console": "integratedTerminal",
-            "args": [
-                "${workspaceFolder}${pathSeparator}execucao.ts",
-                "--dialeto",
-                "egua",
-                "./exemplos/dialetos/egua-classico/funcoes/retorna-sem-valor.egua"
-            ],
-            "runtimeExecutable": "node",
-            "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
-        },
-        {
-            "type": "node",
-            "request": "launch",
-            "name": "Égua Clássico > Biblioteca Matemática > Gerar pontos da abscissa",
-            "skipFiles": ["<node_internals>/**", "node_modules/**"],
-            "cwd": "${workspaceRoot}",
-            "console": "integratedTerminal",
-            "args": [
-                "${workspaceFolder}${pathSeparator}execucao.ts",
-                "--dialeto",
-                "egua",
-                "./exemplos/dialetos/egua-classico/bibliotecas/matematica/gerar-pontos-abscissa.egua"
+                "./testes/exemplos/dialetos/egua-classico/fila-estatica.egua"
             ],
             "runtimeExecutable": "node",
             "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
@@ -611,7 +521,7 @@
                 "${workspaceFolder}${pathSeparator}execucao.ts",
                 "--dialeto",
                 "egua",
-                "./exemplos/dialetos/egua-classico/perceptron.egua"
+                "./testes/exemplos/dialetos/egua-classico/perceptron.egua"
             ],
             "runtimeExecutable": "node",
             "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
@@ -638,7 +548,7 @@
                 "${workspaceFolder}${pathSeparator}execucao.ts",
                 "--dialeto",
                 "egua",
-                "./exemplos/testes.egua"
+                "./testes/exemplos/dialetos/egua-classico/testes.egua"
             ],
             "runtimeExecutable": "node",
             "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
@@ -654,7 +564,7 @@
                 "${workspaceFolder}${pathSeparator}execucao.ts",
                 "--dialeto",
                 "egua",
-                "./exemplos/dialetos/egua-classico/teste-classe.egua"
+                "./testes/exemplos/dialetos/egua-classico/teste-classe.egua"
             ],
             "runtimeExecutable": "node",
             "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
@@ -670,7 +580,7 @@
                 "${workspaceFolder}${pathSeparator}execucao.ts",
                 "--dialeto",
                 "eguap",
-                "./exemplos/dialetos/eguap/bhaskara.eguap"
+                "./testes/exemplos/dialetos/eguap/bhaskara.eguap"
             ],
             "runtimeExecutable": "node",
             "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
@@ -686,7 +596,7 @@
                 "${workspaceFolder}${pathSeparator}execucao.ts",
                 "--dialeto",
                 "eguap",
-                "./exemplos/dialetos/eguap/estruturas-de-repeticao/enquanto.eguap"
+                "./testes/exemplos/dialetos/eguap/estruturas-de-repeticao/enquanto.eguap"
             ],
             "runtimeExecutable": "node",
             "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
@@ -702,7 +612,7 @@
                 "${workspaceFolder}${pathSeparator}execucao.ts", 
                 "--dialeto",
                 "eguap",
-                "./exemplos/dialetos/eguap/condicionais/escolha.eguap"
+                "./testes/exemplos/dialetos/eguap/condicionais/escolha.eguap"
             ],
             "runtimeExecutable": "node",
             "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
@@ -718,7 +628,7 @@
                 "${workspaceFolder}${pathSeparator}execucao.ts",
                 "--dialeto",
                 "eguap",
-                "./exemplos/dialetos/eguap/estruturas-de-repeticao/fazer-enquanto.eguap"
+                "./testes/exemplos/dialetos/eguap/estruturas-de-repeticao/fazer-enquanto.eguap"
             ],
             "runtimeExecutable": "node",
             "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
@@ -734,7 +644,7 @@
                 "${workspaceFolder}${pathSeparator}execucao.ts",
                 "--dialeto",
                 "eguap",
-                "./exemplos/dialetos/eguap/estruturas-de-repeticao/para.eguap"
+                "./testes/exemplos/dialetos/eguap/estruturas-de-repeticao/para.eguap"
             ],
             "runtimeExecutable": "node",
             "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
@@ -750,7 +660,7 @@
                 "${workspaceFolder}${pathSeparator}execucao.ts", 
                 "--dialeto",
                 "eguap",
-                "./exemplos/dialetos/eguap/condicionais/se.eguap"
+                "./testes/exemplos/dialetos/eguap/condicionais/se.eguap"
             ],
             "runtimeExecutable": "node",
             "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
@@ -766,7 +676,7 @@
                 "${workspaceFolder}${pathSeparator}execucao.ts",
                 "--dialeto",
                 "eguap",
-                "./exemplos/dialetos/eguap/classes/teste-classe.eguap"
+                "./testes/exemplos/dialetos/eguap/classes/teste-classe.eguap"
             ],
             "runtimeExecutable": "node",
             "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
@@ -782,7 +692,7 @@
                 "${workspaceFolder}${pathSeparator}execucao.ts",
                 "--dialeto",
                 "eguap",
-                "./exemplos/dialetos/eguap/classes/construtor-classe.eguap"
+                "./testes/exemplos/dialetos/eguap/classes/construtor-classe.eguap"
             ],
             "runtimeExecutable": "node",
             "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
@@ -798,7 +708,7 @@
                 "${workspaceFolder}${pathSeparator}execucao.ts",
                 "--dialeto",
                 "eguap",
-                "./exemplos/dialetos/eguap/fizzbuzz.eguap"
+                "./testes/exemplos/dialetos/eguap/fizzbuzz.eguap"
             ],
             "runtimeExecutable": "node",
             "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
@@ -814,7 +724,7 @@
                 "${workspaceFolder}${pathSeparator}execucao.ts", 
                 "--dialeto",
                 "eguap",
-                "./exemplos/dialetos/eguap/media.eguap"
+                "./testes/exemplos/dialetos/eguap/media.eguap"
             ],
             "runtimeExecutable": "node",
             "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
@@ -830,6 +740,23 @@
             "runtimeExecutable": "node",
             "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
         },
+        {
+            "type": "node",
+            "request": "launch",
+            "name": "Tradutores > Delégua > JavaScript > Teste",
+            "skipFiles": ["<node_internals>/**", "node_modules/**"],
+            "cwd": "${workspaceRoot}",
+            "console": "integratedTerminal",
+            "args": [
+                "${workspaceFolder}${pathSeparator}execucao.ts",
+                "-t",
+                "js",
+                "-s",
+                "./testes/exemplos/condicionais/se.delegua"
+            ],
+            "runtimeExecutable": "node",
+            "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
+        },
         {
             "type": "node",
             "request": "launch",
@@ -841,7 +768,7 @@
                 "${workspaceFolder}${pathSeparator}execucao.ts",
                 "--dialeto",
                 "visualg",
-                "./exemplos/dialetos/visualg/divisao-inteira.alg"
+                "./testes/exemplos/dialetos/visualg/divisao-inteira.alg"
             ],
             "runtimeExecutable": "node",
             "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
@@ -857,7 +784,7 @@
                 "${workspaceFolder}${pathSeparator}execucao.ts",
                 "--dialeto",
                 "visualg",
-                "./exemplos/dialetos/visualg/exemplos-escreva.alg"
+                "./testes/exemplos/dialetos/visualg/exemplos-escreva.alg"
             ],
             "runtimeExecutable": "node",
             "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
@@ -873,7 +800,7 @@
                 "${workspaceFolder}${pathSeparator}execucao.ts",
                 "--dialeto",
                 "visualg",
-                "./exemplos/dialetos/visualg/ola-mundo.alg"
+                "./testes/exemplos/dialetos/visualg/ola-mundo.alg"
             ],
             "runtimeExecutable": "node",
             "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
@@ -889,7 +816,7 @@
                 "${workspaceFolder}${pathSeparator}execucao.ts",
                 "--dialeto",
                 "visualg",
-                "./exemplos/dialetos/visualg/times.alg"
+                "./testes/exemplos/dialetos/visualg/times.alg"
             ],
             "runtimeExecutable": "node",
             "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
@@ -905,7 +832,7 @@
                 "${workspaceFolder}${pathSeparator}execucao.ts",
                 "--dialeto",
                 "visualg",
-                "./exemplos/dialetos/visualg/um-a-dez-interrompa.alg"
+                "./testes/exemplos/dialetos/visualg/um-a-dez-interrompa.alg"
             ],
             "runtimeExecutable": "node",
             "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
@@ -921,7 +848,7 @@
                 "${workspaceFolder}${pathSeparator}execucao.ts",
                 "--dialeto",
                 "visualg",
-                "./exemplos/dialetos/visualg/variaveis.alg"
+                "./testes/exemplos/dialetos/visualg/variaveis.alg"
             ],
             "runtimeExecutable": "node",
             "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"]
diff --git a/README.md b/README.md
index 1bae5cca..138712fc 100644
--- a/README.md
+++ b/README.md
@@ -42,7 +42,7 @@
 
 ## Introdução
 
-Delégua é uma linguagem de programação cujo código começou como uma variação (_fork_) da [linguagem Égua](https://egua.tech), usada para fins educacionais e comerciais pela Design Líquido. A variação começou na versão 1.2.0 de Égua.
+Delégua é uma linguagem de programação cujo código começou como uma variação (_fork_) da linguagem Égua, usada para fins educacionais e comerciais pela Design Líquido. A variação começou na versão 1.2.0 de Égua.
 
 Delégua tem retrocompatibilidade com a linguagem Égua e compreende sua extensão de arquivo (`.egua`). Em outras palavras, todo programa escrito em Égua funciona em Delégua, mas Delégua tem capacidades a mais, [conforme mencionado em documentação](https://github.com/DesignLiquido/delegua/wiki).
 
@@ -65,7 +65,7 @@ Delégua executa em qualquer dispositivo que interprete JavaScript, ou seja, com
 Se quiser instalar no seu computador,
 [você deve ter antes o Node.js instalado em seu ambiente](https://dicasdejavascript.com.br/instalacao-do-nodejs-e-npm-no-windows-passo-a-passo).
 
-Com o Node.js instalado, execute o seguinte comando em um _prompt_ de comando (Terminal, PowerShell ou `cmd` no Windows, Terminal ou `bash` em Mac e Linux):
+Com o Node.js instalado, execute o seguinte comando em um prompt de comando (Terminal, PowerShell ou `cmd` no Windows, Terminal ou `bash` em Mac e Linux):
 
 ```
 npm install -g delegua
diff --git a/exemplos/classes/classe-vazia.delegua b/exemplos/classes/classe-vazia.delegua
deleted file mode 100644
index dc11f0e9..00000000
--- a/exemplos/classes/classe-vazia.delegua
+++ /dev/null
@@ -1,6 +0,0 @@
-classe Vazia {
-
-}
-
-var va = Vazia()
-escreva(va)
\ No newline at end of file
diff --git a/exemplos/classes/heranca.delegua b/exemplos/classes/heranca.delegua
deleted file mode 100644
index 8c0d1087..00000000
--- a/exemplos/classes/heranca.delegua
+++ /dev/null
@@ -1,14 +0,0 @@
-classe Animal {
-    correr() {
-        escreva("Correndo Loucamente");
-    }
-}
-classe Cachorro herda Animal {
-    latir() {
-        escreva("Au Au Au Au");
-    }
-}
-
-var nomeDoCachorro = Cachorro();
-nomeDoCachorro.correr();
-nomeDoCachorro.latir();
\ No newline at end of file
diff --git a/exemplos/dialetos/egua-classico/bibliotecas/matematica/gerar-pontos-abscissa.egua b/exemplos/dialetos/egua-classico/bibliotecas/matematica/gerar-pontos-abscissa.egua
deleted file mode 100644
index cf080965..00000000
--- a/exemplos/dialetos/egua-classico/bibliotecas/matematica/gerar-pontos-abscissa.egua
+++ /dev/null
@@ -1,14 +0,0 @@
-var m = importar("matematica");
-
-função teste_gerarPontosAbscissa() {
-  var gerarPontosAbscissa = m.gerarPontosAbscissa(2,3);
-
-  se (gerarPontosAbscissa != nulo)
-    escreva (gerarPontosAbscissa);
-  senão {
-    errosM = errosM+1;
-    escreva(errosM);
-  }
-}
-
-teste_gerarPontosAbscissa();
diff --git a/exemplos/dialetos/egua-classico/funcoes/retorna-sem-valor.egua b/exemplos/dialetos/egua-classico/funcoes/retorna-sem-valor.egua
deleted file mode 100644
index 777373ad..00000000
--- a/exemplos/dialetos/egua-classico/funcoes/retorna-sem-valor.egua
+++ /dev/null
@@ -1,15 +0,0 @@
-var t = importar("textos"); // Importa Biblioteca
-
-função checa_minusculas()  {
-  var esperado = "abcdefghijklmnopqrstuvwxyz";
-  var obtido = t.letras_minusculas;
-
-  se (obtido != esperado) {
-    escreva("TESTE: letras_minusculas: falhou!");
-    erros_t = erros_t + 1;
-    retorna;
-  }
-  escreva("TESTE: letras_minusculas: passou!");
-}
-
-checa_minusculas();
\ No newline at end of file
diff --git a/exemplos/importacao/importacao-1.delegua b/exemplos/importacao/importacao-1.delegua
deleted file mode 100644
index d1f23c86..00000000
--- a/exemplos/importacao/importacao-1.delegua
+++ /dev/null
@@ -1,2 +0,0 @@
-var importacao = importar("./exemplos/importacao/importacao-2.egua")
-importacao.escreverAlgumaCoisa()
diff --git a/fontes/avaliador-sintatico/avaliador-sintatico-base.ts b/fontes/avaliador-sintatico/avaliador-sintatico-base.ts
index 6e3de5d0..72a12399 100644
--- a/fontes/avaliador-sintatico/avaliador-sintatico-base.ts
+++ b/fontes/avaliador-sintatico/avaliador-sintatico-base.ts
@@ -32,8 +32,6 @@ import tiposDeSimbolos from '../tipos-de-simbolos/comum';
 export abstract class AvaliadorSintaticoBase implements AvaliadorSintaticoInterface {
     simbolos: SimboloInterface[];
     erros: ErroAvaliadorSintatico[];
-
-    hashArquivo: number;
     atual: number;
     blocos: number;
 
@@ -98,7 +96,7 @@ export abstract class AvaliadorSintaticoBase implements AvaliadorSintaticoInterf
 
         const parenteseDireito = this.consumir(tiposDeSimbolos.PARENTESE_DIREITO, "Esperado ')' após os argumentos.");
 
-        return new Chamada(this.hashArquivo, entidadeChamada, parenteseDireito, argumentos);
+        return new Chamada(-1, entidadeChamada, parenteseDireito, argumentos);
     }
 
     abstract chamar(): Construto;
@@ -107,7 +105,7 @@ export abstract class AvaliadorSintaticoBase implements AvaliadorSintaticoInterf
         if (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos.NEGACAO, tiposDeSimbolos.SUBTRACAO)) {
             const operador = this.simbolos[this.atual - 1];
             const direito = this.unario();
-            return new Unario(this.hashArquivo, operador, direito);
+            return new Unario(-1, operador, direito);
         }
 
         return this.chamar();
@@ -130,7 +128,7 @@ export abstract class AvaliadorSintaticoBase implements AvaliadorSintaticoInterf
         ) {
             const operador = this.simbolos[this.atual - 1];
             const direito = this.unario();
-            expressao = new Binario(this.hashArquivo, expressao, operador, direito);
+            expressao = new Binario(-1, expressao, operador, direito);
         }
 
         return expressao;
@@ -142,7 +140,7 @@ export abstract class AvaliadorSintaticoBase implements AvaliadorSintaticoInterf
         while (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos.SUBTRACAO, tiposDeSimbolos.ADICAO)) {
             const operador = this.simbolos[this.atual - 1];
             const direito = this.multiplicar();
-            expressao = new Binario(this.hashArquivo, expressao, operador, direito);
+            expressao = new Binario(-1, expressao, operador, direito);
         }
 
         return expressao;
@@ -173,7 +171,7 @@ export abstract class AvaliadorSintaticoBase implements AvaliadorSintaticoInterf
         ) {
             const operador = this.simbolos[this.atual - 1];
             const direito = this.adicaoOuSubtracao();
-            expressao = new Binario(this.hashArquivo, expressao, operador, direito);
+            expressao = new Binario(-1, expressao, operador, direito);
         }
 
         return expressao;
@@ -185,7 +183,7 @@ export abstract class AvaliadorSintaticoBase implements AvaliadorSintaticoInterf
         while (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos.DIFERENTE, tiposDeSimbolos.IGUAL)) {
             const operador = this.simbolos[this.atual - 1];
             const direito = this.comparar();
-            expressao = new Binario(this.hashArquivo, expressao, operador, direito);
+            expressao = new Binario(-1, expressao, operador, direito);
         }
 
         return expressao;
@@ -201,7 +199,7 @@ export abstract class AvaliadorSintaticoBase implements AvaliadorSintaticoInterf
         while (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos.E)) {
             const operador = this.simbolos[this.atual - 1];
             const direito = this.comparacaoIgualdade();
-            expressao = new Logico(this.hashArquivo, expressao, operador, direito);
+            expressao = new Logico(-1, expressao, operador, direito);
         }
 
         return expressao;
@@ -213,7 +211,7 @@ export abstract class AvaliadorSintaticoBase implements AvaliadorSintaticoInterf
         while (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos.OU)) {
             const operador = this.simbolos[this.atual - 1];
             const direito = this.e();
-            expressao = new Logico(this.hashArquivo, expressao, operador, direito);
+            expressao = new Logico(-1, expressao, operador, direito);
         }
 
         return expressao;
diff --git a/fontes/avaliador-sintatico/avaliador-sintatico.ts b/fontes/avaliador-sintatico/avaliador-sintatico.ts
index 89c15e04..d4d303c4 100644
--- a/fontes/avaliador-sintatico/avaliador-sintatico.ts
+++ b/fontes/avaliador-sintatico/avaliador-sintatico.ts
@@ -47,6 +47,7 @@ import {
 import { RetornoAvaliadorSintatico } from '../interfaces/retornos/retorno-avaliador-sintatico';
 import { RetornoLexador } from '../interfaces/retornos/retorno-lexador';
 import { RetornoDeclaracao, RetornoResolverDeclaracao } from './retornos';
+import { Simbolo } from '../lexador';
 
 /**
  * O avaliador sintático (Parser) é responsável por transformar os símbolos do Lexador em estruturas de alto nível.
@@ -732,30 +733,28 @@ export class AvaliadorSintatico implements AvaliadorSintaticoInterface {
 
         const blocoTente: any[] = this.blocoEscopo();
 
-        let blocoPegue: FuncaoConstruto | Declaracao[] = null;
+        let blocoPegue: FuncaoConstruto = null;
         if (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos.PEGUE)) {
             if (this.verificarTipoSimboloAtual(tiposDeSimbolos.PARENTESE_ESQUERDO)) {
                 // Caso 1: com parâmetro de erro.
-                // `pegue` recebe um `FuncaoConstruto`.
                 blocoPegue = this.corpoDaFuncao("bloco `pegue`");
             } else {
                 // Caso 2: sem parâmetro de erro.
-                // `pegue` recebe um bloco.
-                this.consumir(tiposDeSimbolos.CHAVE_ESQUERDA, "Esperado '{' após a declaração 'pegue'.");
-                blocoPegue = this.blocoEscopo();
+                const simboloBlocoPegue = this.consumir(tiposDeSimbolos.CHAVE_ESQUERDA, "Esperado '{' após a declaração 'pegue'.");
+                blocoPegue = new FuncaoConstruto(this.hashArquivo, Number(simboloBlocoPegue.linha), null, this.blocoEscopo());
             }
         }
 
         let blocoSenao: any[] = null;
         if (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos.SENAO, tiposDeSimbolos.SENÃO)) {
-            this.consumir(tiposDeSimbolos.CHAVE_ESQUERDA, "Esperado '{' após a declaração 'senão'.");
+            this.consumir(tiposDeSimbolos.CHAVE_ESQUERDA, "Esperado '{' após a declaração 'pegue'.");
 
             blocoSenao = this.blocoEscopo();
         }
 
         let blocoFinalmente: any[] = null;
         if (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos.FINALMENTE)) {
-            this.consumir(tiposDeSimbolos.CHAVE_ESQUERDA, "Esperado '{' após a declaração 'finalmente'.");
+            this.consumir(tiposDeSimbolos.CHAVE_ESQUERDA, "Esperado '{' após a declaração 'pegue'.");
 
             blocoFinalmente = this.blocoEscopo();
         }
diff --git a/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-birl.ts b/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-birl.ts
index e34bfcdd..b639707a 100644
--- a/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-birl.ts
+++ b/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-birl.ts
@@ -8,7 +8,9 @@ import tiposDeSimbolos from '../../tipos-de-simbolos/birl';
 
 export class AvaliadorSintaticoBirl extends AvaliadorSintaticoBase {
     validarSegmentoHoraDoShow(): void {
-        this.consumir(tiposDeSimbolos.HORA_DO_SHOW, 'Esperado expressão `HORA DO SHOW` para iniciar o programa');
+        this.consumir(tiposDeSimbolos.HORA, 'Esperado expressão `HORA DO SHOW` para iniciar o programa');
+        this.consumir(tiposDeSimbolos.DO, 'Esperado expressão `HORA DO SHOW` para iniciar o programa');
+        this.consumir(tiposDeSimbolos.SHOW, 'Esperado expressão `HORA DO SHOW` para iniciar o programa');
         this.blocos += 1;
     }
 
diff --git a/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-egua-classico.ts b/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-egua-classico.ts
index c6fe17cf..c8765452 100644
--- a/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-egua-classico.ts
+++ b/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-egua-classico.ts
@@ -664,6 +664,12 @@ export class AvaliadorSintaticoEguaClassico implements AvaliadorSintaticoInterfa
 
         const simboloFechamento = this.consumir(tiposDeSimbolos.PARENTESE_DIREITO, "Esperado ')' após declaração.");
 
+        // tive que fazer isso para poder tipar a func expressão
+        // não sei isso e certo provavelmente não.
+        // o parametro valor no tipo literal esta como any
+        // ele esta dificultando a refatoração
+        // alguma ideia de qual tipo ele pode ser ?
+        caminho.valor = null;
         return new Importar(caminho as Literal, simboloFechamento);
     }
 
diff --git a/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-visualg.ts b/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-visualg.ts
index d1f0d04a..b571dda1 100644
--- a/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-visualg.ts
+++ b/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-visualg.ts
@@ -96,22 +96,21 @@ export class AvaliadorSintaticoVisuAlg extends AvaliadorSintaticoBase {
                 throw this.erro(this.simbolos[this.atual], 'Tipo de variável não conhecido.');
             }
 
-            const simboloAtual = this.simbolos[this.atual - 1];
-            const tipoVariavel: string = simboloAtual.tipo;
+            const tipoVariavel: string = this.simbolos[this.atual - 1].tipo;
 
             // Se chegou até aqui, variáveis são válidas.
             // Devem ser declaradas com um valor inicial padrão.
             for (let identificador of identificadores) {
                 switch (tipoVariavel) {
                     case tiposDeSimbolos.CARACTERE:
-                        inicializacoes.push(new Var(identificador, new Literal(this.hashArquivo, Number(simboloAtual.linha), '')));
+                        inicializacoes.push(new Var(identificador, new Literal(-1, -1, '')));
                         break;
                     case tiposDeSimbolos.INTEIRO:
                     case tiposDeSimbolos.REAL:
-                        inicializacoes.push(new Var(identificador, new Literal(this.hashArquivo, Number(simboloAtual.linha), 0)));
+                        inicializacoes.push(new Var(identificador, new Literal(-1, -1, 0)));
                         break;
                     case tiposDeSimbolos.LOGICO:
-                        inicializacoes.push(new Var(identificador, new Literal(this.hashArquivo, Number(simboloAtual.linha), false)));
+                        inicializacoes.push(new Var(identificador, new Literal(-1, -1, false)));
                         break;
                     case tiposDeSimbolos.VETOR:
                         // TODO: Validar vetor
@@ -142,7 +141,7 @@ export class AvaliadorSintaticoVisuAlg extends AvaliadorSintaticoBase {
                                 'Tipo de variável não conhecido para inicialização de vetor.'
                             );
                         }
-                        inicializacoes.push(new Var(identificador, new Literal(this.hashArquivo, Number(simboloAtual.linha), this.criarVetorNDimensional(dimensoes))));
+                        inicializacoes.push(new Var(identificador, new Literal(-1, -1, this.criarVetorNDimensional(dimensoes))));
                         break;
                 }
             }
@@ -169,9 +168,9 @@ export class AvaliadorSintaticoVisuAlg extends AvaliadorSintaticoBase {
 
         switch (simboloAnterior.lexema) {
             case "int":
-                return new Chamada(this.hashArquivo,
-                    new Variavel(this.hashArquivo,
-                        new Simbolo(tiposDeSimbolos.IDENTIFICADOR, "inteiro", null, Number(simboloAnterior.linha), this.hashArquivo)
+                return new Chamada(-1,
+                    new Variavel(-1,
+                        new Simbolo(tiposDeSimbolos.IDENTIFICADOR, "inteiro", null, Number(simboloAnterior.linha), -1)
                     ), null, []
                 );
             default:
@@ -183,24 +182,24 @@ export class AvaliadorSintaticoVisuAlg extends AvaliadorSintaticoBase {
         const simboloAtual = this.simbolos[this.atual];
 
         if (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos.FALSO))
-            return new Literal(this.hashArquivo, Number(simboloAtual.linha), false);
+            return new Literal(-1, Number(simboloAtual.linha), false);
         if (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos.VERDADEIRO))
-            return new Literal(this.hashArquivo, Number(simboloAtual.linha), true);
+            return new Literal(-1, Number(simboloAtual.linha), true);
 
         if (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos.IDENTIFICADOR, tiposDeSimbolos.METODO_BIBLIOTECA_GLOBAL)) {
-            return new Variavel(this.hashArquivo, this.simbolos[this.atual - 1]);
+            return new Variavel(-1, this.simbolos[this.atual - 1]);
         }
 
         if (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos.NUMERO, tiposDeSimbolos.CARACTERE)) {
             const simboloAnterior: SimboloInterface = this.simbolos[this.atual - 1];
-            return new Literal(this.hashArquivo, Number(simboloAnterior.linha), simboloAnterior.literal);
+            return new Literal(-1, Number(simboloAnterior.linha), simboloAnterior.literal);
         }
 
         if (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos.PARENTESE_ESQUERDO)) {
             const expressao = this.expressao();
             this.consumir(tiposDeSimbolos.PARENTESE_DIREITO, "Esperado ')' após a expressão.");
 
-            return new Agrupamento(this.hashArquivo, Number(simboloAtual.linha), expressao);
+            return new Agrupamento(-1, Number(simboloAtual.linha), expressao);
         }
     }
 
@@ -212,14 +211,13 @@ export class AvaliadorSintaticoVisuAlg extends AvaliadorSintaticoBase {
             // do que é um símbolo. 
             // Em VisuAlg não existe '==', apenas '=', já que o símbolo de atribuição 
             // é uma seta: '<-'.
-            const simboloAnterior = this.simbolos[this.atual - 1];
-            let operador: SimboloInterface = new Simbolo('IGUAL_IGUAL', '=', null, this.hashArquivo, Number(simboloAnterior.linha));
-            if (simboloAnterior.tipo === tiposDeSimbolos.DIFERENTE) {
-                operador = simboloAnterior;
+            let operador: SimboloInterface = new Simbolo('IGUAL_IGUAL', '=', null, -1, -1);
+            if (this.simbolos[this.atual - 1].tipo === tiposDeSimbolos.DIFERENTE) {
+                operador = this.simbolos[this.atual - 1];
             }
             
             const direito = this.comparar();
-            expressao = new Binario(this.hashArquivo, expressao, operador, direito);
+            expressao = new Binario(-1, expressao, operador, direito);
         }
 
         return expressao;
@@ -238,9 +236,9 @@ export class AvaliadorSintaticoVisuAlg extends AvaliadorSintaticoBase {
 
             if (expressao instanceof Variavel) {
                 const simbolo = expressao.simbolo;
-                return new Atribuir(this.hashArquivo, simbolo, valor);
+                return new Atribuir(-1, simbolo, valor);
             } else if (expressao instanceof AcessoIndiceVariavel) {
-                return new AtribuicaoSobrescrita(this.hashArquivo, expressao.linha, expressao.entidadeChamada, expressao.indice, valor);
+                return new AtribuicaoSobrescrita(-1, 0, expressao.entidadeChamada, expressao.indice, valor);
             }
 
             this.erro(setaAtribuicao, 'Tarefa de atribuição inválida');
@@ -282,7 +280,7 @@ export class AvaliadorSintaticoVisuAlg extends AvaliadorSintaticoBase {
                     tiposDeSimbolos.COLCHETE_DIREITO,
                     "Esperado ']' após escrita do indice."
                 );
-                expressao = new AcessoIndiceVariavel(this.hashArquivo, expressao, indice, simboloFechamento);
+                expressao = new AcessoIndiceVariavel(-1, expressao, indice, simboloFechamento);
             } else {
                 break;
             }
@@ -292,7 +290,6 @@ export class AvaliadorSintaticoVisuAlg extends AvaliadorSintaticoBase {
     }
 
     corpoDaFuncao(tipo: any): FuncaoConstruto {
-        const simboloAnterior = this.simbolos[this.atual - 1];
         this.consumir(tiposDeSimbolos.DOIS_PONTOS, 'Esperado dois-pontos após nome de função.');
 
         // Tipo retornado pela função.
@@ -307,7 +304,7 @@ export class AvaliadorSintaticoVisuAlg extends AvaliadorSintaticoBase {
 
         const corpo = this.blocoEscopo();
 
-        return new FuncaoConstruto(this.hashArquivo, Number(simboloAnterior.linha), null, corpo);
+        return new FuncaoConstruto(-1, -1, null, corpo);
     }
 
     declaracaoEnquanto(): Enquanto {
@@ -407,7 +404,7 @@ export class AvaliadorSintaticoVisuAlg extends AvaliadorSintaticoBase {
     }
 
     private logicaComumEscreva(): FormatacaoEscrita[] {
-        const simboloParenteses = this.consumir(tiposDeSimbolos.PARENTESE_ESQUERDO, "Esperado '(' antes dos valores em escreva.");
+        this.consumir(tiposDeSimbolos.PARENTESE_ESQUERDO, "Esperado '(' antes dos valores em escreva.");
         const argumentos: FormatacaoEscrita[] = [];
 
         do {
@@ -426,7 +423,7 @@ export class AvaliadorSintaticoVisuAlg extends AvaliadorSintaticoBase {
                 casasDecimais = Number(simboloCasasDecimais.lexema);
             }
 
-            argumentos.push(new FormatacaoEscrita(this.hashArquivo, Number(simboloParenteses.linha), valor, espacos, casasDecimais));
+            argumentos.push(new FormatacaoEscrita(-1, -1, valor, espacos, casasDecimais));
         } while (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos.VIRGULA));
 
         this.consumir(tiposDeSimbolos.PARENTESE_DIREITO, "Esperado ')' após os valores em escreva.");
@@ -444,7 +441,7 @@ export class AvaliadorSintaticoVisuAlg extends AvaliadorSintaticoBase {
 
         const argumentos = this.logicaComumEscreva();
 
-        return new Escreva(Number(simboloAtual.linha), this.hashArquivo, argumentos);
+        return new Escreva(Number(simboloAtual.linha), -1, argumentos);
     }
 
     declaracaoEscrevaMesmaLinha(): EscrevaMesmaLinha {
@@ -452,7 +449,7 @@ export class AvaliadorSintaticoVisuAlg extends AvaliadorSintaticoBase {
 
         const argumentos = this.logicaComumEscreva();
 
-        return new EscrevaMesmaLinha(Number(simboloAtual.linha), this.hashArquivo, argumentos);
+        return new EscrevaMesmaLinha(Number(simboloAtual.linha), -1, argumentos);
     }
 
     /**
@@ -482,9 +479,9 @@ export class AvaliadorSintaticoVisuAlg extends AvaliadorSintaticoBase {
         );
 
         return new Fazer(
-            this.hashArquivo, 
-            Number(simboloAtual.linha), 
-            new Bloco(this.hashArquivo, Number(simboloAtual.linha), declaracoes.filter(d => d)), 
+            -1, 
+            -1, 
+            new Bloco(-1, -1, declaracoes.filter(d => d)), 
             condicao
         );
     }
@@ -567,29 +564,29 @@ export class AvaliadorSintaticoVisuAlg extends AvaliadorSintaticoBase {
         this.consumir(tiposDeSimbolos.QUEBRA_LINHA, "Esperado quebra de linha após palavra reservada 'fimpara'.");
 
         const corpo = new Bloco(
-            this.hashArquivo,
+            -1,
             Number(simboloPara.linha) + 1,
             declaracoesBlocoPara.filter((d) => d)
         );
 
         return new Para(
-            this.hashArquivo,
+            -1,
             Number(simboloPara.linha),
-            new Atribuir(this.hashArquivo, variavelIteracao, new Literal(this.hashArquivo, Number(simboloPara.linha), numeroInicio.literal)),
+            new Atribuir(-1, variavelIteracao, new Literal(-1, -1, numeroInicio.literal)),
             new Binario(
-                this.hashArquivo,
-                new Variavel(this.hashArquivo, variavelIteracao),
-                new Simbolo(tiposDeSimbolos.MENOR, '', '', Number(simboloPara.linha), this.hashArquivo),
-                new Literal(this.hashArquivo, Number(simboloPara.linha), numeroFim.literal)
+                -1,
+                new Variavel(-1, variavelIteracao),
+                new Simbolo(tiposDeSimbolos.MENOR, '', '', Number(simboloPara.linha), -1),
+                new Literal(-1, -1, numeroFim.literal)
             ),
             new Atribuir(
-                this.hashArquivo,
+                -1,
                 variavelIteracao,
                 new Binario(
-                    this.hashArquivo,
-                    new Variavel(this.hashArquivo, variavelIteracao),
-                    new Simbolo(tiposDeSimbolos.ADICAO, '', null, Number(simboloPara.linha), this.hashArquivo),
-                    new Literal(this.hashArquivo, Number(simboloPara.linha), 1)
+                    -1,
+                    new Variavel(-1, variavelIteracao),
+                    new Simbolo(tiposDeSimbolos.ADICAO, '', null, -1, -1),
+                    new Literal(-1, -1, 1)
                 )
             ),
             corpo
@@ -611,12 +608,11 @@ export class AvaliadorSintaticoVisuAlg extends AvaliadorSintaticoBase {
 
         let caminhoSenao = null;
         if (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos.SENAO)) {
-            const simboloSenao = this.simbolos[this.atual - 1];
             const declaracoesSenao = [];
             do {
                 declaracoes.push(this.declaracao());
             } while (![tiposDeSimbolos.FIM_SE].includes(this.simbolos[this.atual].tipo));
-            caminhoSenao = new Bloco(this.hashArquivo, Number(simboloSenao.linha), declaracoesSenao.filter(d => d));
+            caminhoSenao = new Bloco(-1, -1, declaracoesSenao.filter(d => d));
         }
 
         this.consumir(
@@ -628,7 +624,7 @@ export class AvaliadorSintaticoVisuAlg extends AvaliadorSintaticoBase {
 
         return new Se(
             condicao, 
-            new Bloco(this.hashArquivo, Number(simboloSe.linha), declaracoes.filter(d => d)), 
+            new Bloco(-1, -1, declaracoes.filter(d => d)), 
             [], 
             caminhoSenao);
     }
@@ -684,7 +680,6 @@ export class AvaliadorSintaticoVisuAlg extends AvaliadorSintaticoBase {
         this.atual = 0;
         this.blocos = 0;
 
-        this.hashArquivo = hashArquivo || 0;
         this.simbolos = retornoLexador?.simbolos || [];
 
         let declaracoes = [];
diff --git a/fontes/bibliotecas/dialetos/egua-classico/biblioteca-global.ts b/fontes/bibliotecas/dialetos/egua-classico/biblioteca-global.ts
deleted file mode 100644
index 51007ca8..00000000
--- a/fontes/bibliotecas/dialetos/egua-classico/biblioteca-global.ts
+++ /dev/null
@@ -1,439 +0,0 @@
-import { DeleguaFuncao, FuncaoPadrao } from "../../../estruturas";
-import { ErroEmTempoDeExecucao } from "../../../excecoes";
-
-/* eslint-disable prefer-rest-params */
-export default function (interpreter, globals) {
-    // Retorna um número aleatório entre 0 e 1.
-    globals.definirVariavel(
-        "aleatorio",
-        new FuncaoPadrao(1, function () {
-            return Math.random();
-        })
-    );
-
-    // Retorna um número aleatório de acordo com o parâmetro passado.
-    // MIN(inclusivo) - MAX(exclusivo)
-    globals.definirVariavel(
-        "aleatorioEntre",
-        new FuncaoPadrao(1, function (min, max) {
-            if (!arguments[0]) {
-                throw new ErroEmTempoDeExecucao(
-                    this.simbolo,
-                    "A função recebe ao menos um parâmetro"
-                );
-            }
-
-            if (arguments.length === 1) {
-                if (typeof min !== 'number') {
-                    throw new ErroEmTempoDeExecucao(
-                        this.simbolo,
-                        "O parâmetro deve ser do tipo número"
-                    );
-                };
-
-                return Math.floor(Math.random() * (0 - min)) + min;
-            }
-
-            if (arguments.length > 2) {
-                throw new ErroEmTempoDeExecucao(
-                    this.simbolo,
-                    "A quantidade de argumentos máxima é 2"
-                );
-            }
-
-            if (typeof min !== 'number' || typeof max !== 'number') {
-                throw new ErroEmTempoDeExecucao(
-                    this.simbolo,
-                    "Os dois parâmetros devem ser do tipo número."
-                );
-            }
-
-            return Math.floor(Math.random() * (max - min)) + min;
-        })
-    );
-
-    globals.definirVariavel(
-        "inteiro",
-        new FuncaoPadrao(1, function (value) {
-            if (value === undefined || value === null) {
-                throw new ErroEmTempoDeExecucao(
-                    this.simbolo,
-                    "Somente números podem passar para inteiro."
-                );
-            }
-
-            if (!/^-{0,1}\d+$/.test(value) && !/^\d+\.\d+$/.test(value)) {
-                throw new ErroEmTempoDeExecucao(
-                    this.simbolo,
-                    "Somente números podem passar para inteiro."
-                );
-            }
-
-            return parseInt(value);
-        })
-    );
-
-    globals.definirVariavel(
-        "paraCada",
-        new FuncaoPadrao(1, async function (array, callback) {
-            if (!Array.isArray(array)) {
-                throw new ErroEmTempoDeExecucao(
-                    this.simbolo,
-                    "Parâmetro inválido. O primeiro parâmetro da função, deve ser um array."
-                );
-            }
-
-            if (callback.constructor.name !== 'DeleguaFuncao') {
-                throw new ErroEmTempoDeExecucao(
-                    this.simbolo,
-                    "Parâmetro inválido. O segundo parâmetro da função, deve ser uma função."
-                );
-            }
-
-            for (let index = 0; index < array.length; ++index) {
-                await callback.chamar(
-                    interpreter, [array[index]]
-                );
-            }
-        })
-    );
-
-    globals.definirVariavel(
-        "mapear",
-        new FuncaoPadrao(1, async function (array, callback) {
-            if (!Array.isArray(array)) {
-                throw new ErroEmTempoDeExecucao(
-                    this.simbolo,
-                    "Parâmetro inválido. O primeiro parâmetro da função, deve ser um array."
-                );
-            }
-
-            if (callback.constructor.name !== 'DeleguaFuncao') {
-                throw new ErroEmTempoDeExecucao(
-                    this.simbolo,
-                    "Parâmetro inválido. O segundo parâmetro da função, deve ser uma função."
-                );
-            }
-
-            let provisorio = [];
-            for (let index = 0; index < array.length; ++index) {
-                provisorio.push(
-                    await callback.chamar(
-                        interpreter, [array[index]]
-                    )
-                );
-            }
-
-            return provisorio;
-        })
-    );
-
-    globals.definirVariavel(
-        "filtrar",
-        new FuncaoPadrao(1, async function (array, callback) {
-            if (!Array.isArray(array)) {
-                throw new ErroEmTempoDeExecucao(
-                    this.simbolo,
-                    "Parâmetro inválido. O primeiro parâmetro da função, deve ser um array."
-                );
-            }
-
-            if (callback.constructor.name !== 'DeleguaFuncao') {
-                throw new ErroEmTempoDeExecucao(
-                    this.simbolo,
-                    "Parâmetro inválido. O segundo parâmetro da função, deve ser uma função."
-                );
-            }
-
-            let provisorio = [];
-            for (let index = 0; index < array.length; ++index) {
-                if (await callback.chamar(interpreter, [array[index]])) {
-                    provisorio.push(array[index]);
-                }
-            }
-
-            return provisorio;
-        })
-    );
-
-    globals.definirVariavel(
-        "reduzir",
-        new FuncaoPadrao(1, async function (array, callback, padrao) {
-            if (!Array.isArray(array)) {
-                throw new ErroEmTempoDeExecucao(
-                    this.simbolo,
-                    "Parâmetro inválido. O primeiro parâmetro da função, deve ser um array."
-                );
-            }
-
-            if (callback.constructor.name !== 'DeleguaFuncao') {
-                throw new ErroEmTempoDeExecucao(
-                    this.simbolo,
-                    "Parâmetro inválido. O segundo parâmetro da função, deve ser uma função."
-                );
-            }
-
-            let provisorio = padrao;
-            let inicio = 0;
-
-            if (!provisorio) {
-                provisorio = array[0];
-                inicio = 1;
-            }
-
-            for (let index = inicio; index < array.length; ++index) {
-                provisorio = await callback.chamar(interpreter, [provisorio, array[index]]);
-            }
-
-            return provisorio;
-        })
-    );
-
-    globals.definirVariavel(
-        "encontrar",
-        new FuncaoPadrao(1, async function (array, callback) {
-            if (!Array.isArray(array)) {
-                throw new ErroEmTempoDeExecucao(
-                    this.simbolo,
-                    "Parâmetro inválido. O primeiro parâmetro da função, deve ser um array."
-                );
-            }
-
-            if (callback.constructor.name !== 'DeleguaFuncao') {
-                throw new ErroEmTempoDeExecucao(
-                    this.simbolo,
-                    "Parâmetro inválido. O segundo parâmetro da função, deve ser uma função."
-                );
-            }
-
-            for (let index = 0; index < array.length; ++index) {
-                if (await callback.chamar(interpreter, [array[index]])) {
-                    return array[index];
-                }
-            }
-
-            return null;
-        })
-    );
-
-    globals.definirVariavel(
-        "encontrarUltimo",
-        new FuncaoPadrao(1, async function (array, callback) {
-            if (!Array.isArray(array)) {
-                throw new ErroEmTempoDeExecucao(
-                    this.simbolo,
-                    "Parâmetro inválido. O primeiro parâmetro da função, deve ser um array."
-                );
-            }
-
-            if (callback.constructor.name !== 'DeleguaFuncao') {
-                throw new ErroEmTempoDeExecucao(
-                    this.simbolo,
-                    "Parâmetro inválido. O segundo parâmetro da função, deve ser uma função."
-                );
-            }
-
-            for (let index = array.length - 1; index >= 0; --index) {
-                if (await callback.chamar(interpreter, [array[index]])) {
-                    return array[index];
-                }
-            }
-        })
-    );
-
-    globals.definirVariavel(
-        "encontrarIndice",
-        new FuncaoPadrao(1, async function (array, callback) {
-            if (!Array.isArray(array)) {
-                throw new ErroEmTempoDeExecucao(
-                    this.simbolo,
-                    "Parâmetro inválido. O primeiro parâmetro da função, deve ser um array."
-                );
-            }
-
-            if (callback.constructor.name !== 'DeleguaFuncao') {
-                throw new ErroEmTempoDeExecucao(
-                    this.simbolo,
-                    "Parâmetro inválido. O segundo parâmetro da função, deve ser uma função."
-                );
-            }
-
-            for (let index = 0; index < array.length; ++index) {
-                if (await callback.chamar(interpreter, [array[index]])) {
-                    return index;
-                }
-            }
-
-            return -1;
-        })
-    );
-
-    globals.definirVariavel(
-        "encontrarUltimoIndice",
-        new FuncaoPadrao(1, async function (array, callback) {
-            if (!Array.isArray(array)) {
-                throw new ErroEmTempoDeExecucao(
-                    this.simbolo,
-                    "Parâmetro inválido. O primeiro parâmetro da função, deve ser um array."
-                );
-            }
-
-            if (callback.constructor.name !== 'DeleguaFuncao') {
-                throw new ErroEmTempoDeExecucao(
-                    this.simbolo,
-                    "Parâmetro inválido. O segundo parâmetro da função, deve ser uma função."
-                );
-            }
-
-            for (let index = array.length - 1; index >= 0; --index) {
-                if (await callback.chamar(interpreter, [array[index]])) {
-                    return index;
-                }
-            }
-        })
-    );
-
-    globals.definirVariavel(
-        "incluido",
-        new FuncaoPadrao(1, function (array, valor) {
-            if (!Array.isArray(array)) {
-                throw new ErroEmTempoDeExecucao(
-                    this.simbolo,
-                    "Parâmetro inválido. O primeiro parâmetro da função, deve ser um array."
-                );
-            }
-
-            for (let index = 0; index < array.length; ++index) {
-                if (array[index] == valor) {
-                    return true;
-                }
-            }
-
-            return false;
-        })
-    );
-
-    globals.definirVariavel(
-        "algum",
-        new FuncaoPadrao(1, async function (array, callback) {
-            if (!Array.isArray(array)) {
-                throw new ErroEmTempoDeExecucao(
-                    this.simbolo,
-                    "Parâmetro inválido. O primeiro parâmetro da função, deve ser um array."
-                );
-            }
-
-            if (callback.constructor.name !== 'DeleguaFuncao') {
-                throw new ErroEmTempoDeExecucao(
-                    this.simbolo,
-                    "Parâmetro inválido. O segundo parâmetro da função, deve ser uma função."
-                );
-            }
-
-            for (let index = 0; index < array.length; ++index) {
-                if (await callback.chamar(interpreter, [array[index]])) {
-                    return true;
-                }
-            }
-
-            return false;
-        })
-    );
-
-    globals.definirVariavel(
-        "todos",
-        new FuncaoPadrao(1, async function (array, callback) {
-            if (!Array.isArray(array)) {
-                throw new ErroEmTempoDeExecucao(
-                    this.simbolo,
-                    "Parâmetro inválido. O primeiro parâmetro da função, deve ser um array."
-                );
-            }
-
-            if (callback.constructor.name !== 'DeleguaFuncao') {
-                throw new ErroEmTempoDeExecucao(
-                    this.simbolo,
-                    "Parâmetro inválido. O segundo parâmetro da função, deve ser uma função."
-                );
-            }
-
-            for (let index = 0; index < array.length; ++index) {
-                if (!(await callback.chamar(interpreter, [array[index]]))) {
-                    return false;
-                }
-            }
-
-            return true;
-        })
-    );
-
-    globals.definirVariavel(
-        "ordenar",
-        new FuncaoPadrao(1, function (obj) {
-            if (Array.isArray(obj) == false) {
-                throw new ErroEmTempoDeExecucao(
-                    this.simbolo,
-                    "Valor Inválido. Objeto inserido não é um vetor."
-                );
-            }
-
-            let trocado;
-            let length = obj.length;
-            do {
-                trocado = false;
-                for (let i = 0; i < length - 1; i++) {
-                    if (obj[i] > obj[i + 1]) {
-                        [obj[i], obj[i + 1]] = [obj[i + 1], obj[i]];
-                        trocado = true;
-                    }
-                }
-            } while (trocado);
-            return obj;
-        })
-    );
-
-    globals.definirVariavel(
-        "real",
-        new FuncaoPadrao(1, function (value) {
-            if (!/^-{0,1}\d+$/.test(value) && !/^\d+\.\d+$/.test(value))
-                throw new ErroEmTempoDeExecucao(
-                    this.simbolo,
-                    "Somente números podem passar para real."
-                );
-            return parseFloat(value);
-        })
-    );
-
-    globals.definirVariavel(
-        "tamanho",
-        new FuncaoPadrao(1, function (obj) {
-            if (!isNaN(obj)) {
-                throw new ErroEmTempoDeExecucao(
-                    this.simbolo,
-                    "Não é possível encontrar o tamanho de um número."
-                );
-            }
-
-            if (obj instanceof DeleguaFuncao) {
-                return obj.declaracao.parametros.length;
-            }
-
-            if (obj instanceof FuncaoPadrao) {
-                return obj.valorAridade;
-            }
-
-            return obj.length;
-        })
-    );
-
-    globals.definirVariavel(
-        "texto",
-        new FuncaoPadrao(1, function (value) {
-            return `${value}`;
-        })
-    );
-
-    globals.definirVariavel("exports", {});
-
-    return globals;
-};
\ No newline at end of file
diff --git a/fontes/bibliotecas/dialetos/egua-classico/index.ts b/fontes/bibliotecas/dialetos/egua-classico/index.ts
deleted file mode 100644
index 61b8c1e5..00000000
--- a/fontes/bibliotecas/dialetos/egua-classico/index.ts
+++ /dev/null
@@ -1,36 +0,0 @@
-import { DeleguaModulo, FuncaoPadrao } from "../../../estruturas";
-
-const carregarModulo = function (nomeModulo: string, caminhoModulo: string) {
-    // eslint-disable-next-line @typescript-eslint/no-var-requires
-    let dadosDoModulo = require(caminhoModulo);
-    let novoModulo = new DeleguaModulo(nomeModulo);
-
-    let keys = Object.keys(dadosDoModulo);
-    for (let i = 0; i < keys.length; i++) {
-        let itemAtual = dadosDoModulo[keys[i]];
-
-        if (typeof itemAtual === "function") {
-            novoModulo[keys[i]] = new FuncaoPadrao(
-                itemAtual.length,
-                itemAtual
-            );
-        } else {
-            novoModulo[keys[i]] = itemAtual;
-        }
-    }
-
-    return novoModulo;
-};
-
-export const carregarModuloPorNome = function (nome: string) {
-    switch (nome) {
-        case "tempo":
-            return carregarModulo("tempo", "./tempo.ts");
-        case "matematica":
-            return carregarModulo("matematica", "./matematica.ts");
-        case "textos":
-            return carregarModulo("textos", "./textos.ts");
-    }
-
-    return null;
-};
diff --git a/fontes/bibliotecas/dialetos/egua-classico/matematica.ts b/fontes/bibliotecas/dialetos/egua-classico/matematica.ts
deleted file mode 100644
index 598e158c..00000000
--- a/fontes/bibliotecas/dialetos/egua-classico/matematica.ts
+++ /dev/null
@@ -1,591 +0,0 @@
-/* eslint-disable prefer-rest-params */
-import { ErroEmTempoDeExecucao } from '../../../excecoes';
-
-module.exports.graus = function (angle) {
-    if (isNaN(angle) || angle === null)
-        throw new ErroEmTempoDeExecucao(this.token, 'Você deve prover um número para mat.graus(ângulo).');
-
-    return angle * (180 / Math.PI);
-};
-
-module.exports.mediana = function (a) {
-    if (isNaN(a) || a === null)
-        throw new ErroEmTempoDeExecucao(this.token, 'Você deve prover valores para mediana(a).');
-
-    a.sort(function (a, b) {
-        return a - b;
-    });
-    const mid = a.length / 2;
-    return mid % 1 ? a[mid - 0.5] : (a[mid - 1] + a[mid]) / 2;
-};
-
-/**
- * Calcula a moda de um vetor.
- * @param {inteiro[]} vetor Vetor de inteiros.
- * @returns Valor inteiro da moda.
- */
-module.exports.moda = function (numbers) {
-    if (!Array.isArray(numbers))
-        throw new ErroEmTempoDeExecucao(this.token, 'Parâmetro `vetor` deve ser um vetor na função moda(vetor).');
-
-    if (numbers.some(isNaN))
-        throw new ErroEmTempoDeExecucao(
-            this.token,
-            'Todos os elementos de `vetor` deve ser numéricos na função moda(vetor).'
-        );
-
-    let modes = [],
-        count = [],
-        i,
-        number,
-        maxIndex = 0;
-
-    for (i = 0; i < numbers.length; i += 1) {
-        number = numbers[i];
-        count[number] = (count[number] || 0) + 1;
-        if (count[number] > maxIndex) {
-            maxIndex = count[number];
-        }
-    }
-
-    for (i in count)
-        if (count.hasOwnProperty(i)) {
-            if (count[i] === maxIndex) {
-                modes.push(Number(i));
-            }
-        }
-
-    return modes;
-};
-
-module.exports.pi = Math.PI;
-
-module.exports.radiano = function (angulo) {
-    if (!Number.isInteger(angulo))
-        throw new ErroEmTempoDeExecucao(
-            this.token,
-            'Você deve prover um número inteiro para o parâmetro `angulo`, em radiano(angulo).'
-        );
-
-    return angulo * (Math.PI / 180);
-};
-
-//FUNÇÃO AFIM E QUADRÁTICA
-/**
- * Gera valores para abscissa.
- * @param {inteiro} distancia A distância entra dois pontos.
- * @param {inteiro} valorPontoCentral O ponto central na abscissa.
- * @param {inteiro} numeroPontos Número de pontos a serem gerados (padrão: 7).
- * @returns Um vetor, contendo o número de pontos informado ou definido por padrão em uma abscissa.
- *          Se o número informado é par, um ponto negativo a mais é gerado.
- */
-module.exports.gerarPontosAbscissa = function (distancia, valorPontoCentral, numeroPontos) {
-    if (!Number.isInteger(distancia))
-        throw new ErroEmTempoDeExecucao(
-            this.token,
-            'Você deve prover um valor inteiro para o parâmetro `distancia`, em gerarPontosAbscissa(distancia, valorInicial).'
-        );
-
-    if (!Number.isInteger(valorPontoCentral))
-        throw new ErroEmTempoDeExecucao(
-            this.token,
-            'Você deve prover um valor inteiro para o parâmetro `valorInicial`, em gerarPontosAbscissa(distancia, valorInicial).'
-        );
-
-    if (!numeroPontos) {
-        numeroPontos = 7;
-    }
-
-    const elementoInicial = valorPontoCentral - ((numeroPontos / 2) >> 0) * distancia;
-    const x = [];
-    for (let i = 0; i < numeroPontos; i++) {
-        x.push(elementoInicial + i * distancia);
-    }
-
-    return x;
-};
-
-//Raíz da Função Afim
-module.exports.fun1R = function (a, b) {
-    if (isNaN(a) || a === null || isNaN(b) || b === null)
-        throw new ErroEmTempoDeExecucao(this.token, 'Você deve prover valores para fun1R(valor1,valor2).');
-    return (-1 * b) / a;
-};
-
-//Intervalo Preenchido
-module.exports.linspace = function (startValue, stopValue, cardinality) {
-    if (
-        isNaN(startValue) ||
-        startValue === null ||
-        isNaN(stopValue) ||
-        stopValue === null ||
-        isNaN(cardinality) ||
-        cardinality === null
-    )
-        throw new ErroEmTempoDeExecucao(this.token, 'Você deve prover valores para linspace(valor1,valor2,valor3).');
-    const lista = [];
-    const step = (stopValue - startValue) / (cardinality - 1);
-    for (let i = 0; i < cardinality; i++) {
-        lista.push(startValue + step * i);
-    }
-    return lista;
-};
-
-//Raízes da Função Quadrática
-module.exports.fun2R = function (a, b, c) {
-    if (isNaN(a) || a === null)
-        throw new ErroEmTempoDeExecucao(this.token, 'Você deve prover valores para fun2R(a,b,c).');
-
-    const r1 = (-1 * b + Math.sqrt(Math.pow(b, 2) - 4 * a * c)) / (2 * a);
-    const r2 = (-1 * b - Math.sqrt(Math.pow(b, 2) - 4 * a * c)) / (2 * a);
-
-    const xv = (-1 * b) / (2 * a);
-    const yv = ((-1 * (Math.pow(b, 2) - 4 * a * c)) / 4) * a;
-
-    return [xv, yv];
-};
-
-//Aproximação de valores
-const aprox = function (x, z) {
-    if (isNaN(x) || x === null || isNaN(z) || z === null)
-        throw new ErroEmTempoDeExecucao(this.token, 'Você deve prover valores para aprox(x,z).');
-    if (z == undefined) {
-        z = 2;
-    }
-    if (typeof x == 'number') {
-        x = x.toFixed(z);
-    } else if (x[0].length == undefined) {
-        // 1D array
-        for (let i = 0; i < x.length; i++) {
-            x[i] = parseFloat(x[i].toFixed(z));
-        }
-    } else
-        for (let i = 0; i < x.length; i++) {
-            // 2D array
-            for (let j = 0; j < x[0].length; j++) {
-                x[i][j] = parseFloat(x[i][j].toFixed(z));
-            }
-        }
-    return x;
-};
-
-module.exports.aprox = aprox;
-
-//Parâmetros da Função
-const matrizn = function (z) {
-    if (isNaN(z) || z === null)
-        throw new ErroEmTempoDeExecucao(this.token, 'Você deve prover valores para matrizn(z).');
-    const n = arguments.length;
-    const data = Array.from(Array(1), () => new Array(n));
-    for (let i = 0; i < n; i++) {
-        data[0][i] = arguments[i];
-    }
-    return data;
-};
-
-module.exports.matrizn = matrizn;
-
-//Vetor de pontos aleatórios
-module.exports.pontosAleatorios = function (n) {
-    if (isNaN(n) || n === null) throw new ErroEmTempoDeExecucao(this.token, 'Você deve prover valores para pale(n).');
-    let ex;
-    if (ex == undefined) {
-        ex = 0;
-    }
-    const x = [];
-    x[0] = 100;
-    for (let i = 1; i < n; i++) {
-        x[i] = ex + x[i - 1] + Math.random() * 2 - 1;
-    }
-    const xx = aprox(x, 2);
-    return xx;
-};
-
-//Intervalo A-B
-module.exports.vet = function (a, b) {
-    if (isNaN(a) || a === null || isNaN(b) || b === null)
-        throw new ErroEmTempoDeExecucao(this.token, 'Você deve prover valores para vet(a,b).');
-    const data = Array.from(Array(1), () => new Array(b - a + 1));
-
-    for (let i = 0; i < data[0].length; i++) {
-        data[0][i] = a + i;
-    }
-    return matrizn(data);
-};
-
-/**
- * Conta quantas vezes um determinado valor aparece em um vetor.
- * @param {qualquer[]} vetor Vetor de elementos
- * @param {qualquer} valor Valor a ser encontrado no vetor
- * @returns Valor inteiro, com o número de vezes que `valor` foi encontrado em `vetor`.
- */
-module.exports.numeroOcorrencias = function (vetor, valor) {
-    if (!Array.isArray(vetor))
-        throw new ErroEmTempoDeExecucao(
-            this.token,
-            'Parâmetro `vetor` deve ser um vetor, em numeroOcorrencias(vetor, valor).'
-        );
-
-    return vetor.filter((v) => v === valor).length;
-};
-
-/* ESTATÍSTICA */
-
-/**
- * Encontra o elemento máximo em um vetor.
- * @param {inteiro[]} vetor Um vetor de números inteiros.
- * @returns O maior número encontrado em um vetor.
- */
-module.exports.max = function (vetor) {
-    if (!Array.isArray(vetor))
-        throw new ErroEmTempoDeExecucao(this.token, 'Parâmetro `vetor` deve ser um vetor, em max(vetor).');
-
-    if (vetor.some(isNaN))
-        throw new ErroEmTempoDeExecucao(this.token, 'Todos os elementos de `vetor` deve ser numéricos, em max(vetor).');
-
-    return Math.max.apply(null, vetor);
-};
-
-/**
- * Encontra o elemento mínimo em um vetor.
- * @param {inteiro[]} vetor Um vetor de números inteiros.
- * @returns O menor número encontrado em um vetor.
- */
-module.exports.min = function (vetor) {
-    if (!Array.isArray(vetor))
-        throw new ErroEmTempoDeExecucao(this.token, 'Parâmetro `vetor` deve ser um vetor, em min(vetor).');
-
-    if (vetor.some(isNaN))
-        throw new ErroEmTempoDeExecucao(this.token, 'Todos os elementos de `vetor` deve ser numéricos, em min(vetor).');
-
-    return Math.min.apply(null, vetor);
-};
-
-//Soma de determinada matriz
-const smtr = function (a) {
-    if (isNaN(a) || a === null) throw new ErroEmTempoDeExecucao(this.token, 'Você deve prover valores para smtr(a).');
-
-    let z = 0;
-    if (a.length == 1) {
-        // a is a 1D row array
-        for (let j = 0; j < a[0].length; j++) {
-            z = z + a[0][j];
-        }
-    } else if (a[0].length == 1) {
-        // a is a 1D column array
-        for (let i = 0; i < a.length; i++) {
-            z = z + a[i][0];
-        }
-    } else {
-        for (let j = 0; j < a.length; j++) {
-            z = z + a[j];
-        }
-    }
-
-    return aprox(z, 2);
-};
-
-module.exports.smtr = smtr;
-
-// Retorna a média de um vetor de números
-module.exports.media = function () {
-    const argumentsLength = Object.keys(arguments).length;
-
-    if (argumentsLength <= 0) {
-        throw new ErroEmTempoDeExecucao(this.token, 'Você deve fornecer um parâmetro para a função.');
-    }
-
-    if (argumentsLength > 1) {
-        throw new ErroEmTempoDeExecucao(this.token, 'A função recebe apenas um parâmetro.');
-    }
-
-    // Pega o primeiro argumento do objeto de argumentos
-    const args = arguments['0'];
-
-    if (!Array.isArray(args)) {
-        throw new ErroEmTempoDeExecucao(this.token, 'Você deve fornecer um parâmetro do tipo vetor.');
-    }
-
-    // Valida se o array está vazio.
-    if (!args.length) {
-        throw new ErroEmTempoDeExecucao(this.token, 'Vetor vazio. Você deve fornecer ao menos um valor ao vetor.');
-    }
-
-    // Valida se o array contém apenas valores do tipo número.
-    args.forEach((item) => {
-        if (typeof item !== 'number') {
-            throw new ErroEmTempoDeExecucao(
-                this.token,
-                'Você deve fornecer um vetor contendo apenas valores do tipo número.'
-            );
-        }
-    });
-
-    // Soma todos os itens.
-    const valoresSomados = args.reduce((acumulador, itemAtual) => acumulador + itemAtual, 0);
-
-    // Faz o cáculo da média em si e retorna.
-    return valoresSomados / args.length;
-};
-
-//Média aritmética de uma matriz
-const ve = function (a) {
-    if (isNaN(a) || a === null) throw new ErroEmTempoDeExecucao(this.token, 'Você deve prover valores para ve(a).');
-
-    if (a.length == 1) {
-        return aprox(smtr(a) / a[0].length, 4);
-    } // a is a row array
-    if (a[0].length == 1) {
-        return aprox(smtr(a) / a.length, 4);
-    } // a is a column array
-    if (a[0].length == undefined) {
-        return aprox(smtr(a) / a.length, 4);
-    }
-};
-module.exports.ve = ve;
-
-//Soma dos quadrados dos resíduos (sqr) de uma matriz
-const sqr = function (a) {
-    if (isNaN(a) || a === null) throw new ErroEmTempoDeExecucao(this.token, 'Você deve prover valores para sqr(a).');
-
-    const mean = ve(a);
-    let sum = 0;
-    let i = a.length;
-    let tmp;
-    while (--i >= 0) {
-        tmp = a[i] - mean;
-        sum += tmp * tmp;
-    }
-    return sum;
-};
-module.exports.sqr = sqr;
-
-//Variação de uma matriz
-module.exports.variancia = function (array, flag) {
-    if (isNaN(array) || array === null || isNaN(flag) || flag === null)
-        throw new ErroEmTempoDeExecucao(this.token, 'Você deve prover valores para variancia(matriz, flag).');
-
-    if (flag == undefined) {
-        flag = 1;
-    }
-    return sqr(array) / (array.length - (flag ? 1 : 0));
-};
-
-//Covariância de duas matrizes
-module.exports.colet = function (array1, array2) {
-    if (isNaN(array1) || array1 === null || isNaN(array1) || array2 === null)
-        throw new ErroEmTempoDeExecucao(this.token, 'Você deve prover valores para covar(matriz1, matriz2).');
-
-    let u = ve(array1);
-    let v = ve(array2);
-    let arr1Len = array1.length;
-    let sq_dev = new Array(arr1Len);
-    for (let i = 0; i < arr1Len; i++) sq_dev[i] = (array1[i] - u) * (array2[i] - v);
-    return smtr(sq_dev) / (arr1Len - 1);
-};
-
-/*TRIGONOMETRIA*/
-//Seno de um número
-module.exports.sen = function (x) {
-    if (isNaN(x) || x === null) throw new ErroEmTempoDeExecucao(this.token, 'Você deve prover valores para sen(x).');
-
-    return Math.sin(x);
-};
-
-//Cosseno de um número
-module.exports.cos = function (x) {
-    if (isNaN(x) || x === null) throw new ErroEmTempoDeExecucao(this.token, 'Você deve prover valores para cos(x).');
-
-    return Math.cos(x);
-};
-
-//Tangente de um número
-module.exports.tan = function (x) {
-    if (isNaN(x) || x === null) throw new ErroEmTempoDeExecucao(this.token, 'Você deve prover valores para tan(x).');
-
-    return Math.tan(x);
-};
-
-//Arco cosseno de um número
-module.exports.arcos = function (x) {
-    if (isNaN(x) || x === null) throw new ErroEmTempoDeExecucao(this.token, 'Você deve prover valores para arcos(x).');
-
-    return Math.acos(x);
-};
-
-//Arco seno de um número
-module.exports.arsen = function (x) {
-    if (isNaN(x) || x === null) throw new ErroEmTempoDeExecucao(this.token, 'Você deve prover valores para arsen(x).');
-
-    return Math.asin(x);
-};
-
-//Arco tangente de um número
-module.exports.artan = function (x) {
-    if (isNaN(x) || x === null) throw new ErroEmTempoDeExecucao(this.token, 'Você deve prover valores para artan(x).');
-
-    return Math.atan(x);
-};
-
-//Exponencial
-module.exports.exp = function (x) {
-    if (isNaN(x) || x === null) throw new ErroEmTempoDeExecucao(this.token, 'Você deve prover valores para exp(x).');
-
-    return Math.exp(x);
-};
-
-//Logaritmo natural
-module.exports.log = function (x) {
-    if (isNaN(x) || x === null) throw new ErroEmTempoDeExecucao(this.token, 'Você deve prover valores para log(x).');
-
-    return Math.log(x);
-};
-
-// Retorna a base elevada ao expoente
-const pot = function (base, expoente) {
-    if (typeof base !== 'number' || typeof expoente !== 'number') {
-        throw new ErroEmTempoDeExecucao(this.token, 'Os parâmetros devem ser do tipo número.');
-    }
-
-    return Math.pow(base, expoente);
-};
-
-module.exports.potencia = pot;
-
-//Raíz quadrada
-module.exports.raizq = function (x) {
-    if (isNaN(x) || x === null) throw new ErroEmTempoDeExecucao(this.token, 'Você deve prover valores para raizq(x).');
-
-    return Math.sqrt(x);
-};
-
-/*CINEMÁTICA*/
-
-//Velocidade média
-module.exports.velocidadeMedia = function (s, t) {
-    if (isNaN(s) || s === null || isNaN(t) || t === null)
-        throw new ErroEmTempoDeExecucao(this.token, 'Você deve prover valores para velocidadeMedia(d,t).');
-
-    return s / t;
-};
-
-//Espaço percorrido
-module.exports.deltaS = function (s0, s) {
-    if (isNaN(s0) || s0 === null || isNaN(s) || s === null)
-        throw new ErroEmTempoDeExecucao(this.token, 'Você deve prover valores para deltas(e0,e1).');
-    let ds = s - s0;
-    return ds;
-};
-
-//Tempo Percorrido
-module.exports.deltaT = function (t0, t) {
-    if (isNaN(t0) || t0 === null || isNaN(t) || t === null)
-        throw new ErroEmTempoDeExecucao(this.token, 'Você deve prover valores para deltat(t0,t1).');
-    let dt = t - t0;
-    return dt;
-};
-
-// Cálculo de aceleração
-module.exports.aceleracao = function (velocidadeFinal, velocidadeInicial, tempoFinal, tempoInicial) {
-    if (velocidadeFinal === null || velocidadeInicial === null || tempoFinal === null || tempoInicial === null) {
-        throw new ErroEmTempoDeExecucao(this.token, 'Devem ser fornecidos quatro parâmetros obrigatórios.');
-    }
-
-    if (
-        typeof velocidadeFinal !== 'number' ||
-        typeof velocidadeInicial !== 'number' ||
-        typeof tempoFinal !== 'number' ||
-        typeof tempoInicial !== 'number'
-    ) {
-        throw new ErroEmTempoDeExecucao(this.token, 'Todos os parâmetros devem ser do tipo número.');
-    }
-
-    return (velocidadeFinal - velocidadeInicial) / (tempoFinal - tempoInicial);
-};
-
-//Função Horária da Posição (M.R.U)
-module.exports.mrufh = function (s0, v, t) {
-    if (isNaN(s0) || s0 === null)
-        throw new ErroEmTempoDeExecucao(this.token, 'Você deve prover valores para mrufh(s0,v,t).');
-    t = t + 1;
-    const s = [];
-    let index = 0;
-    for (let i = 0; i < t; i++) {
-        s[index] = s0 + v * i;
-        index++;
-    }
-
-    return ['Função: ' + s0 + '+(' + v + ')*t' + '<br>' + 'Posições: ' + s];
-};
-
-//Gráfico da velocidade (M.R.U.V)
-module.exports.mruv = function (s0, s, a) {
-    if (isNaN(s0) || s0 === null || isNaN(s) || s === null || isNaN(a) || a === null)
-        throw new ErroEmTempoDeExecucao(this.token, 'Você deve prover valores para mruv(Pi, Vf, A).');
-    const vf = [];
-    const x = [];
-    let v: any = [];
-    let index = 0;
-    for (let i = 0; i < s; i++) {
-        v = index;
-        vf[index] = Math.sqrt(2 * a * (index - s0));
-        x[index] = i;
-        index++;
-    }
-
-    return vf;
-};
-
-/*Controle e Servomecanismos*/
-module.exports.pid = function (Mo, t, K, T1, T2) {
-    if (
-        isNaN(Mo) ||
-        Mo === null ||
-        isNaN(t) ||
-        t === null ||
-        isNaN(K) ||
-        K === null ||
-        isNaN(T1) ||
-        T1 === null ||
-        isNaN(T2) ||
-        T2 === null
-    ) {
-        throw new ErroEmTempoDeExecucao(this.token, 'Você deve prover valores para pid(Ov, Ts, K, T1, T2).');
-    }
-    let pi = Math.PI; //Pi da bilbioteca Math.js
-
-    //Amortecimento Relativo
-    let csi = (-1 * Math.log(Mo / 100)) / Math.sqrt(Math.pow(pi, 2) + pot(Math.log(Mo / 100), 2));
-
-    //Frequência Natural
-    let Wn = 4 / (t * csi);
-
-    //Controlador Proporcional (P)
-    let Kp = 20 * (Math.pow(csi, 2) * Math.pow(Wn, 2) * T1 * T2) + (Math.pow(Wn, 2) * T1 * T2 - 1) / K;
-
-    //Controlador Integral (I)
-    let Ki = (10 * csi * Math.pow(Wn, 3) * T1 * T2) / K;
-
-    //Controlador Derivativo (D)
-    let Kd = (12 * csi * Wn * T1 * T2 - T1 - T2) / K;
-
-    return [csi, Wn, Kp, Ki, Kd];
-};
-
-// Retorna o comprimento de um vetor
-module.exports.comp = function (array) {
-    if (!Array.isArray(array)) {
-        throw new ErroEmTempoDeExecucao(this.token, 'O valor passado pra função deve ser um vetor.');
-    }
-
-    return array.length;
-};
-
-// Retorna o menor número inteiro dentre o valor de "value"
-module.exports.minaprox = function (value) {
-    if (typeof value !== 'number') {
-        throw new ErroEmTempoDeExecucao(this.token, 'O valor passado pra função deve ser um número.');
-    }
-
-    return Math.floor(value);
-};
diff --git a/fontes/bibliotecas/dialetos/egua-classico/tempo.ts b/fontes/bibliotecas/dialetos/egua-classico/tempo.ts
deleted file mode 100644
index a88f58a0..00000000
--- a/fontes/bibliotecas/dialetos/egua-classico/tempo.ts
+++ /dev/null
@@ -1,50 +0,0 @@
-import { ErroEmTempoDeExecucao } from "../../../excecoes";
-
-// Retorna uma data completa
-module.exports.tempo = function () {
-	return new Date();
-};
-
-// Retorna os segundos atuais do sistema
-module.exports.segundos = function () {
-	return new Date().getSeconds();
-};
-
-// Retorna os minutos atuais do sistema
-module.exports.minutos = function () {
-	return new Date().getMinutes();
-};
-
-// Retorna a hora atual do sistema
-module.exports.horas = function () {
-	return new Date().getHours();
-};
-
-/**
- * Retorna uma instância de Date do JavaScript da data passada por parâmetro, no formato DD/MM/AAAA.
- * @param {string} dataComoTexto A data a ser convertida como texto, no formato DD/MM/AAAA.
- * @returns A data como um objeto Date to JavaScript.
- */
-module.exports.textoParaData = function (dataComoTexto) {
-	const regex = /^(0[1-9]|[12][0-9]|3[01])[/](0[1-9]|1[012])[/](19|20)\d\d$/;
-
-	if (typeof dataComoTexto !== 'string' || !regex.test(dataComoTexto)) {
-		throw new ErroEmTempoDeExecucao(
-			this.token,
-			"O parâmetro passado deve ser um texto com a data no formato DD/MM/AAAA. Ex: '01/01/2014'"
-		);
-	}
-
-	const date = new Date(converterDataPtParaIso(dataComoTexto));
-	const timezoneOffset = date.getTimezoneOffset();
-
-	return new Date(date.getTime() + timezoneOffset * 60 * 1000);
-}
-
-function converterDataPtParaIso(date) {
-	const day = date.split("/")[0];
-	const month = date.split("/")[1];
-	const year = date.split("/")[2];
-
-	return `${year}-${month}-${day}`;
-}
\ No newline at end of file
diff --git a/fontes/bibliotecas/dialetos/egua-classico/textos.ts b/fontes/bibliotecas/dialetos/egua-classico/textos.ts
deleted file mode 100644
index 183d6af7..00000000
--- a/fontes/bibliotecas/dialetos/egua-classico/textos.ts
+++ /dev/null
@@ -1,269 +0,0 @@
-/**
- * Biblioteca padrão para a manipulação de textos.
- *
- * Contém as principais funções para lidar com textos.
- *
- * @author André G.
- */
-
-import { ErroEmTempoDeExecucao } from "../../../excecoes";
-
-// Constantes úteis
-
-/**
- * Conjunto de todas as letraas minúsculas
- */
-module.exports.letras_minusculas = "abcdefghijklmnopqrstuvwxyz";
-
-/**
- * Conjunto de todas as letraas maiúsculas
- */
-module.exports.letras_maiusculas = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
-
-/**
- * Conjunto de todas as letraas
- */
-module.exports.letras = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
-
-/**
- * Conjunto de todas os dígitos
- */
-module.exports.digitos = "0123456789";
-
-/**
- * Conjuto de pontuções
- */
-module.exports.pontuacoes = '!"' + "#$%&'()*+,-./:;<=>?@[\\]^_`{|}~";
-
-// Funções de Manipulação de textos.
-
-/**
- * Converte otexto passado para maiúsculo.
- *
- * @param {string} texto  o texto a ser convertido.
- * @return {string} a string convertida.
- */
-module.exports.maiusculo = function (texto) {
-    if (typeof texto !== "string") {
-        throw new ErroEmTempoDeExecucao(
-            this.token,
-            "O parâmetro passado deve ser um texto"
-        );
-    }
-    return texto.toUpperCase();
-};
-
-/**
- * Converte o texto passado para minúsculo.
- *
- * @param {string} texto  o texto a ser convertido.
- * @return {string} a string convertida.
- */
-module.exports.minusculo = function (texto) {
-    if (typeof texto !== "string") {
-        throw new ErroEmTempoDeExecucao(
-            this.token,
-            "O parâmetro passado deve ser um texto"
-        );
-    }
-    return texto.toLowerCase();
-};
-
-/**
- * Verifica se um texto possui um subtexto.
- *
- * @param {string} texto  o texto a ser checado.
- * @param {string} subtexto  o subtexto a ser proucurado.
- * @return {boolean} verdadeiro se o texto possui o subtexto falso caso contrário.
- */
-module.exports.contem = function (texto, subtexto) {
-    if (typeof texto !== "string") {
-        throw new ErroEmTempoDeExecucao(
-            this.token,
-            "O parâmetro passado deve ser um texto"
-        );
-    }
-    if (typeof subtexto !== "string") {
-        throw new ErroEmTempoDeExecucao(
-            this.token,
-            "O segundo parâmetro também deve ser um texto"
-        );
-    }
-    return texto.includes(subtexto);
-};
-
-/**
- * Posiciona os argumentos fornecidos no texto.
- *
- * Note que: o texto precisa estar na forma `"Meu texto {}"`
- * onde o `{}` será substituído pelo primeiro argumento da função.
- *
- * Ex.: `textos.formate("Texto {} {} ", "número", 1)` -> `"Texto número 1"`.
- *
- * @param {string} texto  o texto a ser formatado.
- * @param {any[]} argumentos  vetor de argumentos a serem posicionados.
- * @return {string} o texto formatado.
- */
-module.exports.formate = function (texto, ...argumentos) {
-    if (typeof texto !== "string") {
-        throw new ErroEmTempoDeExecucao(
-            this.token,
-            "O parâmetro passado deve ser um texto"
-        );
-    }
-    for (let i = 0; i < argumentos.length; i++) {
-        let value = argumentos[i];
-        if (typeof value === "boolean") {
-            value = value ? "verdadeiro" : "falso";
-        }
-        if (value === null) {
-            value = "nulo";
-        }
-        if (typeof value === "object") {
-            value = "<dicionário>";
-        }
-        texto = texto.replace("{}", value);
-    }
-    return texto;
-};
-
-/**
- * Divide o texto passado no em um vetor de subtextos.
- *
- * @param {string} texto o texto a ser dividido.
- * @param {string} separador o texto usado para a divisão.
- * @param {number} limite um inteiro que limita o número de divisões.
- *
- * @returns {string[]} um vetor contendo os textos divididos.
- */
-module.exports.dividir = function (
-    texto,
-    separador = "",
-    limite = Number.MAX_SAFE_INTEGER
-) {
-    if (typeof texto !== "string") {
-        throw new ErroEmTempoDeExecucao(
-            this.token,
-            "O parâmetro passado deve ser um texto"
-        );
-    }
-    if (typeof separador !== "string") {
-        throw new ErroEmTempoDeExecucao(
-            this.token,
-            "O separador passado deve ser um texto"
-        );
-    }
-    if (typeof limite !== "number") {
-        throw new ErroEmTempoDeExecucao(
-            this.token,
-            "O limite passado deve ser um número"
-        );
-    }
-    return texto.split(separador, limite);
-};
-
-/**
- * Retorna o tamanho de um texto.
- *
- * @param {string} texto o texto para obter o tamanho.
- * @return {number} o tamanho do texto.
- */
-module.exports.tamanho = function (texto) {
-    if (typeof texto !== "string") {
-        throw new ErroEmTempoDeExecucao(
-            this.token,
-            "O parâmetro passado deve ser um texto"
-        );
-    }
-    return texto.length;
-};
-
-/**
- * Repete um texto fornecido.
- *
- * @param {string} texto o texto para obter o tamanho.
- * @param {number} contador o número de cópias.
- * @return {string} um texto com o número de cópias do texto fornecido.
- */
-module.exports.repita = function (texto, contador = 0) {
-    if (typeof texto !== "string") {
-        throw new ErroEmTempoDeExecucao(
-            this.token,
-            "O parâmetro passado deve ser um texto"
-        );
-    }
-    if (typeof contador !== "number") {
-        throw new ErroEmTempoDeExecucao(
-            this.token,
-            "O contador passado deve ser um número"
-        );
-    }
-    return texto.repeat(contador);
-};
-
-/**
- * Substitui em um texto fornecido o padrão indicado por um novo valor.
- *
- * @param {string} texto o texto para obter o tamanho.
- * @param {string} texto_buscado o texto ou expressão regular para ser substituído.
- * @param {string} novo_texto o novo texto para substituição.
- * @return {string} um novo texto com os valores substituídos.
- */
-module.exports.substituir = function (texto, texto_buscado, novo_texto) {
-    if (typeof texto !== "string") {
-        throw new ErroEmTempoDeExecucao(
-            this.token,
-            "O parâmetro passado deve ser um texto"
-        );
-    }
-    if (typeof texto_buscado !== "string") {
-        throw new ErroEmTempoDeExecucao(
-            this.token,
-            "O padrão passado deve ser um texto"
-        );
-    }
-    if (typeof novo_texto !== "string") {
-        throw new ErroEmTempoDeExecucao(this.token, "O novo valor deve ser um texto");
-    }
-    return texto.replace(texto_buscado, novo_texto);
-};
-
-/**
- *  Busca um subtexto em um texto.
- *
- * @param {string} texto o texto original.
- * @param {string} texto_buscado o texto que deve ser buscado ou expressão regular.
- *
- * @returns {number} o índice da primeira ocorrência no texto fornecido ou -1 caso contrário.
- */
-module.exports.busca = function (texto, texto_buscado) {
-    if (typeof texto !== "string") {
-        throw new ErroEmTempoDeExecucao(
-            this.token,
-            "O parâmetro passado deve ser um texto"
-        );
-    }
-    if (typeof texto_buscado !== "string") {
-        throw new ErroEmTempoDeExecucao(
-            this.token,
-            "O padrão passado deve ser um texto"
-        );
-    }
-    return texto.search(texto_buscado);
-};
-
-/**
- * Remove espaços em branco no começo e no fim do texto.
- *
- * @param {string} texto o texto original.
- * @returns {number} um texto sem espaços em ambos os lados.
- */
-module.exports.apara = function (texto) {
-    if (typeof texto !== "string") {
-        throw new ErroEmTempoDeExecucao(
-            this.token,
-            "O parâmetro passado deve ser um texto"
-        );
-    }
-    return texto.trim();
-};
\ No newline at end of file
diff --git a/fontes/bibliotecas/dialetos/visualg/index.ts b/fontes/bibliotecas/dialetos/visualg/index.ts
deleted file mode 100644
index e69de29b..00000000
diff --git a/fontes/bibliotecas/importar-biblioteca.ts b/fontes/bibliotecas/importar-biblioteca.ts
index 992ee017..7e7ae11f 100644
--- a/fontes/bibliotecas/importar-biblioteca.ts
+++ b/fontes/bibliotecas/importar-biblioteca.ts
@@ -1,6 +1,6 @@
 import * as processoFilho from 'child_process';
 import * as caminho from 'path';
-import * as sistemaArquivos from 'fs'
+import fs from 'fs'
 
 import { ErroEmTempoDeExecucao } from '../excecoes';
 import { FuncaoPadrao } from '../estruturas/funcao-padrao';
@@ -82,7 +82,7 @@ const modularizarBiblioteca = (dadosDoModulo: any, nome: string) => {
     return novoModulo;
 };
 
-const importarPacoteCaminhoBase = async (caminhoRelativo: string) => {
+const importarPacoteCaminhoBase = async (caminhoRelativo) => {
     let resultado = null;
     const npm = process.platform === 'win32' ? 'npm.cmd' : 'npm';
     const global = processoFilho.spawnSync(npm, ['root', '--location=global']);
@@ -90,7 +90,7 @@ const importarPacoteCaminhoBase = async (caminhoRelativo: string) => {
     const caminhoAbsoluto = caminho.join(
         (global.output[1]).toString().trim()) + `\\${caminhoRelativo}\\package.json`;
 
-    let arquivoInicio = JSON.parse(sistemaArquivos.readFileSync(caminhoAbsoluto, 'utf-8')).main || 'index.js';
+    let arquivoInicio = JSON.parse(fs.readFileSync(caminhoAbsoluto, 'utf-8')).main || 'index.js';
 
     await import(caminho.join(
         'file:///' +(global.output[1]).toString().trim()) + `\\${caminhoRelativo}\\${arquivoInicio.replace('./', '')}`).then(resposta => {
@@ -108,7 +108,7 @@ const importarPacoteExternoCompleto = async (nome: string) => {
     return await importarPacoteCaminhoBase(nome);
 };
 
-const verificarModulosDelegua = (nome: string): string | boolean => {
+const verificaModulosDelegua = (nome: string): string | boolean => {
     const modulos = {
         estatistica: '@designliquido/delegua-estatistica',
         estatística: '@designliquido/delegua-estatistica',
@@ -129,7 +129,7 @@ const verificarModulosDelegua = (nome: string): string | boolean => {
 
 export default async function (nome: string) {
     const nomeBibliotecaResolvido: string | boolean =
-        verificarModulosDelegua(nome);
+        verificaModulosDelegua(nome);
     return nomeBibliotecaResolvido
         ? carregarBibliotecaDelegua(String(nomeBibliotecaResolvido))
         : await carregarBiblioteca(nome, nome);
diff --git a/fontes/bibliotecas/primitivas-texto.ts b/fontes/bibliotecas/primitivas-texto.ts
index 2e37862e..f5fde58a 100644
--- a/fontes/bibliotecas/primitivas-texto.ts
+++ b/fontes/bibliotecas/primitivas-texto.ts
@@ -1,15 +1,15 @@
 export default {
-    dividir: (texto: string, divisor: any, limite: number) => [
-        ...texto.split(divisor, limite),
-    ],
-    fatiar: (texto: string, inicio: number, fim: number) =>
-        texto.slice(inicio, fim),
     inclui: (texto: string, elemento: any) => texto.includes(elemento),
-    maiusculo: (texto: string) => texto.toUpperCase(),
     minusculo: (texto: string) => texto.toLowerCase(),
+    maiusculo: (texto: string) => texto.toUpperCase(),
     substituir: (texto: string, elemento: string, substituto: string) =>
         texto.replace(elemento, substituto),
     subtexto: (texto: string, inicio: number, fim: number) =>
         texto.slice(inicio, fim),
+    fatiar: (texto: string, inicio: number, fim: number) =>
+        texto.slice(inicio, fim),
+    dividir: (texto: string, divisor: any, limite: number) => [
+        ...texto.split(divisor, limite),
+    ],
     tamanho: (texto: string) => texto.length
 };
diff --git a/fontes/bibliotecas/primitivas-vetor.ts b/fontes/bibliotecas/primitivas-vetor.ts
index 286b89b8..5b986fa5 100644
--- a/fontes/bibliotecas/primitivas-vetor.ts
+++ b/fontes/bibliotecas/primitivas-vetor.ts
@@ -1,31 +1,31 @@
 export default {
-    adicionar: (vetor: Array<any>, elemento: any) => {
-        vetor.push(elemento);
+    inclui: (vetor: Array<any>, elemento: any) => vetor.includes(elemento),
+    juntar: (vetor: Array<any>, separador: string) => vetor.join(separador),
+    removerUltimo: (vetor: Array<any>) => {
+        vetor.pop();
+        return vetor;
+    },
+    removerPrimeiro: (vetor: Array<any>) => {
+        vetor.shift();
         return vetor;
     },
     empilhar: (vetor: Array<any>, elemento: any) => {
         vetor.push(elemento);
         return vetor;
     },
+    adicionar: (vetor: Array<any>, elemento: any) => {
+        vetor.push(elemento);
+        return vetor;
+    },
+    inverter: (vetor: Array<any>) => vetor.reverse(),
     fatiar: (vetor: Array<any>, inicio: number, fim: number) =>
         vetor.slice(inicio, fim),
-    inclui: (vetor: Array<any>, elemento: any) => vetor.includes(elemento),
-    inverter: (vetor: Array<any>) => vetor.reverse(),
-    juntar: (vetor: Array<any>, separador: string) => vetor.join(separador),
     ordenar: (vetor: Array<any>) => vetor.sort(),
+    somar: (vetor: Array<number>) => vetor.reduce((a, b) => a + b),
     remover: (vetor: Array<any>, elemento: any) => {
         const index = vetor.indexOf(elemento);
         if (index !== -1) vetor.splice(index, 1);
         return vetor;
     },
-    removerPrimeiro: (vetor: Array<any>) => {
-        vetor.shift();
-        return vetor;
-    },
-    removerUltimo: (vetor: Array<any>) => {
-        vetor.pop();
-        return vetor;
-    },
-    somar: (vetor: Array<number>) => vetor.reduce((a, b) => a + b),
     tamanho: (vetor: Array<any>) => vetor.length
 };
diff --git a/fontes/declaracoes/tente.ts b/fontes/declaracoes/tente.ts
index e056cc8e..64c564a8 100644
--- a/fontes/declaracoes/tente.ts
+++ b/fontes/declaracoes/tente.ts
@@ -7,7 +7,7 @@ import { Declaracao } from './declaracao';
  */
 export class Tente extends Declaracao {
     caminhoTente: any[];
-    caminhoPegue: FuncaoConstruto | Declaracao[];
+    caminhoPegue: FuncaoConstruto;
     caminhoSenao: any[];
     caminhoFinalmente: any[];
 
@@ -15,7 +15,7 @@ export class Tente extends Declaracao {
         hashArquivo: number,
         linha: number,
         caminhoTente: any[],
-        caminhoPegue: FuncaoConstruto | Declaracao[],
+        caminhoPegue: any,
         caminhoSenao: any[],
         caminhoFinalmente: any[]
     ) {
diff --git a/fontes/delegua.ts b/fontes/delegua.ts
index 5fd513d9..8d62f78b 100644
--- a/fontes/delegua.ts
+++ b/fontes/delegua.ts
@@ -35,7 +35,6 @@ import { LexadorBirl } from './lexador/dialetos/lexador-birl';
 import { AvaliadorSintaticoBirl } from './avaliador-sintatico/dialetos/avaliador-sintatico-birl';
 import { TradutorJavaScript, TradutorReversoJavaScript } from './tradutores';
 import { InterpretadorVisuAlg } from './interpretador/dialetos/visualg';
-import { ErroInterpretador } from './interpretador';
 
 /**
  * O núcleo da linguagem.
@@ -203,7 +202,7 @@ export class Delegua implements DeleguaInterface {
         interfaceLeitura.prompt();
         interfaceLeitura.on('line', async (linha: string) => {
             const { resultado } = await isto.executarUmaLinha(linha);
-            if (resultado && resultado.length) {
+            if (resultado.length) {
                 isto.funcaoDeRetorno(resultado[0]);
             }
 
@@ -386,9 +385,9 @@ export class Delegua implements DeleguaInterface {
                 if (erroInterpretador.simbolo) {
                     this.erroEmTempoDeExecucao(erroInterpretador);
                 } else {
-                    const erroEmJavaScript: any = erroInterpretador as ErroInterpretador;
-                    console.error(chalk.red(`[Linha: ${erroEmJavaScript.linha}] Erro em JavaScript: `) + `${erroEmJavaScript.erroInterno?.message}`);
-                    console.error(chalk.red(`Pilha de execução: `) + `${erroEmJavaScript.erroInterno?.stack}`);
+                    const erroEmJavaScript: any = erroInterpretador as any;
+                    console.error(chalk.red(`Erro em JavaScript: `) + `${erroEmJavaScript.message}`);
+                    console.error(chalk.red(`Pilha de execução: `) + `${erroEmJavaScript.stack}`);
                 }
             }
         }
diff --git a/fontes/depuracao/README.md b/fontes/depuracao/README.md
index 3fbf9606..3d6b3bd7 100644
--- a/fontes/depuracao/README.md
+++ b/fontes/depuracao/README.md
@@ -17,7 +17,7 @@ constructor(_instanciaDelegua: Delegua) {
     // `Interpretador.executar()`. 
     // Deve ser removido num futuro próximo.
     /* (this.instanciaDelegua.interpretador as any).pontosParada.push({
-        hashArquivo: cyrb53('./exemplos/importacao/importacao-2.egua'),
+        hashArquivo: cyrb53('./testes/exemplos/importacao/importacao-2.egua'),
         linha: 4
     }); */
 
@@ -34,7 +34,7 @@ constructor(_instanciaDelegua: Delegua) {
     // `Interpretador.executar()`. 
     // Deve ser removido num futuro próximo.
     (this.instanciaDelegua.interpretador as any).pontosParada.push({
-        hashArquivo: cyrb53('./exemplos/importacao/importacao-2.egua'),
+        hashArquivo: cyrb53('./testes/exemplos/importacao/importacao-2.egua'),
         linha: 4
     });
 
@@ -81,8 +81,8 @@ Os comandos implementados até então são:
 `adicionar-ponto-parada` e `remover-ponto-parada` pedem dois argumentos: o caminho do arquivo fonte e a linha em que se deseja adicionar ou renover ponto de parada. Exemplo:
 
 ```
-adicionar-ponto-parada ./exemplos/importacao/importacao-2.egua 5
-remover-ponto-parada ./exemplos/importacao/importacao-2.egua 5
+adicionar-ponto-parada ./testes/exemplos/importacao/importacao-2.egua 5
+remover-ponto-parada ./testes/exemplos/importacao/importacao-2.egua 5
 ```
 
 ## Resposta dos comandos
diff --git a/fontes/depuracao/servidor-depuracao.ts b/fontes/depuracao/servidor-depuracao.ts
index d6d137fb..6ab5d32c 100644
--- a/fontes/depuracao/servidor-depuracao.ts
+++ b/fontes/depuracao/servidor-depuracao.ts
@@ -74,7 +74,7 @@ export class ServidorDepuracao {
 
         this.interpretador.comandoAdentrarEscopo = true;
         this.interpretador.pontoDeParadaAtivo = false;
-        await this.interpretador.interpretarApenasUmaInstrucao();
+        await this.interpretador.interpretacaoApenasUmaInstrucao();
 
         conexao.write(linhasResposta);
     };
@@ -197,7 +197,7 @@ export class ServidorDepuracao {
         linhasResposta += '--- proximo-resposta ---\n';
         this.interpretador.comandoProximo = true;
         this.interpretador.pontoDeParadaAtivo = false;
-        await this.interpretador.interpretarApenasUmaInstrucao();
+        await this.interpretador.interpretacaoApenasUmaInstrucao();
         this.interpretador.comandoProximo = false;
         conexao.write(linhasResposta);
     };
@@ -243,14 +243,18 @@ export class ServidorDepuracao {
             this.interpretador.pilhaEscoposExecucao.obterTodasVariaveis([]);
 
         linhasResposta += '--- variaveis-resposta ---\n';
-        for (const variavel of todasVariaveis) {
-            linhasResposta +=
-                variavel.nome +
-                ' :: ' +
-                variavel.tipo +
-                ' :: ' +
-                variavel.valor +
-                '\n';
+        for (const grupoVariavel of todasVariaveis) {
+            for (const [nomeVariavel, valor] of Object.entries(grupoVariavel)) {
+                if (valor) {
+                    linhasResposta +=
+                        nomeVariavel +
+                        ' :: ' +
+                        Object.getPrototypeOf(valor).constructor.name +
+                        ' :: ' +
+                        valor +
+                        '\n';
+                }
+            }
         }
 
         linhasResposta += '--- fim-variaveis-resposta ---\n';
diff --git a/fontes/formatadores/delegua.ts b/fontes/formatadores/delegua.ts
deleted file mode 100644
index 34e82f7e..00000000
--- a/fontes/formatadores/delegua.ts
+++ /dev/null
@@ -1,57 +0,0 @@
-import * as sistemaOperacional from 'os';
-
-import { SimboloInterface } from "../interfaces";
-
-import tiposDeSimbolos from '../tipos-de-simbolos/delegua';
-
-export class FormatadorDelegua {
-    indentacao: number;
-    blocoAberto: boolean;
-
-    constructor() {
-        this.indentacao = 0;
-        this.blocoAberto = true;
-    }
-
-    formatar(simbolos: SimboloInterface[]): string {
-        let resultado = "";
-
-        for (let simbolo of simbolos) {
-            switch (simbolo.tipo) {
-                case tiposDeSimbolos.CHAVE_ESQUERDA:
-                    this.indentacao += 4;
-                    resultado += '{' + sistemaOperacional.EOL;
-                    resultado += ' '.repeat(this.indentacao);
-                    break;
-                case tiposDeSimbolos.CHAVE_DIREITA:
-                    this.indentacao -= 4;
-                    resultado += sistemaOperacional.EOL + '}' + sistemaOperacional.EOL;
-                    resultado += ' '.repeat(this.indentacao);
-                    break;
-                case tiposDeSimbolos.PARENTESE_ESQUERDO:
-                    resultado += '(';
-                    break;
-                case tiposDeSimbolos.PARENTESE_DIREITO:
-                    resultado += ')';
-                    break;
-                case tiposDeSimbolos.ENQUANTO:
-                case tiposDeSimbolos.FAZER:
-                case tiposDeSimbolos.FINALMENTE:
-                case tiposDeSimbolos.PARA:
-                case tiposDeSimbolos.PEGUE:
-                case tiposDeSimbolos.SE:
-                case tiposDeSimbolos.SENAO:
-                case tiposDeSimbolos.SENÃO:
-                case tiposDeSimbolos.TENTE:
-                case tiposDeSimbolos.VARIAVEL:
-                    resultado += simbolo.lexema + ' ';
-                    break;
-                default:
-                    resultado += simbolo.lexema;
-                    break;
-            }
-        }
-
-        return resultado;
-    }
-}
diff --git a/fontes/formatadores/index.ts b/fontes/formatadores/index.ts
deleted file mode 100644
index f5235213..00000000
--- a/fontes/formatadores/index.ts
+++ /dev/null
@@ -1,1 +0,0 @@
-export * from './delegua';
diff --git a/fontes/importador/importador.ts b/fontes/importador/importador.ts
index 70c2edf9..2696e28b 100644
--- a/fontes/importador/importador.ts
+++ b/fontes/importador/importador.ts
@@ -1,4 +1,4 @@
-import * as sistemaArquivos from 'fs';
+import * as fs from 'fs';
 import * as caminho from 'path';
 import * as sistemaOperacional from 'os';
 
@@ -37,11 +37,7 @@ export class Importador implements ImportadorInterface {
         this.depuracao = depuracao;
     }
 
-    importar(
-        caminhoRelativoArquivo: string,
-        importacaoInicial: boolean = false,
-        traduzirJavaScriptParaDelegua: boolean = false
-    ): RetornoImportador {
+    importar(caminhoRelativoArquivo: string, importacaoInicial: boolean = false, traduzirJavaScriptParaDelegua: boolean = false): RetornoImportador {
         const nomeArquivo = caminho.basename(caminhoRelativoArquivo);
         let caminhoAbsolutoArquivo = caminho.resolve(this.diretorioBase, caminhoRelativoArquivo);
         if (importacaoInicial) {
@@ -50,7 +46,7 @@ export class Importador implements ImportadorInterface {
 
         const hashArquivo = cyrb53(caminhoAbsolutoArquivo.toLowerCase());
 
-        if (!sistemaArquivos.existsSync(nomeArquivo)) {
+        if (!fs.existsSync(nomeArquivo)) {
             // TODO: Terminar.
             /* throw new ErroEmTempoDeExecucao(
                 declaracao.simboloFechamento,
@@ -59,24 +55,35 @@ export class Importador implements ImportadorInterface {
             ); */
         }
 
-        const dadosDoArquivo: Buffer = sistemaArquivos.readFileSync(caminhoAbsolutoArquivo);
-        const conteudoDoArquivo: string[] = dadosDoArquivo.toString().replace(sistemaOperacional.EOL, '\n').split('\n');
-
-        if (traduzirJavaScriptParaDelegua) {
+        const dadosDoArquivo: Buffer = fs.readFileSync(caminhoAbsolutoArquivo);
+        const conteudoDoArquivo: string[] = dadosDoArquivo
+            .toString()
+            .replace(sistemaOperacional.EOL, '\n')
+            .split('\n');
+        
+        if(traduzirJavaScriptParaDelegua){
             return {
                 conteudoArquivo: conteudoDoArquivo,
                 nomeArquivo,
                 hashArquivo,
-            } as RetornoImportador;
+            } as RetornoImportador
         }
 
         for (let linha = 0; linha < conteudoDoArquivo.length; linha++) {
             conteudoDoArquivo[linha] += '\0';
         }
 
-        const retornoLexador = this.lexador.mapear(conteudoDoArquivo, hashArquivo);
-        const retornoAvaliadorSintatico = this.avaliadorSintatico.analisar(retornoLexador, hashArquivo);
-        this.arquivosAbertos[hashArquivo] = caminho.resolve(caminhoRelativoArquivo);
+        const retornoLexador = this.lexador.mapear(
+            conteudoDoArquivo,
+            hashArquivo
+        );
+        const retornoAvaliadorSintatico = this.avaliadorSintatico.analisar(
+            retornoLexador,
+            hashArquivo
+        );
+        this.arquivosAbertos[hashArquivo] = caminho.resolve(
+            caminhoRelativoArquivo
+        );
 
         if (this.depuracao) {
             this.conteudoArquivosAbertos[hashArquivo] = conteudoDoArquivo;
diff --git a/fontes/interfaces/interpretador-com-depuracao-interface.ts b/fontes/interfaces/interpretador-com-depuracao-interface.ts
index 8be2d1cb..700ec02f 100644
--- a/fontes/interfaces/interpretador-com-depuracao-interface.ts
+++ b/fontes/interfaces/interpretador-com-depuracao-interface.ts
@@ -9,7 +9,7 @@ export interface InterpretadorComDepuracaoInterface
     pontoDeParadaAtivo: boolean;
     pontosParada: PontoParada[];
 
-    interpretarApenasUmaInstrucao(): Promise<any>;
+    interpretacaoApenasUmaInstrucao(): Promise<any>;
     continuarInterpretacao(): Promise<any>;
     proximoESair(): Promise<any>;
     prepararParaDepuracao(declaracoes: Declaracao[]): void;
diff --git a/fontes/interfaces/pilha-escopos-execucao-interface.ts b/fontes/interfaces/pilha-escopos-execucao-interface.ts
index 7c762373..42311f41 100644
--- a/fontes/interfaces/pilha-escopos-execucao-interface.ts
+++ b/fontes/interfaces/pilha-escopos-execucao-interface.ts
@@ -15,7 +15,7 @@ export interface PilhaEscoposExecucaoInterface
     definirVariavel(nomeVariavel: string, valor: any): void;
     elementos(): number;
     naPosicao(posicao: number): EscopoExecucao;
-    obterTodasVariaveis(todasVariaveis: any[]): {valor: any, nome: string, tipo: string}[];
+    obterTodasVariaveis(todasVariaveis: any[]): VariavelInterface[];
     obterVariavel(simbolo: SimboloInterface): VariavelInterface;
     obterVariavelEm(distancia: number, nome: string): VariavelInterface;
     obterVariavelPorNome(nome: string): VariavelInterface;
diff --git a/fontes/interpretador/dialetos/egua-classico/interpretador-egua-classico.ts b/fontes/interpretador/dialetos/egua-classico/interpretador-egua-classico.ts
index 6be2d057..63052bab 100644
--- a/fontes/interpretador/dialetos/egua-classico/interpretador-egua-classico.ts
+++ b/fontes/interpretador/dialetos/egua-classico/interpretador-egua-classico.ts
@@ -3,6 +3,8 @@ import * as sistemaArquivos from 'fs';
 
 import { EspacoVariaveis } from '../../../espaco-variaveis';
 import { Delegua } from '../../../delegua';
+import carregarBibliotecaGlobal from '../../../bibliotecas/biblioteca-global';
+import carregarModulo from '../../../bibliotecas/importar-biblioteca';
 
 import { Chamavel } from '../../../estruturas/chamavel';
 import { FuncaoPadrao } from '../../../estruturas/funcao-padrao';
@@ -58,9 +60,6 @@ import {
 import { inferirTipoVariavel } from '../../inferenciador';
 
 import tiposDeSimbolos from '../../../tipos-de-simbolos/egua-classico';
-
-import carregarBibliotecaGlobal from '../../../bibliotecas/dialetos/egua-classico/biblioteca-global';
-import { carregarModuloPorNome } from '../../../bibliotecas/dialetos/egua-classico';
 import { ResolvedorEguaClassico } from './resolvedor/resolvedor';
 
 /**
@@ -101,11 +100,11 @@ export class InterpretadorEguaClassico implements InterpretadorInterface {
     }
 
     visitarExpressaoFormatacaoEscrita(declaracao: FormatacaoEscrita) {
-        throw new Error('Método não implementado.');
+        throw new Error('Method not implemented.');
     }
     
     visitarExpressaoEscrevaMesmaLinha(declaracao: EscrevaMesmaLinha) {
-        throw new Error('Método não implementado.');
+        throw new Error('Method not implemented.');
     }
 
     visitarExpressaoLeia(expressao: Leia): Promise<any> {
@@ -166,7 +165,7 @@ export class InterpretadorEguaClassico implements InterpretadorInterface {
         esquerda: VariavelInterface | any,
         direita: VariavelInterface | any
     ): boolean {
-        if (esquerda && esquerda.tipo) {
+        if (esquerda.tipo) {
             if (
                 esquerda.tipo === 'nulo' &&
                 direita.tipo &&
@@ -214,16 +213,16 @@ export class InterpretadorEguaClassico implements InterpretadorInterface {
             const direita: VariavelInterface | any = await this.avaliar(
                 expressao.direita
             );
-            const valorEsquerdo: any = esquerda && esquerda.hasOwnProperty('valor')
+            const valorEsquerdo: any = esquerda.hasOwnProperty('valor')
                 ? esquerda.valor
                 : esquerda;
-            const valorDireito: any = direita && direita.hasOwnProperty('valor')
+            const valorDireito: any = direita.hasOwnProperty('valor')
                 ? direita.valor
                 : direita;
-            const tipoEsquerdo: string = esquerda && esquerda.hasOwnProperty('tipo')
+            const tipoEsquerdo: string = esquerda.hasOwnProperty('tipo')
                 ? esquerda.tipo
                 : inferirTipoVariavel(esquerda);
-            const tipoDireito: string = direita && direita.hasOwnProperty('tipo')
+            const tipoDireito: string = direita.hasOwnProperty('tipo')
                 ? direita.tipo
                 : inferirTipoVariavel(direita);
 
@@ -592,30 +591,28 @@ export class InterpretadorEguaClassico implements InterpretadorInterface {
     }
 
     async visitarExpressaoTente(declaracao: Tente): Promise<any> {
-        let valorRetorno: any;
         try {
             let sucesso = true;
             try {
-                valorRetorno = await this.executarBloco(declaracao.caminhoTente);
+                await this.executarBloco(declaracao.caminhoTente);
             } catch (erro: any) {
                 sucesso = false;
 
                 if (declaracao.caminhoPegue !== null) {
-                    valorRetorno = await this.executarBloco(declaracao.caminhoPegue as Declaracao[]);
+                    const chamadaPegue = new Chamada(declaracao.caminhoPegue.hashArquivo, declaracao.caminhoPegue, null, []);
+                    await chamadaPegue.aceitar(this);
                 } else {
                     this.erros.push(erro);
                 }
             }
 
             if (sucesso && declaracao.caminhoSenao !== null) {
-                valorRetorno = await this.executarBloco(declaracao.caminhoSenao);
+                await this.executarBloco(declaracao.caminhoSenao);
             }
         } finally {
             if (declaracao.caminhoFinalmente !== null)
-                valorRetorno = await this.executarBloco(declaracao.caminhoFinalmente);
+                await this.executarBloco(declaracao.caminhoFinalmente);
         }
-
-        return valorRetorno;
     }
 
     async visitarExpressaoEnquanto(declaracao: Enquanto) {
@@ -635,7 +632,7 @@ export class InterpretadorEguaClassico implements InterpretadorInterface {
         const caminhoTotal = caminho.join(this.diretorioBase, caminhoRelativo);
         // const nomeArquivo = caminho.basename(caminhoTotal);
 
-        let dados: any = carregarModuloPorNome(caminhoRelativo);
+        let dados: any = carregarModulo(caminhoRelativo);
         if (dados) return dados;
 
         try {
@@ -687,12 +684,7 @@ export class InterpretadorEguaClassico implements InterpretadorInterface {
             console.log(this.paraTexto(valor));
             return null;
         } catch (erro: any) {
-            this.erros.push({ 
-                erroInterno: erro, 
-                linha: declaracao.linha, 
-                hashArquivo: 
-                declaracao.hashArquivo 
-            });
+            this.erros.push(erro);
         }
     }
 
@@ -737,7 +729,7 @@ export class InterpretadorEguaClassico implements InterpretadorInterface {
 
         this.pilhaEscoposExecucao.definirVariavel(
             declaracao.simbolo.lexema,
-            valorOuOutraVariavel && valorOuOutraVariavel.hasOwnProperty('valor')
+            valorOuOutraVariavel.hasOwnProperty('valor')
                 ? valorOuOutraVariavel.valor
                 : valorOuOutraVariavel
         );
@@ -1088,7 +1080,7 @@ export class InterpretadorEguaClassico implements InterpretadorInterface {
 
             return retornoExecucao;
         } catch (erro: any) {
-            return Promise.reject(erro);
+            return erro;
         } finally {
             this.pilhaEscoposExecucao.removerUltimo();
         }
diff --git a/fontes/interpretador/erro-interpretador.ts b/fontes/interpretador/erro-interpretador.ts
index 3dd134e9..db837bbc 100644
--- a/fontes/interpretador/erro-interpretador.ts
+++ b/fontes/interpretador/erro-interpretador.ts
@@ -2,8 +2,5 @@ import { SimboloInterface } from '../interfaces';
 
 export interface ErroInterpretador {
     simbolo?: SimboloInterface;
-    mensagem?: string;
-    erroInterno?: any;
-    linha?: number;
-    hashArquivo?: number;
+    mensagem: string;
 }
diff --git a/fontes/interpretador/interpretador-com-depuracao.ts b/fontes/interpretador/interpretador-com-depuracao.ts
index 6c4482eb..c21ed1e5 100644
--- a/fontes/interpretador/interpretador-com-depuracao.ts
+++ b/fontes/interpretador/interpretador-com-depuracao.ts
@@ -253,54 +253,43 @@ export class InterpretadorComDepuracao
         }
     }
 
-    private descartarEscoposFinalizados(numeroEscopo: number, escopoVisitado: EscopoExecucao) {
-        // Se última instrução do escopo atual foi executada, e
-        // escopos adicionais não foram criados com a última execução,
-        // descartar este e todos os escopos abaixo deste que também estejam na última instrução.
-        if (
-            escopoVisitado.declaracoes.length ==
-            escopoVisitado.declaracaoAtual &&
-            numeroEscopo == this.pilhaEscoposExecucao.pilha.length - 1
-        ) {
-            let numeroEscopoAtual = numeroEscopo;
-            while (numeroEscopoAtual > 0) {
-                const escopo = this.pilhaEscoposExecucao.pilha[numeroEscopoAtual];
-                if (escopo.declaracoes.length == escopo.declaracaoAtual) {
-                    this.pilhaEscoposExecucao.removerUltimo();
-                    this.escopoAtual--;
-                }
-                numeroEscopoAtual--;
-            }
-        }
-    }
-
     /**
      * Interpreta apenas uma instrução a partir do ponto de parada ativo, conforme comando do depurador.
      * Esse método cria uma nova pilha de execução do lado do JS, começando do último elemento executado do
      * primeiro escopo, subindo até o último elemento executado do último escopo.
      * @param escopo Indica o escopo a ser visitado. Usado para construir uma pilha de chamadas do lado JS.
      */
-    async interpretarApenasUmaInstrucao(escopo = 1) {
+    async interpretacaoApenasUmaInstrucao(escopo = 1) {
         const escopoVisitado = this.pilhaEscoposExecucao.naPosicao(escopo);
 
         if (escopo < this.escopoAtual) {
-            this.interpretarApenasUmaInstrucao(escopo + 1);
+            this.interpretacaoApenasUmaInstrucao(escopo + 1);
         } else {
             const declaracaoAtual =
                 escopoVisitado.declaracoes[escopoVisitado.declaracaoAtual];
             await this.executar(declaracaoAtual);
+            // Blocos de escopo que não sejam de funções adentram
+            // o escopo ativo por padrão, por isso o teste abaixo.
+            // this.adentrarEscopoAtivo = Object.getPrototypeOf(declaracaoAtual).constructor.name !== 'Funcao';
+        }
 
-            if (this.comandoAdentrarEscopo) {
-                // Depurador comandou instrução 'adentrar-escopo', ou bloco de escopo
-                // não é de uma função.
-                // Instrução só foi realmente executada se não abriu novo bloco de escopo.
-                // Por isso, `declaracaoAtual` não deve ser incrementada aqui.
-                this.comandoAdentrarEscopo = false;
-            } else {
-                escopoVisitado.declaracaoAtual++;
-            }
+        if (this.comandoAdentrarEscopo) {
+            // Depurador comandou instrução 'adentrar-escopo', ou bloco de escopo
+            // não é de uma função.
+            // Instrução só foi realmente executada se não abriu novo bloco de escopo.
+            // Por isso, `declaracaoAtual` não deve ser incrementada aqui.
+            this.comandoAdentrarEscopo = false;
+        } else {
+            escopoVisitado.declaracaoAtual++;
+        }
 
-            this.descartarEscoposFinalizados(escopo, escopoVisitado);
+        // Se última instrução do escopo atual foi executada, descartar escopo.
+        if (
+            escopoVisitado.declaracoes.length - 1 <=
+            escopoVisitado.declaracaoAtual
+        ) {
+            this.pilhaEscoposExecucao.removerUltimo();
+            this.escopoAtual--;
         }
 
         if (this.pilhaEscoposExecucao.elementos() === 1) {
diff --git a/fontes/interpretador/interpretador.ts b/fontes/interpretador/interpretador.ts
index aabb4707..91cefd18 100644
--- a/fontes/interpretador/interpretador.ts
+++ b/fontes/interpretador/interpretador.ts
@@ -3,7 +3,7 @@ import * as readline from 'readline';
 import hrtime from 'browser-process-hrtime';
 
 import { EspacoVariaveis } from '../espaco-variaveis';
-import carregarBibliotecasGlobais from '../bibliotecas/biblioteca-global';
+import carregarBibliotecaGlobal from '../bibliotecas/biblioteca-global';
 import carregarBibliotecaNode from '../bibliotecas/importar-biblioteca';
 
 import { ErroEmTempoDeExecucao } from '../excecoes';
@@ -112,7 +112,7 @@ export class Interpretador implements InterpretadorInterface {
         };
         this.pilhaEscoposExecucao.empilhar(escopoExecucao);
 
-        carregarBibliotecasGlobais(this, this.pilhaEscoposExecucao);
+        carregarBibliotecaGlobal(this, this.pilhaEscoposExecucao);
     }
 
     /**
@@ -767,34 +767,23 @@ export class Interpretador implements InterpretadorInterface {
      * @param declaracao O objeto da declaração.
      */
     async visitarExpressaoTente(declaracao: Tente): Promise<any> {
-        let valorRetorno: any;
         try {
             let sucesso = true;
             try {
-                valorRetorno = await this.executarBloco(declaracao.caminhoTente);
+                await this.executarBloco(declaracao.caminhoTente);
             } catch (erro: any) {
                 sucesso = false;
 
                 if (declaracao.caminhoPegue !== null) {
-                    // `caminhoPegue` aqui pode ser um construto de função (se `pegue` tem parâmetros)
-                    // ou um vetor de `Declaracao` (`pegue` sem parâmetros).
-                    // As execuções, portanto, são diferentes.
-                    if (Array.isArray(declaracao.caminhoPegue)) {
-                        valorRetorno = await this.executarBloco(declaracao.caminhoPegue);
-                    } else {
-                        const literalErro = new Literal(declaracao.hashArquivo, Number(declaracao.linha), erro.mensagem);
-                        const chamadaPegue = new Chamada(declaracao.caminhoPegue.hashArquivo, declaracao.caminhoPegue, null, [literalErro]);
-                        valorRetorno = await chamadaPegue.aceitar(this);
-                    }
-                    
+                    const literalErro = new Literal(declaracao.hashArquivo, Number(declaracao.linha), erro.mensagem);
+                    const chamadaPegue = new Chamada(declaracao.caminhoPegue.hashArquivo, declaracao.caminhoPegue, null, [literalErro]);
+                    await chamadaPegue.aceitar(this);
                 }
             }
         } finally {
             if (declaracao.caminhoFinalmente !== null)
-                valorRetorno = await this.executarBloco(declaracao.caminhoFinalmente);
+                await this.executarBloco(declaracao.caminhoFinalmente);
         }
-
-        return valorRetorno;
     }
 
     async visitarExpressaoEnquanto(declaracao: Enquanto): Promise<any> {
@@ -885,12 +874,7 @@ export class Interpretador implements InterpretadorInterface {
             process.stdout.write(formatoTexto);
             return null;
         } catch (erro: any) {
-            this.erros.push({ 
-                erroInterno: erro, 
-                linha: declaracao.linha, 
-                hashArquivo: 
-                declaracao.hashArquivo 
-            });
+            this.erros.push(erro);
         }
     }
 
diff --git a/fontes/interpretador/pilha-escopos-execucao.ts b/fontes/interpretador/pilha-escopos-execucao.ts
index 0884c489..05c07bb3 100644
--- a/fontes/interpretador/pilha-escopos-execucao.ts
+++ b/fontes/interpretador/pilha-escopos-execucao.ts
@@ -112,17 +112,17 @@ export class PilhaEscoposExecucao implements PilhaEscoposExecucaoInterface {
      */
     obterTodasVariaveis(
         todasVariaveis: VariavelInterface[] = []
-    ): any[] {
-        for (let i = 1; i <= this.pilha.length - 1; i++) {
-            const valoresAmbiente = this.pilha[this.pilha.length - i].ambiente.valores;
-
+    ): VariavelInterface[] {
+        for (let i = 1; i <= this.pilha.length; i++) {
+            const ambiente = this.pilha[this.pilha.length - i].ambiente;
+            // TODO: Testar se isso faz sentido.
             const vetorObjeto: VariavelInterface[] = Object.entries(
-                valoresAmbiente
+                ambiente
             ).map(
-                (chaveEValor, indice) =>
-                    ({ nome: chaveEValor[0], valor: chaveEValor[1].valor, tipo: chaveEValor[1].tipo })
+                (chave, valor) =>
+                    ({ valor: valor, tipo: 'texto' } as VariavelInterface)
             );
-            todasVariaveis = todasVariaveis.concat(vetorObjeto);
+            todasVariaveis.concat(vetorObjeto);
         }
 
         return todasVariaveis;
diff --git a/fontes/lexador/dialetos/lexador-birl.ts b/fontes/lexador/dialetos/lexador-birl.ts
index 64f5d24f..d3389bb1 100644
--- a/fontes/lexador/dialetos/lexador-birl.ts
+++ b/fontes/lexador/dialetos/lexador-birl.ts
@@ -1,9 +1,11 @@
 import { RetornoLexador } from '../../interfaces/retornos';
 import { ErroLexador } from '../erro-lexador';
-import tiposDeSimbolos from '../../tipos-de-simbolos/birl';
 import { LexadorBaseLinhaUnica } from '../lexador-base-linha-unica';
 import { Simbolo } from '../simbolo';
 
+import palavrasReservadas from './palavras-reservadas/birl';
+import tiposDeSimbolos from '../../tipos-de-simbolos/birl';
+
 export class LexadorBirl extends LexadorBaseLinhaUnica {
     adicionarSimbolo(tipo: string, lexema: string = '', literal: any = null): void {
         this.simbolos.push(new Simbolo(tipo, lexema, literal, this.linha, -1));
@@ -56,14 +58,29 @@ export class LexadorBirl extends LexadorBaseLinhaUnica {
     }
 
     identificarPalavraChave(): void {
-        while (this.simboloAtual() !== '\n' && this.simboloAtual() !== '?') {
+        while (this.eAlfabetoOuDigito(this.simboloAtual())) {
             this.avancar();
         }
 
-        const proximo = this.simboloAtual();
+        const codigo: string = this.codigo[this.linha].substring(
+            this.inicioSimbolo,
+            this.atual
+        );
+
+        const tipo: string =
+            codigo in palavrasReservadas
+                ? palavrasReservadas[codigo]
+                : tiposDeSimbolos.IDENTIFICADOR;
+
+        this.adicionarSimbolo(tipo);
+        /* while (
+            this.simboloAtual() !== '\n' &&
+            this.simboloAtual() !== '?'
+        ) {
+            this.avancar();
+        }
 
-        const valor =
-            proximo !== '?'
+        const valor = this.simboloAtual() !== '?'
                 ? this.codigo.substring(this.inicioSimbolo, this.atual - 1).trim()
                 : this.codigo.substring(this.inicioSimbolo, this.atual + 1).trim();
 
@@ -96,10 +113,14 @@ export class LexadorBirl extends LexadorBaseLinhaUnica {
                 this.adicionarSimbolo(tiposDeSimbolos.NAO_VAI_DAR_NAO);
                 this.avancar();
                 break;
+            case 'MONSTRO?':
+                this.adicionarSimbolo(tiposDeSimbolos.MONSTRO);
+                this.avancar();
+                break;
             default:
                 this.avancar();
                 break;
-        }
+        } */
     }
 
     analisarToken(): void {
@@ -115,12 +136,17 @@ export class LexadorBirl extends LexadorBaseLinhaUnica {
                 this.avancar();
                 break;
             case '=':
-                const bool = this.proximoIgualA('=') ? true : false;
-                this.adicionarSimbolo(
-                    bool ? tiposDeSimbolos.IGUAL_IGUAL : tiposDeSimbolos.IGUAL,
-                    bool ? '==' : '=',
-                    null
-                );
+                this.avancar();
+                if (this.simboloAtual() === '=') {
+                    this.adicionarSimbolo(tiposDeSimbolos.IGUAL_IGUAL);
+                    this.avancar();
+                } else {
+                    this.adicionarSimbolo(tiposDeSimbolos.IGUAL);
+                }
+
+                break;
+            case '+':
+                this.adicionarSimbolo(tiposDeSimbolos.ADICAO);
                 this.avancar();
                 break;
             case "'":
@@ -137,13 +163,13 @@ export class LexadorBirl extends LexadorBaseLinhaUnica {
                 this.avancar();
                 break;
             case '\0':
-                this.adicionarSimbolo(tiposDeSimbolos.QUEBRA_LINHA, '\0', null);
+            case '\n':                
+                this.adicionarSimbolo(tiposDeSimbolos.QUEBRA_LINHA, null, null);
                 this.avancar();
                 break;
             case ' ':
             case '\r':
             case '\t':
-            case '\n':
             case '':
                 this.avancar();
                 break;
diff --git a/fontes/lexador/dialetos/lexador-visualg.ts b/fontes/lexador/dialetos/lexador-visualg.ts
index 586f725d..57500ea8 100644
--- a/fontes/lexador/dialetos/lexador-visualg.ts
+++ b/fontes/lexador/dialetos/lexador-visualg.ts
@@ -11,7 +11,7 @@ const dicionarioBibliotecaGlobal = {
 
 /**
  * O Lexador do VisuAlg é de linha única porque não possui comentários 
- * multilinha na especificação. 
+ * multilinha. 
  */
 export class LexadorVisuAlg extends LexadorBaseLinhaUnica {
     analisarNumero(): void {
@@ -216,7 +216,7 @@ export class LexadorVisuAlg extends LexadorBaseLinhaUnica {
         }
     }
 
-    mapear(codigo: string[], hashArquivo: number): RetornoLexador {
+    mapear(codigo: string[], hashArquivo = -1): RetornoLexador {
         this.erros = [];
         this.simbolos = [];
         this.inicioSimbolo = 0;
@@ -226,7 +226,6 @@ export class LexadorVisuAlg extends LexadorBaseLinhaUnica {
         // Em VisuAlg, quebras de linha são relevantes na avaliação sintática.
         // Portanto, o Lexador precisa trabalhar com uma linha só.
         this.codigo = codigo.join('\n') || '';
-        this.hashArquivo = hashArquivo;
 
         while (!this.eFinalDoCodigo()) {
             this.inicioSimbolo = this.atual;
diff --git a/fontes/lexador/dialetos/palavras-reservadas/birl.ts b/fontes/lexador/dialetos/palavras-reservadas/birl.ts
index 508878de..e8642f43 100644
--- a/fontes/lexador/dialetos/palavras-reservadas/birl.ts
+++ b/fontes/lexador/dialetos/palavras-reservadas/birl.ts
@@ -1,16 +1,54 @@
 import tiposDeSimbolos from '../../../tipos-de-simbolos/birl';
 
 export default {
-    HORA_DO_SHOW: tiposDeSimbolos.HORA_DO_SHOW,
-    BIRL: tiposDeSimbolos.BIRL,
-    QUE_QUE_CE_QUER_MONSTRAO: tiposDeSimbolos.QUE_QUE_CE_QUER_MONSTRAO,
-    ELE_QUE_A_GENTE_QUER: tiposDeSimbolos.ELE_QUE_A_GENTE_QUER,
-    NAO_VAI_DAR_NAO: tiposDeSimbolos.NAO_VAI_DAR_NAO,
-    QUE_NAO_VAI_DAR_O_QUE: tiposDeSimbolos.QUE_NAO_VAI_DAR_O_QUE,
-    NEGATIVA_BAMBAM: tiposDeSimbolos.NEGATIVA_BAMBAM,
-    MAIS_QUERO_MAIS: tiposDeSimbolos.MAIS_QUERO_MAIS,
-    VAMO_MONSTRO: tiposDeSimbolos.VAMO_MONSTRO,
-    SAI_FILHO_DA_PUTA: tiposDeSimbolos.SAI_FILHO_DA_PUTA,
-    OH_O_HOME_AI_PO: tiposDeSimbolos.OH_O_HOME_AI_PO,
-    AJUDA_O_MALUCO_TA_DOENTE: tiposDeSimbolos.AJUDA_O_MALUCO_TA_DOENTE,
+    // HORA_DO_SHOW: tiposDeSimbolos.HORA_DO_SHOW,
+    // BIRL: tiposDeSimbolos.BIRL,
+    // QUE_QUE_CE_QUER_MONSTRAO: tiposDeSimbolos.QUE_QUE_CE_QUER_MONSTRAO,
+    // ELE_QUE_A_GENTE_QUER: tiposDeSimbolos.ELE_QUE_A_GENTE_QUER,
+    // NAO_VAI_DAR_NAO: tiposDeSimbolos.NAO_VAI_DAR_NAO,
+    // QUE_NAO_VAI_DAR_O_QUE: tiposDeSimbolos.QUE_NAO_VAI_DAR_O_QUE,
+    // NEGATIVA_BAMBAM: tiposDeSimbolos.NEGATIVA_BAMBAM,
+    // MAIS_QUERO_MAIS: tiposDeSimbolos.MAIS_QUERO_MAIS,
+    // VAMO_MONSTRO: tiposDeSimbolos.VAMO_MONSTRO,
+    // SAI_FILHO_DA_PUTA: tiposDeSimbolos.SAI_FILHO_DA_PUTA,
+    // OH_O_HOME_AI_PO: tiposDeSimbolos.OH_O_HOME_AI_PO,
+    // AJUDA_O_MALUCO_TA_DOENTE: tiposDeSimbolos.AJUDA_O_MALUCO_TA_DOENTE,
+    a: tiposDeSimbolos.A,
+    ai: tiposDeSimbolos.AI,
+    ajuda: tiposDeSimbolos.AJUDA,
+    bambam: tiposDeSimbolos.BAMBAM,
+    birl: tiposDeSimbolos.BIRL,
+    bora: tiposDeSimbolos.BORA,
+    ce: tiposDeSimbolos.CE,
+    cumpade: tiposDeSimbolos.CUMPADE,
+    da: tiposDeSimbolos.DA,
+    dar: tiposDeSimbolos.DAR,
+    do: tiposDeSimbolos.DO,
+    doente: tiposDeSimbolos.DOENTE,
+    ele: tiposDeSimbolos.ELE,
+    essa: tiposDeSimbolos.ESSA,
+    filho: tiposDeSimbolos.FILHO,
+    gente: tiposDeSimbolos.GENTE,
+    home: tiposDeSimbolos.HOME,
+    hora: tiposDeSimbolos.HORA,
+    mais: tiposDeSimbolos.MAIS,
+    maluco: tiposDeSimbolos.MALUCO,
+    monstrao: tiposDeSimbolos.MONSTRAO,
+    monstro: tiposDeSimbolos.MONSTRO,
+    nao: tiposDeSimbolos.NAO,
+    negativa: tiposDeSimbolos.NEGATIVA,
+    o: tiposDeSimbolos.O,
+    oh: tiposDeSimbolos.OH,
+    po: tiposDeSimbolos.PO,
+    porra: tiposDeSimbolos.PORRA,
+    puta: tiposDeSimbolos.PUTA,
+    que: tiposDeSimbolos.QUE,
+    quer: tiposDeSimbolos.QUER,
+    quero: tiposDeSimbolos.QUERO,
+    sai: tiposDeSimbolos.SAI,
+    show: tiposDeSimbolos.SHOW,
+    ta: tiposDeSimbolos.TA,
+    vai: tiposDeSimbolos.VAI,
+    vamo: tiposDeSimbolos.VAMO,
+    ver: tiposDeSimbolos.VER
 };
diff --git a/fontes/lexador/lexador-base-linha-unica.ts b/fontes/lexador/lexador-base-linha-unica.ts
index 782fda5e..40310c29 100644
--- a/fontes/lexador/lexador-base-linha-unica.ts
+++ b/fontes/lexador/lexador-base-linha-unica.ts
@@ -10,7 +10,6 @@ export abstract class LexadorBaseLinhaUnica implements LexadorInterface {
     atual: number;
     linha: number;
     erros: ErroLexador[];
-    hashArquivo: number;
 
     constructor() {
         this.simbolos = [];
@@ -83,7 +82,7 @@ export abstract class LexadorBaseLinhaUnica implements LexadorInterface {
 
     adicionarSimbolo(tipo: any, literal?: any): void {
         const texto: string = this.codigo.substring(this.inicioSimbolo, this.atual);
-        this.simbolos.push(new Simbolo(tipo, literal || texto, literal, this.linha + 1, this.hashArquivo));
+        this.simbolos.push(new Simbolo(tipo, literal || texto, literal, this.linha + 1, -1));
     }
 
     simboloAtual(): string {
diff --git a/fontes/tipos-de-simbolos/birl.ts b/fontes/tipos-de-simbolos/birl.ts
index 98a880f5..813a83b5 100644
--- a/fontes/tipos-de-simbolos/birl.ts
+++ b/fontes/tipos-de-simbolos/birl.ts
@@ -1,28 +1,57 @@
 export default {
-    // Comandos da linguagem do bambam
-    HORA_DO_SHOW: 'HORA DO SHOW',
+    // Palavras reservadas
+    A: 'A',
+    AI: 'AI',
+    AJUDA: 'AJUDA',
+    BAMBAM: 'BAMBAM',
     BIRL: 'BIRL',
-    CE_QUER_VER_ESSA_PORRA: 'CE QUER VER ESSA PORRA?',
-    QUE_QUE_CE_QUER_MONSTRAO: 'QUE QUE CE QUER MONSTRAO?',
-    ELE_QUE_A_GENTE_QUER: 'ELE QUE A GENTE QUER?',
-    NAO_VAI_DAR_NAO: 'NAO VAI DAR NAO',
-    QUE_NAO_VAI_DAR_O_QUE: 'QUE NAO VAI DAR O QUE?',
-    NEGATIVA_BAMBAM: 'NEGATIVA BAMBAM',
-    MAIS_QUERO_MAIS: 'MAIS QUERO MAIS',
-    VAMO_MONSTRO: 'VAMO MONSTRO;',
-    SAI_FILHO_DA_PUTA: 'SAI FILHO DA PUTA;',
-    OH_O_HOME_AI_PO: 'OH O HOME AI PO',
-    AJUDA_O_MALUCO_TA_DOENTE: 'AJUDA O MALUCO TA DOENTE',
-    BORA_CUMPADE: 'BORA CUMPADE',
+    BORA: 'BORA',
+    CE: 'CE',
+    CUMPADE: 'CUMPADE',
+    DA: 'DA',
+    DAR: 'DAR',
+    DO: 'DO',
+    DOENTE: 'DOENTE',
+    ELE: 'ELE',
+    ESSA: 'ESSA',
+    FILHO: 'FILHO',
+    GENTE: 'GENTE',
+    HOME: 'HOME',
+    HORA: 'HORA',
+    MAIS: 'MAIS',
+    MALUCO: 'MALUCO',
+    MONSTRAO: 'MONSTRAO',
+    MONSTRO: 'MONSTRO',
+    NAO: 'NAO',
+    NEGATIVA: 'NEGATIVA',
+    O: 'O',
+    OH: 'OH',
+    PO: 'PO',
+    PORRA: 'PORRA',
+    PUTA: 'PUTA',
+    QUE: 'QUE',
+    QUER: 'QUER',
+    QUERO: 'QUERO',
+    SAI: 'SAI',
+    SHOW: 'SHOW',
+    TA: 'TA',
+    VAI: 'VAI',
+    VAMO: 'VAMO',
+    VER: 'VER',
 
-    // simbolos
+    // Símbolos de propósito geral
     PARENTESE_DIREITO: 'PARENTESE_DIREITO',
     PARENTESE_ESQUERDO: 'PARENTESE_ESQUERDO',
     IGUAL: 'IGUAL',
     IGUAL_IGUAL: 'IGUAL_IGUAL',
     PONTO_E_VIRGULA: 'PONTO_E_VIRGULA',
     QUEBRA_LINHA: 'QUEBRA_LINHA',
+    INTERROGACAO: 'INTERROGACAO',
+
+    // Operações matemáticas
+    ADICAO: 'ADICAO',
 
     TEXTO: 'TEXTO',
     NUMERO: 'NUMERO',
+    IDENTIFICADOR: 'IDENTIFICADOR',
 };
diff --git a/fontes/tradutores/tradutor-javascript.ts b/fontes/tradutores/tradutor-javascript.ts
index 432f8e76..57312380 100644
--- a/fontes/tradutores/tradutor-javascript.ts
+++ b/fontes/tradutores/tradutor-javascript.ts
@@ -39,7 +39,6 @@ import tiposDeSimbolos from '../tipos-de-simbolos/delegua';
  */
 export class TradutorJavaScript implements TradutorInterface {
     indentacao: number = 0;
-    declaracoesDeClasses: Classe[];
 
     traduzirSimboloOperador(operador: SimboloInterface): string {
         switch (operador.tipo) {
@@ -120,17 +119,7 @@ export class TradutorJavaScript implements TradutorInterface {
     traduzirConstrutoChamada(chamada: Chamada): string {
         let resultado = '';
 
-        const retorno = `${this.dicionarioConstrutos[chamada.entidadeChamada.constructor.name](chamada.entidadeChamada)}`;
-
-        const instanciaClasse = this.declaracoesDeClasses.some(declaracao => declaracao?.simbolo?.lexema === retorno);
-        if (instanciaClasse) {
-            const classe = this.declaracoesDeClasses.find(declaracao => declaracao?.simbolo?.lexema === retorno);
-            if (classe.simbolo.lexema === retorno)
-                resultado += `new ${retorno}`
-        } else {
-            resultado += retorno
-        }
-        resultado += '(';
+        resultado += `${this.dicionarioConstrutos[chamada.entidadeChamada.constructor.name](chamada.entidadeChamada)}(`;
         for (let parametro of chamada.argumentos) {
             resultado += this.dicionarioConstrutos[parametro.constructor.name](parametro) + ', ';
         }
@@ -319,7 +308,8 @@ export class TradutorJavaScript implements TradutorInterface {
     traduzirDeclaracaoPara(declaracaoPara: Para): string {
         let resultado = 'for (';
         resultado +=
-            this.dicionarioDeclaracoes[declaracaoPara.inicializador.constructor.name](declaracaoPara.inicializador) + ' ';
+            this.dicionarioDeclaracoes[declaracaoPara.inicializador.constructor.name](declaracaoPara.inicializador) +
+            '; ';
         resultado +=
             this.dicionarioConstrutos[declaracaoPara.condicao.constructor.name](declaracaoPara.condicao) + '; ';
         resultado +=
@@ -383,16 +373,9 @@ export class TradutorJavaScript implements TradutorInterface {
         if (declaracaoTente.caminhoPegue !== null) {
             resultado += '\ncatch {\n';
             resultado += ' '.repeat(this.indentacao);
-            if (Array.isArray(declaracaoTente.caminhoPegue)) {
-                for (let declaracao of declaracaoTente.caminhoPegue) {
-                    resultado += this.dicionarioDeclaracoes[declaracao.constructor.name](declaracao) + '\n';
-                }
-            } else {
-                for (let corpo of declaracaoTente.caminhoPegue.corpo) {
-                    resultado += this.dicionarioDeclaracoes[corpo.constructor.name](corpo) + '\n';
-                }
+            for (let corpo of declaracaoTente.caminhoPegue.corpo) {
+                resultado += this.dicionarioDeclaracoes[corpo.constructor.name](corpo) + '\n';
             }
-            
             resultado += ' '.repeat(this.indentacao);
             resultado += '}';
         }
@@ -410,16 +393,10 @@ export class TradutorJavaScript implements TradutorInterface {
 
     traduzirDeclaracaoVar(declaracaoVar: Var): string {
         let resultado = 'let ';
-        resultado += declaracaoVar.simbolo.lexema;
-        if(!declaracaoVar?.inicializador)
-            resultado += ';';
-        else {
-            resultado += ' = ';
-            resultado += this.dicionarioConstrutos[declaracaoVar.inicializador.constructor.name](
-                declaracaoVar.inicializador
-            );
-            resultado += ";"
-        }
+        resultado += declaracaoVar.simbolo.lexema + ' = ';
+        resultado += this.dicionarioConstrutos[declaracaoVar.inicializador.constructor.name](
+            declaracaoVar.inicializador
+        );
         return resultado;
     }
 
@@ -483,8 +460,6 @@ export class TradutorJavaScript implements TradutorInterface {
     traduzir(declaracoes: Declaracao[]): string {
         let resultado = '';
 
-        this.declaracoesDeClasses = declaracoes.filter(declaracao => declaracao instanceof Classe) as Classe[];
-
         for (const declaracao of declaracoes) {
             resultado += `${this.dicionarioDeclaracoes[declaracao.constructor.name](declaracao)} \n`;
         }
diff --git a/index.ts b/index.ts
index 5a3e5d8d..da4278de 100644
--- a/index.ts
+++ b/index.ts
@@ -1,7 +1,6 @@
 export * from './fontes/delegua';
-
+export * from './fontes/lexador';
 export * from './fontes/avaliador-sintatico';
-export * from './fontes/formatadores';
 export * from './fontes/importador';
 export * from './fontes/interpretador';
-export * from './fontes/lexador';
+
diff --git a/package.json b/package.json
index 43bd001c..2837fc00 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
     "name": "@designliquido/delegua",
-    "version": "0.11.11",
+    "version": "0.11.7",
     "description": "Linguagem de programação simples e moderna usando português estruturado, com suporte a múltiplos dialetos",
     "main": "index.js",
     "scripts": {
@@ -9,13 +9,13 @@
         "lair": "ts-node execucao.ts",
         "publicar-docs": "yarn gerar-documentacao-tecnica && copyfiles -V ./recursos/**/* ./docs && gh-pages -d docs",
         "publicar-npm": "npm publish ./dist --access public",
-        "testes:egua": "./bin/delegua-ts exemplos/dialetos/egua-classico/testes.egua",
-        "testes:delegua:bhaskara": "./bin/delegua-ts exemplos/dialetos/egua-classico/bhaskara.egua",
-        "testes:delegua:fibonacci": "./bin/delegua-ts exemplos/dialetos/egua-classico/fibonacci.egua",
-        "testes:egua-classico": "./bin/delegua-ts --dialeto egua exemplos/dialetos/egua-classico/testes.egua",
+        "testes:egua": "./bin/delegua-ts testes/exemplos/testes.egua",
+        "testes:delegua:bhaskara": "./bin/delegua-ts testes/exemplos/dialetos/egua-classico/bhaskara.egua",
+        "testes:delegua:fibonacci": "./bin/delegua-ts testes/exemplos/dialetos/egua-classico/fibonacci.egua",
+        "testes:egua-classico": "./bin/delegua-ts --dialeto egua testes/exemplos/dialetos/egua-classico/testes.egua",
         "testes:servidor-depuracao": "ts-node ./fontes/depuracao/servidor-depuracao.ts",
         "testes-unitarios": "jest --coverage",
-        "testes-unitarios:insignias": "jest-coverage-badges --output './recursos/imagens'",
+        "testes-unitarios:insignias": "yarn jest-coverage-badges --output './recursos/imagens'",
         "observar-testes-unitarios": "jest --watchAll",
         "observar-testes-unitarios-com-coverage": "jest --coverage --watchAll",
         "lint": "eslint . --ext .ts",
@@ -43,7 +43,7 @@
         },
         {
             "name": "Samuel Renan Gonçalves Vaz",
-            "url": "https://www.linkedin.com/in/samuel-renan-goncalves-vaz"
+            "url": "https://www.linkedin.com/in/samuel-renan-gon%C3%A7alves-vaz-b6b83a103/"
         },
         {
             "name": "Alessandro Fuhr de Mello",
diff --git a/recursos/imagens/badge-branches.svg b/recursos/imagens/badge-branches.svg
index 78bb3145..501c2321 100644
--- a/recursos/imagens/badge-branches.svg
+++ b/recursos/imagens/badge-branches.svg
@@ -1,1 +1,1 @@
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="170" height="20" role="img" aria-label="Coverage:branches: 58.39%"><title>Coverage:branches: 58.39%</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="170" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="117" height="20" fill="#555"/><rect x="117" width="53" height="20" fill="#e05d44"/><rect width="170" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text aria-hidden="true" x="595" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="1070">Coverage:branches</text><text x="595" y="140" transform="scale(.1)" fill="#fff" textLength="1070">Coverage:branches</text><text aria-hidden="true" x="1425" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="430">58.39%</text><text x="1425" y="140" transform="scale(.1)" fill="#fff" textLength="430">58.39%</text></g></svg>
\ No newline at end of file
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="170" height="20" role="img" aria-label="Coverage:branches: 56.94%"><title>Coverage:branches: 56.94%</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="170" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="117" height="20" fill="#555"/><rect x="117" width="53" height="20" fill="#e05d44"/><rect width="170" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text aria-hidden="true" x="595" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="1070">Coverage:branches</text><text x="595" y="140" transform="scale(.1)" fill="#fff" textLength="1070">Coverage:branches</text><text aria-hidden="true" x="1425" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="430">56.94%</text><text x="1425" y="140" transform="scale(.1)" fill="#fff" textLength="430">56.94%</text></g></svg>
\ No newline at end of file
diff --git a/recursos/imagens/badge-functions.svg b/recursos/imagens/badge-functions.svg
index 6b5def09..bada9bbb 100644
--- a/recursos/imagens/badge-functions.svg
+++ b/recursos/imagens/badge-functions.svg
@@ -1,1 +1,1 @@
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="170" height="20" role="img" aria-label="Coverage:functions: 70.71%"><title>Coverage:functions: 70.71%</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="170" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="117" height="20" fill="#555"/><rect x="117" width="53" height="20" fill="#e05d44"/><rect width="170" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text aria-hidden="true" x="595" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="1070">Coverage:functions</text><text x="595" y="140" transform="scale(.1)" fill="#fff" textLength="1070">Coverage:functions</text><text aria-hidden="true" x="1425" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="430">70.71%</text><text x="1425" y="140" transform="scale(.1)" fill="#fff" textLength="430">70.71%</text></g></svg>
\ No newline at end of file
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="170" height="20" role="img" aria-label="Coverage:functions: 66.71%"><title>Coverage:functions: 66.71%</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="170" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="117" height="20" fill="#555"/><rect x="117" width="53" height="20" fill="#e05d44"/><rect width="170" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text aria-hidden="true" x="595" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="1070">Coverage:functions</text><text x="595" y="140" transform="scale(.1)" fill="#fff" textLength="1070">Coverage:functions</text><text aria-hidden="true" x="1425" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="430">66.71%</text><text x="1425" y="140" transform="scale(.1)" fill="#fff" textLength="430">66.71%</text></g></svg>
\ No newline at end of file
diff --git a/recursos/imagens/badge-lines.svg b/recursos/imagens/badge-lines.svg
index 4f8185a8..0f846a51 100644
--- a/recursos/imagens/badge-lines.svg
+++ b/recursos/imagens/badge-lines.svg
@@ -1,1 +1,1 @@
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="146" height="20" role="img" aria-label="Coverage:lines: 70.63%"><title>Coverage:lines: 70.63%</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="146" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="93" height="20" fill="#555"/><rect x="93" width="53" height="20" fill="#e05d44"/><rect width="146" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text aria-hidden="true" x="475" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="830">Coverage:lines</text><text x="475" y="140" transform="scale(.1)" fill="#fff" textLength="830">Coverage:lines</text><text aria-hidden="true" x="1185" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="430">70.63%</text><text x="1185" y="140" transform="scale(.1)" fill="#fff" textLength="430">70.63%</text></g></svg>
\ No newline at end of file
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="146" height="20" role="img" aria-label="Coverage:lines: 68.61%"><title>Coverage:lines: 68.61%</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="146" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="93" height="20" fill="#555"/><rect x="93" width="53" height="20" fill="#e05d44"/><rect width="146" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text aria-hidden="true" x="475" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="830">Coverage:lines</text><text x="475" y="140" transform="scale(.1)" fill="#fff" textLength="830">Coverage:lines</text><text aria-hidden="true" x="1185" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="430">68.61%</text><text x="1185" y="140" transform="scale(.1)" fill="#fff" textLength="430">68.61%</text></g></svg>
\ No newline at end of file
diff --git a/recursos/imagens/badge-statements.svg b/recursos/imagens/badge-statements.svg
index fdcbe815..4c3e289f 100644
--- a/recursos/imagens/badge-statements.svg
+++ b/recursos/imagens/badge-statements.svg
@@ -1,1 +1,1 @@
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="182" height="20" role="img" aria-label="Coverage:statements: 70.42%"><title>Coverage:statements: 70.42%</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="182" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="129" height="20" fill="#555"/><rect x="129" width="53" height="20" fill="#e05d44"/><rect width="182" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text aria-hidden="true" x="655" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="1190">Coverage:statements</text><text x="655" y="140" transform="scale(.1)" fill="#fff" textLength="1190">Coverage:statements</text><text aria-hidden="true" x="1545" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="430">70.42%</text><text x="1545" y="140" transform="scale(.1)" fill="#fff" textLength="430">70.42%</text></g></svg>
\ No newline at end of file
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="182" height="20" role="img" aria-label="Coverage:statements: 68.37%"><title>Coverage:statements: 68.37%</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="182" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="129" height="20" fill="#555"/><rect x="129" width="53" height="20" fill="#e05d44"/><rect width="182" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text aria-hidden="true" x="655" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="1190">Coverage:statements</text><text x="655" y="140" transform="scale(.1)" fill="#fff" textLength="1190">Coverage:statements</text><text aria-hidden="true" x="1545" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="430">68.37%</text><text x="1545" y="140" transform="scale(.1)" fill="#fff" textLength="430">68.37%</text></g></svg>
\ No newline at end of file
diff --git a/exemplos/importacao/importacao-2.delegua b/testes/exemplos/importacao/importacao-2.delegua
similarity index 59%
rename from exemplos/importacao/importacao-2.delegua
rename to testes/exemplos/importacao/importacao-2.delegua
index bd9290fe..39e1e71d 100644
--- a/exemplos/importacao/importacao-2.delegua
+++ b/testes/exemplos/importacao/importacao-2.delegua
@@ -1,4 +1,4 @@
-var segundaImportacao = importar("./exemplos/importacao/importacao-3.egua")
+var segundaImportacao = importar("./testes/exemplos/importacao/importacao-3.egua")
 
 funcao escreverAlgumaCoisa() {
     escreva("Importação funcionou.")


Test patch:
diff --git a/exemplos/testes.egua b/exemplos/testes.egua
deleted file mode 100644
index ee8c61ea..00000000
--- a/exemplos/testes.egua
+++ /dev/null
@@ -1,1028 +0,0 @@
-escreva("--------------------------------");
-escreva("Testes Internos - Linguagem Egua");
-escreva("--------------------------------");
-escreva("|");
-
-var erros = 0;
-
-função startTest(){
-  escreva(tSesenão());
-  escreva("|");
-  escreva(tEnquanto());
-  escreva("|");
-  escreva(tPara());
-  escreva("|");
-  escreva(tFacaEnquanto());
-  escreva("|");
-  escreva(tCasoEscolha());
-  escreva("|");
-  escreva(tTentePegue());
-  escreva("|");
-  escreva(tClasse());
-}
-
-função tSesenão(){
-  escreva("----------------------------");
-  escreva("Iniciando Teste: Se - Se Não");
-  escreva("----------------------------");
-  var a = 1;
-  var b = 1;
-  se (a == b)
-    retorna("Se - Se não: OK!");
-  senão {
-    erros = erros + 1;
-    retorna("Se - Se não: ERRO!");
-  }
-}
-
-função tEnquanto(){
-  escreva("------------------------");
-  escreva("Iniciando Teste: Enquanto");
-  escreva("------------------------");
-  var a = 0;
-  enquanto(a<5){
-    a = a + 1;
-  }
-  se (a == 5)
-    retorna("Enquanto: OK!");
-  senão {
-    erros = erros + 1;
-    retorna("Enquanto: ERRO!");
-  }
-  escreva(a);
-}
-
-função tPara(){
-  escreva("--------------------");
-  escreva("Iniciando Teste: Para");
-  escreva("--------------------");
-  var a = 0;
-  para (var i = 0; i < 5; i = i + 1) {
-  a = a + 1;
-  }
-  se (a == 5)
-    retorna("Para: OK!");
-  senão {
-    erros = erros + 1;
-    retorna("Para: ERRO!");
-  }
-}
-
-função tFacaEnquanto(){
-  escreva("-----------------------------");
-  escreva("Iniciando Teste: Faça - Enquanto");
-  escreva("-----------------------------");
-  var a = 0;
-  fazer {
-    a = a + 1;
-  } enquanto(a<5){
-  }
-  se (a == 5)
-    retorna("Faça - Enquanto: OK!");
-  senão {
-    erros = erros + 1;
-    retorna("Faça - Enquanto: ERRO!");
-  }
-}
-
-função tCasoEscolha(){
-  escreva("--------------------");
-  escreva("Iniciando Teste: Caso - Escolha");
-  escreva("--------------------");
-  escolha(1){
-    caso 1: 
-    retorna("Caso - Escolha: OK!");  
-    caso 2:
-    retorna("Caso - Escolha: ERRO!");
-  }
-}
-
-função tTentePegue(){
-  escreva("--------------------");
-  escreva("Iniciando Teste: Tente - Pegue");
-  escreva("--------------------");
-  tente {
-  1 > "1";
-  escreva("Tente - Pegue: ERRO!");
-  } pegue {
-  escreva("Tente - Pegue: OK!");
-  } finalmente {
-  retorna(" ");  
-  }
-}
-
-função tClasse(){
-  escreva("--------------------");
-  escreva("Iniciando Teste: Classe");
-  escreva("--------------------");
-  tente{
-  classe Animal {
-    correr() {
-      escreva("Correndo Loucamente");
-    }
-  }
-  classe Cachorro herda Animal {
-    latir() {
-      escreva("Au Au Au Au");
-    }
-  }
-  var nomeDoCachorro = Cachorro();
-  nomeDoCachorro.correr();
-  nomeDoCachorro.latir();
-  escreva("Classe: OK!");
-  } pegue {
-  escreva("Classe: ERRO!");  
-  } finalmente {
-  retorna(" ");
-  }
-}
-
-startTest();
-escreva("----------------------------");
-escreva("Teste terminado com " + texto(erros) + " erro(s)!");
-escreva("----------------------------");
-
-
-escreva("--------------------------------");
-escreva("Testes Internos - Biblioteca Matemática");
-escreva("--------------------------------");
-escreva("|");
-
-var errosM = 0;
-
-
-var m = importar("matematica");
-var nula = nulo;
-
-var o = [1,1,2,3,15];
-var p = [2,6,7,10,20];
-
-
-função teste_gerarPontosAbscissa() {
-  var gerarPontosAbscissa = m.gerarPontosAbscissa(2,3);
-
-  se (gerarPontosAbscissa != nula)
-    escreva (gerarPontosAbscissa);
-  senão {
-    errosM = errosM+1;
-    escreva(errosM);
-  }
-}
-
-função tfun1R(){
-  var fun1R = m.fun1R(2,3);
-  
-  se (fun1R != nula)
-        escreva (fun1R);
-      senão {
-        errosM = errosM+1;
-        escreva(errosM);
-      }
-}
-
-função tfun2R(){
-  var fun2R = m.fun2R(2,-4,3);
-  
-  se (fun2R != nula)
-    escreva (fun2R);
-  senão {
-    errosM = errosM+1;
-    escreva(errosM);
-  }
-}
-
-função taprox(){
-  var aprox = m.aprox(1,10);
-  
-  se (aprox != nula)
-        escreva (aprox);
-  senão {
-        errosM = errosM+1;
-        escreva(errosM);
-
-    }
-}
-
-
-função tsen(){
-  var sen = m.sen(60);
-  
-  se (sen != nula)
-        escreva (sen);
-      senão {
-        errosM = errosM+1;
-        escreva(errosM);
-      }
-}
-
-função tcos(){
-  var cos = m.cos(60);
-  
-  se (cos != nula)
-        escreva (cos);
-      senão {
-        errosM = errosM+1;
-        escreva(errosM);
-      }
-}
-
-função ttan(){
-  var tan = m.tan(60);
-
-  se (tan != nula)
-    escreva (tan);
-  senão {
-    errosM = errosM+1;
-    escreva(errosM);
-  }
-}
-
-função tarsen(){
-  var arsen = m.arsen(60);
-
-  se (arsen != nula)
-    escreva (arsen);
-  senão {
-    errosM = errosM+1;
-    escreva(errosM);
-  }
-}
-
-função tarcos(){
-  var arcos = m.arcos(60);
-
-  se (arcos != nula)
-    escreva (arcos);
-  senão {
-    errosM = errosM+1;
-    escreva(errosM);
-  }
-}
-
-função tartan(){
-  var artan = m.artan(60);
-
-  se (artan != nula)
-    escreva (artan);
-  senão {
-    errosM = errosM+1;
-    escreva(errosM);
-  }
-}
-
-função texp(){
-  var exp = m.exp(10);
-
-  se (exp != nula)
-    escreva (exp);
-  senão {
-    errosM = errosM+1;
-    escreva(errosM);
-  }
-}
-
-função tlog(){
-  var log = m.log(10);
-  
-  se (log != nula)
-    escreva(log);
-  senão {
-    errosM = errosM+1;
-    escreva(errosM);
-  }
-}
-
-função tpotencia(){
-  var pot = m.potencia(2,3);
-  
-  se (pot != nula)
-    escreva(pot);
-  senão {
-    errosM = errosM+1;
-    escreva(errosM);
-  }
-}
-
-função traizq(){
-  var raizq = m.raizq(49);
-
-  se (raizq != nula)
-    escreva(raizq);
-  senão {
-    errosM = errosM+1;
-    escreva(errosM);
-  }
-}
-
-função tvmed(){
-  var vmed = m.velocidadeMedia(30,10);
-
-  se (vmed != nula)
-    escreva(vmed);
-  senão {
-    errosM = errosM+1;
-    escreva(errosM);
-  }
-}
-
-função tdeltas(){
-  var deltas = m.deltaS(10,30);
-
-  se (deltas != nula)
-    escreva(deltas);
-  senão {
-    errosM = errosM+1;
-    escreva(errosM);
-  }
-}
-
-função tdeltat(){
-  var deltat = m.deltaT(10,30);
-
-  se (deltat != nula)
-    escreva(deltat);
-  senão {
-    errosM = errosM+1;
-    escreva(errosM);
-  }
-}
-
-função tacel(){
-  var acel= m.aceleracao(30,0,60,0);
-  
-  se (acel != nula)
-    escreva(acel);
-  senão {
-    errosM = errosM+1;
-    escreva(errosM);
-  }
-}
-
-função tmrufh(){
-  var mrufh = m.mrufh(0,30,15);
-
-  se (mrufh != nula)
-    escreva(mrufh);
-  senão {
-    errosM = errosM+1;
-    escreva(errosM);
-  }
-}
-
-função tmruvvel(){
-  var mruvvel = m.mruv(0,30,15,2);
-
-  se (mruvvel != nula)
-    escreva(mruvvel);
-  senão {
-    errosM = errosM+1;
-    escreva(errosM);
-  }
-}
-
-função tmoda(){
-  var i = [1,2,2,3,4];
-  var modaUm = m.moda(i);
-  var j = [1,2,2,3,3];
-  var modaDois = m.moda(j);
-  var k = [1,2,3,4,5];
-  var modaTres = m.moda(k);
-  
-  se (modaUm[0] == 2)
-    escreva(modaUm);
-  senão {
-    errosM = errosM+1;
-    escreva(errosM);
-  }
-  se (modaDois[0] == 2 e modaDois[1] == 3)
-    escreva(modaDois);
-  senão {
-    errosM = errosM+1;
-    escreva(errosM);
-  }
-
-  se (modaTres)
-    escreva(modaTres);
-  senão {
-    errosM = errosM+1;
-    escreva(errosM);
-  }
-}
-
-escreva("--------------------------------");
-escreva("Função gerarPontosAbscissa:");
-teste_gerarPontosAbscissa();
-escreva("|");
-escreva("--------------------------------");
-escreva("Função fun1R:");
-tfun1R();
-escreva("|");
-escreva("--------------------------------");
-escreva("Função fun2R:");
-tfun2R();
-escreva("|");
-escreva("--------------------------------");
-escreva("Função aprox:");
-taprox();
-
-escreva("|");
-escreva("--------------------------------");
-escreva("Função numeroOcorrencias():");
-escreva(m.numeroOcorrencias([1, 2, 3, 4, 5], 3));
-
-escreva("|");
-escreva("--------------------------------");
-escreva("Função max():");
-escreva(m.max([1, 2, 3, 4, 5]));
-
-escreva("|");
-escreva("--------------------------------");
-escreva("Função min():");
-escreva(m.min([1, 2, 3, 4, 5]));
-
-escreva("|");
-escreva("--------------------------------");
-escreva("Função sen:");
-tsen();
-escreva("|");
-escreva("--------------------------------");
-escreva("Função cos:");
-tcos();
-escreva("|");
-escreva("--------------------------------");
-escreva("Função tan:");
-ttan();
-escreva("|");
-escreva("--------------------------------");
-escreva("Função arsen:");
-tarsen();
-escreva("|");
-escreva("--------------------------------");
-escreva("Função arcos:");
-tarcos();
-escreva("|");
-escreva("--------------------------------");
-escreva("Função artan:");
-tartan();
-escreva("|");
-escreva("--------------------------------");
-escreva("Função exp:");
-texp();
-escreva("|");
-escreva("--------------------------------");
-escreva("Função log:");
-tlog();
-escreva("|");
-escreva("--------------------------------");
-escreva("Função potencia:");
-tpotencia();
-escreva("|");
-escreva("--------------------------------");
-escreva("Função raizq:");
-traizq();
-escreva("|");
-escreva("--------------------------------");
-escreva("Função vmed:");
-tvmed();
-escreva("|");
-escreva("--------------------------------");
-escreva("Função deltas:");
-tdeltas();
-escreva("|");
-escreva("--------------------------------");
-escreva("Função deltat:");
-tdeltat();
-escreva("|");
-escreva("--------------------------------");
-escreva("Função acel:");
-tacel();
-escreva("|");
-escreva("--------------------------------");
-escreva("Função mruhfh:");
-tmrufh();
-escreva("|");
-escreva("--------------------------------");
-escreva("Função mruvvel:");
-tmruvvel();
-escreva("--------------------------------");
-escreva("Função moda:");
-tmoda();
-escreva("|");
-
-escreva("--------------------------------");
-escreva("Testes Funções Internas - Linguagem Egua");
-escreva("--------------------------------");
-escreva("|");
-
-função ttamanho(){
-  var array = [1,2,3];
-  var tam = tamanho(array);
-
-  se (tam != nula)
-    escreva(tam);
-  senão {
-    errosM = errosM+1;
-    escreva(errosM);
-  }
-}
-
-função ttexto(){
-  var t = 123;
-  var text = texto(t);
-
-  se (text != nula)
-    escreva(text);
-  senão {
-    errosM = errosM+1;
-    escreva(errosM);
-  }
-}
-
-função treal(){
-  var n = '123.05';
-  var rel = real(n);
-
-  se (rel != nula)
-    escreva(rel);
-  senão {
-    errosM = errosM+1;
-    escreva(errosM);
-  }
-}
-
-função tinteiro(){
-  var i = '50.56';
-  var int = inteiro(i);
-
-  se (int != nula)
-    escreva(int);
-  senão {
-    errosM = errosM+1;
-    escreva(errosM);
-  }
-}
-
-função tordenar(){
-  var i = [4,2,1,5,3];
-  var ord = ordenar(i);
-
-  se (ord != nula)
-    escreva(ord);
-  senão {
-    errosM = errosM+1;
-    escreva(errosM);
-  }
-}
-
-função taleatorio(){
-  var ran = aleatorio();
-  se (ran != nula)
-    escreva(ran);
-  senão {
-    errosM = errosM+1;
-    escreva(errosM);
-  }
-}
-
-função taleatorioEntre(){
-  var ran = aleatorioEntre(3);
-
-  se (ran < 3) {
-    escreva(ran);
-  } senão {
-    errosM = errosM+1;
-    escreva(errosM);
-  }
-
-  var ran2 = aleatorioEntre(1,3);
-
-  se (ran2 >= 1) {
-    se (ran2 < 3) {
-      escreva(ran2);
-    } senão {
-      errosM = errosM+1;
-      escreva(errosM);
-    }
-  } senão {
-    errosM = errosM+1;
-    escreva(errosM);
-  }
-}
-
-escreva("--------------------------------");
-escreva("Função interna: Tamanho");
-ttamanho();
-escreva("|");
-escreva("--------------------------------");
-escreva("Função interna: Texto");
-ttexto();
-escreva("|");
-escreva("--------------------------------");
-escreva("Função interna: Real");
-treal();
-escreva("|");
-escreva("--------------------------------");
-escreva("Função interna: Inteiro");
-tinteiro();
-escreva("|");
-escreva("--------------------------------");
-escreva("Função interna: Ordenar");
-tordenar();
-escreva("|");
-escreva("--------------------------------");
-escreva("Função interna: Aleatório");
-taleatorio();
-escreva("|");
-escreva("--------------------------------");
-escreva("Função interna: Aleatório Entre");
-taleatorioEntre();
-escreva("|");
-escreva("--------------------------------");
-escreva("Teste terminado com " + texto(errosM) + " erro(s)!");
-escreva("----------------------------");
-
-escreva("Testando estado de função e classe");
-função a(){
-    retorna 1;
-}
-
-escreva(a);
-
-classe Animal {
-  correr() {
-      escreva("Correndo Loucamente");
-  }
-} 
-
-escreva(Animal);
-escreva("----------------------------");
-
-escreva("Testando paraCada");
-var array = [1, 2, 3];
-
-var fn = função(valor){
-  escreva(valor);
-};
-
-paraCada(array, fn);
-
-escreva("Testando mapear");
-var array = [1, 2, 3];
-
-var fn = função(valor){
-  retorna valor * 2;
-};
-
-escreva(mapear(array, fn));
-
-escreva("Testando filtrar");
-var array = [1, 2, 3];
-
-var fn = função(valor){
-  retorna valor % 2 == 0;
-};
-
-escreva(filtrar(array, fn));
-
-escreva("Testando reduzir");
-var array = [1, 2, 3];
-
-var fn = função(total, valor){
-  retorna texto(total) + texto(valor);
-};
-
-escreva(reduzir(array, fn, ''));
-
-escreva("Testando encontrar");
-var array = [1, 2, 3];
-
-var fn = função(valor){
-  retorna valor == 4;
-};
-
-escreva(encontrar(array, fn));
-
-escreva("Testando encontrarIndice");
-var array = [1, 2, 3];
-
-var fn = função(valor){
-  retorna valor == 3;
-};
-
-escreva(encontrarIndice(array, fn));
-
-escreva("Testando encontrar");
-var array = [1, 2, 3];
-
-var fn = função(valor){
-  retorna valor == 4;
-};
-
-escreva(encontrar(array, fn));
-
-escreva("Testando encontrarIndice");
-var array = [1, 2, 3];
-
-var fn = função(valor){
-  retorna valor == 3;
-};
-
-escreva(encontrarIndice(array, fn));
-
-escreva("Testando encontrarUltimo");
-var array = [1, 2, 3];
-
-var fn = função(valor){
-  retorna valor > 1;
-};
-
-escreva(encontrarUltimo(array, fn));
-
-escreva("Testando encontrarUltimoIndice");
-var array = [1, 2, 3];
-
-var fn = função(valor){
-  retorna valor > 1;
-};
-
-escreva(encontrarUltimoIndice(array, fn));
-
-escreva("Testando incluido");
-var array = [1, 2, 3];
-
-escreva(incluido(array, 3));
-
-escreva("Testando algum");
-var array = [1, 2, 3];
-
-var fn = função(valor){
-  retorna valor > 3;
-};
-
-escreva(algum(array, fn));
-
-escreva("Testando todos");
-var array = [1, 2, 3];
-
-var fn = função(valor){
-  retorna valor >= 1;
-};
-
-escreva(todos(array, fn));
-
-escreva("----------------------------");
-
-escreva("--------------------------------");
-escreva("Testes Internos - Biblioteca Textos");
-escreva("--------------------------------");
-escreva("|");
-
-var t = importar("textos"); // Importa Biblioteca
-var erros_t = 0;
-var nula = nulo;
-var texto_teste = "Programação simples e moderna em português";
-
-função checa_minusculas()  {
-  var esperado = "abcdefghijklmnopqrstuvwxyz";
-  var obtido = t.letras_minusculas;
-
-  se (obtido != esperado) {
-    escreva("TESTE: letras_minusculas: falhou!");
-    erros_t = erros_t + 1;
-    retorna;
-  }
-  escreva("TESTE: letras_minusculas: passou!");
-}
-
-função checa_maiusculas()  {
-  var esperado = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
-  var obtido = t.letras_maiusculas;
-  se (obtido != esperado) {
-    escreva("TESTE: letras_maiusculas: falhou!");
-    erros_t = erros_t + 1;
-    retorna;
-  }
-  escreva("TESTE: letras_maiusculas: passou!");
-}
-
-função checa_letras(){
-  var esperado = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
-  var obtido = t.letras;
-  se (obtido != esperado) {
-    escreva("TESTE: letras: falhou!");
-    escreva("| esperado: '" + esperado + "'");
-    escreva("| obtido: '" + obtido + "'");
-    erros_t = erros_t + 1;
-    retorna;
-  }
-  escreva("TESTE: letras: passou!");
-}
-
-função checa_digitos(){
-  var esperado = "0123456789";
-  var obtido = t.digitos;
-
-  se (obtido != esperado) {
-    escreva("TESTE: digitos: falhou!");
-    escreva("| esperado: '" + esperado + "'");
-    escreva("| obtido: '" + obtido + "'");
-    erros_t = erros_t + 1;
-    retorna;
-  }
-  escreva("TESTE: digitos: passou!");
-}
-
-função checa_pontuacoes(){
-  var esperado = '!"'+"#$%&'()*+,-./:;<=>?@[\]^_`{|}~";
-  var obtido = t.pontuacoes;
-
-  se (obtido != esperado) {
-    escreva("TESTE: pontuacoes: falhou!");
-    escreva("| esperado: '" + esperado + "'");
-    escreva("| obtido: '" + obtido + "'");
-    erros_t = erros_t + 1;
-    retorna;
-  }
-  escreva("TESTE: pontuacoes: passou!");
-}
-
-função testa_maiusculo(){
-  var esperado = "PROGRAMAÇÃO SIMPLES E MODERNA EM PORTUGUÊS";
-  var  obtido = t.maiusculo(texto_teste);
-
-  se (obtido != esperado) {
-    escreva("TESTE: função maiusculo(): falhou!");
-    escreva("| esperado: '" + esperado + "'");
-    escreva("| obtido: '" + obtido + "'");
-    erros_t = erros_t + 1;
-    retorna;
-  }
-   escreva("TESTE: função maiusculo(): passou!");
-}
-
-função testa_minusculo(){
-  var esperado = "programação simples e moderna em português";
-  var  obtido = t.minusculo(texto_teste);
-
-  se (obtido != esperado) {
-    escreva("TESTE: função minusculo(): falhou!");
-    escreva("| esperado: '" + esperado + "'");
-    escreva("| obtido: '" + obtido + "'");
-    erros_t = erros_t + 1;
-    retorna;
-  }
-  escreva("TESTE: função minusculo(): passou!");
-}
-
-função testa_contem(){
-  var esperado = verdadeiro;
-  var  obtido = t.contem(texto_teste, "simples");
-    
-  se (obtido != esperado) {
-    escreva("TESTE: função contem(): falhou!");
-    escreva("| esperado: '" + texto(esperado) + "'");
-    escreva("| obtido: '" + texto(obtido) + "'");
-    erros_t = erros_t + 1;
-    retorna;
-  }
-
-  escreva("TESTE: função contem(): passou!");
-}
-
-função testa_formate(){
-  var texto_teste = "{} {} {} {} {} {}";
-  var esperado = "1 2.5 verdadeiro falso egua nulo";
-  var  obtido = t.formate(texto_teste, 1, 2.5, verdadeiro, falso, "egua", nula);
-
-  se (obtido != esperado) {
-    escreva("TESTE: função formate(): falhou!");
-    escreva("| esperado: '" + texto(esperado) + "'");
-    escreva("| obtido: '" + texto(obtido) + "'");
-    erros_t = erros_t + 1;
-    retorna;
-  }
-  escreva("TESTE: função formate(): passou!");
-}
-
-função testa_dividir(){
-  var esperado = ['Programação','simples','e','moderna','em','português'];
-  var  obtido = t.dividir(texto_teste, ' ');
-  
-  se (tamanho(esperado) != tamanho(obtido)){
-    escreva("TESTE: função dividir(): falhou!");
-    escreva("| esperado: '" + texto(esperado) + "'");
-    escreva("| obtido: '" + texto(obtido) + "'");
-    erros_t = erros_t + 1;
-    retorna;
-  }
-
-  para (var i = 0; i < tamanho(esperado); i = i + 1){
-    se (obtido[i] != esperado[i]){
-      escreva("TESTE: função dividir(): falhou!");
-      escreva("| esperado: '" + texto(esperado) + "'");
-      escreva("| obtido: '" + texto(obtido) + "'");
-      erros_t = erros_t + 1;
-      retorna;
-    }
-  }
-  escreva("TESTE: função dividir(): passou!");
-}
-
-função testa_tamanho(){
-  var esperado = 42;
-  var  obtido = t.tamanho(texto_teste);
-
-  se (esperado != obtido){
-    escreva("TESTE: função tamanho(): falhou!");
-    escreva("| esperado: '" + texto(esperado) + "'");
-    escreva("| obtido: '" + texto(obtido) + "'");
-    erros_t = erros_t + 1;
-    retorna;
-  }
-
-  escreva("TESTE: função tamanho(): passou!");
-}
-
-função testa_repita(){
-  var texto_teste = "aa";
-  var esperado = "aaaaaa";
-  var obtido = t.repita(texto_teste, 3);
-
-  se (esperado != obtido){
-    escreva("TESTE: função repita(): falhou!");
-    escreva("| esperado: '" + texto(esperado) + "'");
-    escreva("| obtido: '" + texto(obtido) + "'");
-    erros_t = erros_t + 1;
-    retorna;
-  }
-
-  escreva("TESTE: função repita(): passou!");
-}
-
-função testa_substituir(){
-  var texto_teste = "aaacaa";
-  var esperado = "aaabaa";
-  var obtido = t.substituir(texto_teste, "c", "b");
-
-  se (esperado != obtido){
-    escreva("TESTE: função substituir(): falhou!");
-    escreva("| esperado: '" + texto(esperado) + "'");
-    escreva("| obtido: '" + texto(obtido) + "'");
-    erros_t = erros_t + 1;
-    retorna;
-  }
-
-  escreva("TESTE: função substituir(): passou!");
-}
-
-função testa_busca(){
-  var texto_teste = "aabaa";
-  var esperado = 2;
-  var obtido = t.busca(texto_teste, "b");
-
-  se (esperado != obtido){
-    escreva("TESTE: função busca(): falhou!");
-    escreva("| esperado: '" + texto(esperado) + "'");
-    escreva("| obtido: '" + texto(obtido) + "'");
-    erros_t = erros_t + 1;
-    retorna;
-  }
-
-  escreva("TESTE: função busca(): passou!");
-}
-
-função testa_apara(){
-  var texto_teste = "  egua  ";
-  var esperado = "egua";
-  var obtido = t.apara(texto_teste);
-
-  se (esperado != obtido){
-    escreva("TESTE: função apara(): falhou!");
-    escreva("| esperado: '" + texto(esperado) + "'");
-    escreva("| obtido: '" + texto(obtido) + "'");
-    erros_t = erros_t + 1;
-    retorna;
-  }
-
-  escreva("TESTE: função apara(): passou!");
-}
-
-checa_minusculas();
-checa_maiusculas();
-checa_letras();
-checa_digitos();
-checa_pontuacoes();
-testa_maiusculo();
-testa_minusculo();
-testa_contem();
-testa_formate();
-testa_dividir();
-testa_tamanho();
-testa_repita();
-testa_substituir();
-testa_busca();
-testa_apara();
-
-escreva("----------------------------");
-escreva("  terminado com " + texto(erros_t) + " erro(s)!");
-escreva("----------------------------");
\ No newline at end of file
diff --git a/testes/avaliador-sintatico.test.ts b/testes/avaliador-sintatico.test.ts
index 1b0abf1e..1986702a 100644
--- a/testes/avaliador-sintatico.test.ts
+++ b/testes/avaliador-sintatico.test.ts
@@ -42,7 +42,7 @@ describe('Avaliador sintático', () => {
 
         it('Sucesso - Undefined', () => {
             const retornoAvaliadorSintatico =
-                delegua.avaliadorSintatico.analisar(undefined as any);
+                delegua.avaliadorSintatico.analisar(undefined);
 
             expect(retornoAvaliadorSintatico).toBeTruthy();
             expect(retornoAvaliadorSintatico.declaracoes).toHaveLength(0);
@@ -50,7 +50,7 @@ describe('Avaliador sintático', () => {
 
         it('Sucesso - Null', () => {
             const retornoAvaliadorSintatico =
-                delegua.avaliadorSintatico.analisar(null as any);
+                delegua.avaliadorSintatico.analisar(null);
 
             expect(retornoAvaliadorSintatico).toBeTruthy();
             expect(retornoAvaliadorSintatico.declaracoes).toHaveLength(0);
diff --git a/testes/birl/lexador.test.ts b/testes/birl/lexador.test.ts
index 7c7ba793..42e85c1b 100644
--- a/testes/birl/lexador.test.ts
+++ b/testes/birl/lexador.test.ts
@@ -1,36 +1,61 @@
 import { Delegua } from '../../fontes/delegua';
 
-describe('Lexador Birl', () => {
-    let delegua: Delegua;
+describe('Lexador', () => {
+    describe('mapear()', () => {
+        let delegua: Delegua;
 
-    beforeEach(() => {
-        delegua = new Delegua('birl');
-    });
-    it('Arquivo vazio.', () => {
-        const resultado = delegua.lexador.mapear([''], -1);
+        beforeEach(() => {
+            delegua = new Delegua('birl');
+        });
 
-        expect(resultado).toBeTruthy();
-        expect(resultado.simbolos).toHaveLength(0);
-    });
-    it('Programa vazio.', () => {
-        const resultado = delegua.lexador.mapear(['HORA DO SHOW \n', 'BIRL \n'], -1);
+        describe('Cenário de sucesso', () => {
+            it('Arquivo vazio.', () => {
+                const resultado = delegua.lexador.mapear([''], -1);
 
-        expect(resultado).toBeTruthy();
-        expect(resultado.simbolos).toHaveLength(2);
-    });
-    it('Programa Olá mundo simples.', () => {
-        const resultado = delegua.lexador.mapear(
-            [
-                'HORA DO SHOW \n',
-                '   CE QUER VER ESSA PORRA? ("Hello, World! Porra!\n"); \n',
-                '   BORA CUMPADE? 0; \n',
-                'BIRL \n',
-            ],
-            -1
-        );
-
-        expect(resultado).toBeTruthy();
-        expect(resultado.simbolos).toHaveLength(9);
-        expect(resultado.erros).toHaveLength(0);
+                expect(resultado).toBeTruthy();
+                expect(resultado.simbolos).toHaveLength(1);
+            });
+
+            it('Programa vazio.', () => {
+                const resultado = delegua.lexador.mapear(['HORA DO SHOW \n', 'BIRL \n'], -1);
+
+                expect(resultado).toBeTruthy();
+                expect(resultado.simbolos).toHaveLength(8);
+            });
+
+            it('Programa Olá mundo simples.', () => {
+                const resultado = delegua.lexador.mapear(
+                    [
+                        'HORA DO SHOW \n',
+                        '   CE QUER VER ESSA PORRA? ("Hello, World! Porra!\n"); \n',
+                        '   BORA CUMPADE? 0; \n',
+                        'BIRL \n',
+                    ],
+                    -1
+                );
+
+                expect(resultado).toBeTruthy();
+                expect(resultado.simbolos).toHaveLength(24);
+                expect(resultado.erros).toHaveLength(0);
+            });
+
+            it('Sucesso - Variavel - Atribuição', () => {
+                const resultado = delegua.lexador.mapear(
+                    [
+                        'HORA DO SHOW \n',
+                        '  MONSTRO? M1 = 1; \n',
+                        '  M1 = M1 + 1',
+                        '  CE QUER VER ESSA PORRA? (M1); \n',
+                        '  BORA CUMPADE? 0; \n',
+                        'BIRL \n',
+                    ],
+                    -1
+                );
+
+                expect(resultado).toBeTruthy();
+                expect(resultado.simbolos).toHaveLength(34);
+                expect(resultado.erros).toHaveLength(0);
+            });
+        });
     });
 });
diff --git a/exemplos/README.md b/testes/exemplos/README.md
similarity index 100%
rename from exemplos/README.md
rename to testes/exemplos/README.md
diff --git a/exemplos/classes/construtor-classe.delegua b/testes/exemplos/classes/construtor-classe.delegua
similarity index 100%
rename from exemplos/classes/construtor-classe.delegua
rename to testes/exemplos/classes/construtor-classe.delegua
diff --git a/exemplos/classes/teste-classe.delegua b/testes/exemplos/classes/teste-classe.delegua
similarity index 100%
rename from exemplos/classes/teste-classe.delegua
rename to testes/exemplos/classes/teste-classe.delegua
diff --git a/exemplos/condicionais/escolha.delegua b/testes/exemplos/condicionais/escolha.delegua
similarity index 100%
rename from exemplos/condicionais/escolha.delegua
rename to testes/exemplos/condicionais/escolha.delegua
diff --git a/exemplos/condicionais/se.delegua b/testes/exemplos/condicionais/se.delegua
similarity index 100%
rename from exemplos/condicionais/se.delegua
rename to testes/exemplos/condicionais/se.delegua
diff --git a/exemplos/dialetos/birl/fizzbuzz.birl b/testes/exemplos/dialetos/birl/fizzbuzz.birl
similarity index 100%
rename from exemplos/dialetos/birl/fizzbuzz.birl
rename to testes/exemplos/dialetos/birl/fizzbuzz.birl
diff --git a/exemplos/dialetos/birl/teste1.birl b/testes/exemplos/dialetos/birl/teste1.birl
similarity index 100%
rename from exemplos/dialetos/birl/teste1.birl
rename to testes/exemplos/dialetos/birl/teste1.birl
diff --git a/exemplos/dialetos/egua-classico/bhaskara.egua b/testes/exemplos/dialetos/egua-classico/bhaskara.egua
similarity index 100%
rename from exemplos/dialetos/egua-classico/bhaskara.egua
rename to testes/exemplos/dialetos/egua-classico/bhaskara.egua
diff --git a/exemplos/dialetos/egua-classico/classes/construtor-classe.egua b/testes/exemplos/dialetos/egua-classico/classes/construtor-classe.egua
similarity index 100%
rename from exemplos/dialetos/egua-classico/classes/construtor-classe.egua
rename to testes/exemplos/dialetos/egua-classico/classes/construtor-classe.egua
diff --git a/exemplos/dialetos/egua-classico/classes/teste-classe.egua b/testes/exemplos/dialetos/egua-classico/classes/teste-classe.egua
similarity index 100%
rename from exemplos/dialetos/egua-classico/classes/teste-classe.egua
rename to testes/exemplos/dialetos/egua-classico/classes/teste-classe.egua
diff --git a/exemplos/dialetos/egua-classico/condicionais/escolha.egua b/testes/exemplos/dialetos/egua-classico/condicionais/escolha.egua
similarity index 100%
rename from exemplos/dialetos/egua-classico/condicionais/escolha.egua
rename to testes/exemplos/dialetos/egua-classico/condicionais/escolha.egua
diff --git a/exemplos/dialetos/egua-classico/condicionais/se.egua b/testes/exemplos/dialetos/egua-classico/condicionais/se.egua
similarity index 100%
rename from exemplos/dialetos/egua-classico/condicionais/se.egua
rename to testes/exemplos/dialetos/egua-classico/condicionais/se.egua
diff --git a/exemplos/dialetos/egua-classico/estruturas-de-repeticao/enquanto.egua b/testes/exemplos/dialetos/egua-classico/estruturas-de-repeticao/enquanto.egua
similarity index 100%
rename from exemplos/dialetos/egua-classico/estruturas-de-repeticao/enquanto.egua
rename to testes/exemplos/dialetos/egua-classico/estruturas-de-repeticao/enquanto.egua
diff --git a/exemplos/dialetos/egua-classico/estruturas-de-repeticao/para-continua.egua b/testes/exemplos/dialetos/egua-classico/estruturas-de-repeticao/para-continua.egua
similarity index 100%
rename from exemplos/dialetos/egua-classico/estruturas-de-repeticao/para-continua.egua
rename to testes/exemplos/dialetos/egua-classico/estruturas-de-repeticao/para-continua.egua
diff --git a/exemplos/dialetos/egua-classico/estruturas-de-repeticao/para.egua b/testes/exemplos/dialetos/egua-classico/estruturas-de-repeticao/para.egua
similarity index 100%
rename from exemplos/dialetos/egua-classico/estruturas-de-repeticao/para.egua
rename to testes/exemplos/dialetos/egua-classico/estruturas-de-repeticao/para.egua
diff --git a/exemplos/dialetos/egua-classico/fazer-enquanto.egua b/testes/exemplos/dialetos/egua-classico/fazer-enquanto.egua
similarity index 100%
rename from exemplos/dialetos/egua-classico/fazer-enquanto.egua
rename to testes/exemplos/dialetos/egua-classico/fazer-enquanto.egua
diff --git a/exemplos/dialetos/egua-classico/fibonacci.egua b/testes/exemplos/dialetos/egua-classico/fibonacci.egua
similarity index 100%
rename from exemplos/dialetos/egua-classico/fibonacci.egua
rename to testes/exemplos/dialetos/egua-classico/fibonacci.egua
diff --git a/exemplos/dialetos/egua-classico/fila-estatica.egua b/testes/exemplos/dialetos/egua-classico/fila-estatica.egua
similarity index 100%
rename from exemplos/dialetos/egua-classico/fila-estatica.egua
rename to testes/exemplos/dialetos/egua-classico/fila-estatica.egua
diff --git a/exemplos/dialetos/egua-classico/merge-sort.egua b/testes/exemplos/dialetos/egua-classico/merge-sort.egua
similarity index 100%
rename from exemplos/dialetos/egua-classico/merge-sort.egua
rename to testes/exemplos/dialetos/egua-classico/merge-sort.egua
diff --git a/exemplos/dialetos/egua-classico/ola-mundo.egua b/testes/exemplos/dialetos/egua-classico/ola-mundo.egua
similarity index 100%
rename from exemplos/dialetos/egua-classico/ola-mundo.egua
rename to testes/exemplos/dialetos/egua-classico/ola-mundo.egua
diff --git a/exemplos/dialetos/egua-classico/perceptron.egua b/testes/exemplos/dialetos/egua-classico/perceptron.egua
similarity index 100%
rename from exemplos/dialetos/egua-classico/perceptron.egua
rename to testes/exemplos/dialetos/egua-classico/perceptron.egua
diff --git a/exemplos/dialetos/egua-classico/teste-classe.egua b/testes/exemplos/dialetos/egua-classico/teste-classe.egua
similarity index 100%
rename from exemplos/dialetos/egua-classico/teste-classe.egua
rename to testes/exemplos/dialetos/egua-classico/teste-classe.egua
diff --git a/exemplos/dialetos/egua-classico/testes.egua b/testes/exemplos/dialetos/egua-classico/testes.egua
similarity index 100%
rename from exemplos/dialetos/egua-classico/testes.egua
rename to testes/exemplos/dialetos/egua-classico/testes.egua
diff --git a/exemplos/dialetos/eguap/bhaskara.eguap b/testes/exemplos/dialetos/eguap/bhaskara.eguap
similarity index 100%
rename from exemplos/dialetos/eguap/bhaskara.eguap
rename to testes/exemplos/dialetos/eguap/bhaskara.eguap
diff --git a/exemplos/dialetos/eguap/classes/construtor-classe.eguap b/testes/exemplos/dialetos/eguap/classes/construtor-classe.eguap
similarity index 100%
rename from exemplos/dialetos/eguap/classes/construtor-classe.eguap
rename to testes/exemplos/dialetos/eguap/classes/construtor-classe.eguap
diff --git a/exemplos/dialetos/eguap/classes/teste-classe.eguap b/testes/exemplos/dialetos/eguap/classes/teste-classe.eguap
similarity index 100%
rename from exemplos/dialetos/eguap/classes/teste-classe.eguap
rename to testes/exemplos/dialetos/eguap/classes/teste-classe.eguap
diff --git a/exemplos/dialetos/eguap/condicionais/escolha.eguap b/testes/exemplos/dialetos/eguap/condicionais/escolha.eguap
similarity index 100%
rename from exemplos/dialetos/eguap/condicionais/escolha.eguap
rename to testes/exemplos/dialetos/eguap/condicionais/escolha.eguap
diff --git a/exemplos/dialetos/eguap/condicionais/se.eguap b/testes/exemplos/dialetos/eguap/condicionais/se.eguap
similarity index 100%
rename from exemplos/dialetos/eguap/condicionais/se.eguap
rename to testes/exemplos/dialetos/eguap/condicionais/se.eguap
diff --git a/exemplos/dialetos/eguap/estruturas-de-repeticao/enquanto.eguap b/testes/exemplos/dialetos/eguap/estruturas-de-repeticao/enquanto.eguap
similarity index 100%
rename from exemplos/dialetos/eguap/estruturas-de-repeticao/enquanto.eguap
rename to testes/exemplos/dialetos/eguap/estruturas-de-repeticao/enquanto.eguap
diff --git a/exemplos/dialetos/eguap/estruturas-de-repeticao/fazer-enquanto.eguap b/testes/exemplos/dialetos/eguap/estruturas-de-repeticao/fazer-enquanto.eguap
similarity index 100%
rename from exemplos/dialetos/eguap/estruturas-de-repeticao/fazer-enquanto.eguap
rename to testes/exemplos/dialetos/eguap/estruturas-de-repeticao/fazer-enquanto.eguap
diff --git a/exemplos/dialetos/eguap/estruturas-de-repeticao/para.eguap b/testes/exemplos/dialetos/eguap/estruturas-de-repeticao/para.eguap
similarity index 100%
rename from exemplos/dialetos/eguap/estruturas-de-repeticao/para.eguap
rename to testes/exemplos/dialetos/eguap/estruturas-de-repeticao/para.eguap
diff --git a/exemplos/dialetos/eguap/fibonacci.eguap b/testes/exemplos/dialetos/eguap/fibonacci.eguap
similarity index 100%
rename from exemplos/dialetos/eguap/fibonacci.eguap
rename to testes/exemplos/dialetos/eguap/fibonacci.eguap
diff --git a/exemplos/dialetos/eguap/fizzbuzz.eguap b/testes/exemplos/dialetos/eguap/fizzbuzz.eguap
similarity index 100%
rename from exemplos/dialetos/eguap/fizzbuzz.eguap
rename to testes/exemplos/dialetos/eguap/fizzbuzz.eguap
diff --git a/exemplos/dialetos/eguap/media.eguap b/testes/exemplos/dialetos/eguap/media.eguap
similarity index 100%
rename from exemplos/dialetos/eguap/media.eguap
rename to testes/exemplos/dialetos/eguap/media.eguap
diff --git a/exemplos/dialetos/visualg/divisao-inteira.alg b/testes/exemplos/dialetos/visualg/divisao-inteira.alg
similarity index 100%
rename from exemplos/dialetos/visualg/divisao-inteira.alg
rename to testes/exemplos/dialetos/visualg/divisao-inteira.alg
diff --git a/exemplos/dialetos/visualg/exemplos-escreva.alg b/testes/exemplos/dialetos/visualg/exemplos-escreva.alg
similarity index 100%
rename from exemplos/dialetos/visualg/exemplos-escreva.alg
rename to testes/exemplos/dialetos/visualg/exemplos-escreva.alg
diff --git a/exemplos/dialetos/visualg/ola-mundo.alg b/testes/exemplos/dialetos/visualg/ola-mundo.alg
similarity index 100%
rename from exemplos/dialetos/visualg/ola-mundo.alg
rename to testes/exemplos/dialetos/visualg/ola-mundo.alg
diff --git a/exemplos/dialetos/visualg/times.alg b/testes/exemplos/dialetos/visualg/times.alg
similarity index 100%
rename from exemplos/dialetos/visualg/times.alg
rename to testes/exemplos/dialetos/visualg/times.alg
diff --git a/exemplos/dialetos/visualg/um-a-10.alg b/testes/exemplos/dialetos/visualg/um-a-10.alg
similarity index 100%
rename from exemplos/dialetos/visualg/um-a-10.alg
rename to testes/exemplos/dialetos/visualg/um-a-10.alg
diff --git a/exemplos/dialetos/visualg/um-a-dez-interrompa.alg b/testes/exemplos/dialetos/visualg/um-a-dez-interrompa.alg
similarity index 100%
rename from exemplos/dialetos/visualg/um-a-dez-interrompa.alg
rename to testes/exemplos/dialetos/visualg/um-a-dez-interrompa.alg
diff --git a/exemplos/dialetos/visualg/variaveis.alg b/testes/exemplos/dialetos/visualg/variaveis.alg
similarity index 100%
rename from exemplos/dialetos/visualg/variaveis.alg
rename to testes/exemplos/dialetos/visualg/variaveis.alg
diff --git a/exemplos/estruturas-de-dados/inteiros.delegua b/testes/exemplos/estruturas-de-dados/inteiros.delegua
similarity index 100%
rename from exemplos/estruturas-de-dados/inteiros.delegua
rename to testes/exemplos/estruturas-de-dados/inteiros.delegua
diff --git a/exemplos/estruturas-de-repeticao/enquanto-continua.delegua b/testes/exemplos/estruturas-de-repeticao/enquanto-continua.delegua
similarity index 100%
rename from exemplos/estruturas-de-repeticao/enquanto-continua.delegua
rename to testes/exemplos/estruturas-de-repeticao/enquanto-continua.delegua
diff --git a/exemplos/estruturas-de-repeticao/enquanto.delegua b/testes/exemplos/estruturas-de-repeticao/enquanto.delegua
similarity index 100%
rename from exemplos/estruturas-de-repeticao/enquanto.delegua
rename to testes/exemplos/estruturas-de-repeticao/enquanto.delegua
diff --git a/exemplos/estruturas-de-repeticao/fazer-enquanto-continua.delegua b/testes/exemplos/estruturas-de-repeticao/fazer-enquanto-continua.delegua
similarity index 100%
rename from exemplos/estruturas-de-repeticao/fazer-enquanto-continua.delegua
rename to testes/exemplos/estruturas-de-repeticao/fazer-enquanto-continua.delegua
diff --git a/exemplos/estruturas-de-repeticao/fazer-enquanto.delegua b/testes/exemplos/estruturas-de-repeticao/fazer-enquanto.delegua
similarity index 100%
rename from exemplos/estruturas-de-repeticao/fazer-enquanto.delegua
rename to testes/exemplos/estruturas-de-repeticao/fazer-enquanto.delegua
diff --git a/exemplos/estruturas-de-repeticao/para-continua.delegua b/testes/exemplos/estruturas-de-repeticao/para-continua.delegua
similarity index 100%
rename from exemplos/estruturas-de-repeticao/para-continua.delegua
rename to testes/exemplos/estruturas-de-repeticao/para-continua.delegua
diff --git a/exemplos/estruturas-de-repeticao/para.delegua b/testes/exemplos/estruturas-de-repeticao/para.delegua
similarity index 100%
rename from exemplos/estruturas-de-repeticao/para.delegua
rename to testes/exemplos/estruturas-de-repeticao/para.delegua
diff --git a/exemplos/fibonacci.delegua b/testes/exemplos/fibonacci.delegua
similarity index 100%
rename from exemplos/fibonacci.delegua
rename to testes/exemplos/fibonacci.delegua
diff --git a/exemplos/fila-estatica.delegua b/testes/exemplos/fila-estatica.delegua
similarity index 100%
rename from exemplos/fila-estatica.delegua
rename to testes/exemplos/fila-estatica.delegua
diff --git a/exemplos/fizzbuzz.delegua b/testes/exemplos/fizzbuzz.delegua
similarity index 100%
rename from exemplos/fizzbuzz.delegua
rename to testes/exemplos/fizzbuzz.delegua
diff --git a/exemplos/funcoes/funcoes-anonimas-2.delegua b/testes/exemplos/funcoes/funcoes-anonimas-2.delegua
similarity index 100%
rename from exemplos/funcoes/funcoes-anonimas-2.delegua
rename to testes/exemplos/funcoes/funcoes-anonimas-2.delegua
diff --git a/exemplos/funcoes/funcoes-anonimas.delegua b/testes/exemplos/funcoes/funcoes-anonimas.delegua
similarity index 100%
rename from exemplos/funcoes/funcoes-anonimas.delegua
rename to testes/exemplos/funcoes/funcoes-anonimas.delegua
diff --git a/testes/exemplos/importacao/importacao-1.delegua b/testes/exemplos/importacao/importacao-1.delegua
new file mode 100644
index 00000000..5317a214
--- /dev/null
+++ b/testes/exemplos/importacao/importacao-1.delegua
@@ -0,0 +1,2 @@
+var importacao = importar("./testes/exemplos/importacao/importacao-2.egua")
+importacao.escreverAlgumaCoisa()
diff --git a/exemplos/importacao/importacao-3.delegua b/testes/exemplos/importacao/importacao-3.delegua
similarity index 100%
rename from exemplos/importacao/importacao-3.delegua
rename to testes/exemplos/importacao/importacao-3.delegua
diff --git a/exemplos/importacao/inicial.delegua b/testes/exemplos/importacao/inicial.delegua
similarity index 100%
rename from exemplos/importacao/inicial.delegua
rename to testes/exemplos/importacao/inicial.delegua
diff --git a/exemplos/importacao/testes.delegua b/testes/exemplos/importacao/testes.delegua
similarity index 100%
rename from exemplos/importacao/testes.delegua
rename to testes/exemplos/importacao/testes.delegua
diff --git a/exemplos/index.delegua b/testes/exemplos/index.delegua
similarity index 100%
rename from exemplos/index.delegua
rename to testes/exemplos/index.delegua
diff --git a/exemplos/leia.delegua b/testes/exemplos/leia.delegua
similarity index 100%
rename from exemplos/leia.delegua
rename to testes/exemplos/leia.delegua
diff --git a/exemplos/media.delegua b/testes/exemplos/media.delegua
similarity index 100%
rename from exemplos/media.delegua
rename to testes/exemplos/media.delegua
diff --git a/exemplos/perceptron.delegua b/testes/exemplos/perceptron.delegua
similarity index 100%
rename from exemplos/perceptron.delegua
rename to testes/exemplos/perceptron.delegua
diff --git a/exemplos/primitivas/lista/adicionar.delegua b/testes/exemplos/primitivas/lista/adicionar.delegua
similarity index 100%
rename from exemplos/primitivas/lista/adicionar.delegua
rename to testes/exemplos/primitivas/lista/adicionar.delegua
diff --git a/exemplos/primitivas/lista/empilhar.delegua b/testes/exemplos/primitivas/lista/empilhar.delegua
similarity index 100%
rename from exemplos/primitivas/lista/empilhar.delegua
rename to testes/exemplos/primitivas/lista/empilhar.delegua
diff --git a/exemplos/primitivas/lista/fatiar.delegua b/testes/exemplos/primitivas/lista/fatiar.delegua
similarity index 100%
rename from exemplos/primitivas/lista/fatiar.delegua
rename to testes/exemplos/primitivas/lista/fatiar.delegua
diff --git a/exemplos/primitivas/lista/inclui.delegua b/testes/exemplos/primitivas/lista/inclui.delegua
similarity index 100%
rename from exemplos/primitivas/lista/inclui.delegua
rename to testes/exemplos/primitivas/lista/inclui.delegua
diff --git a/exemplos/primitivas/lista/inverter.delegua b/testes/exemplos/primitivas/lista/inverter.delegua
similarity index 100%
rename from exemplos/primitivas/lista/inverter.delegua
rename to testes/exemplos/primitivas/lista/inverter.delegua
diff --git a/exemplos/primitivas/lista/juntar.delegua b/testes/exemplos/primitivas/lista/juntar.delegua
similarity index 100%
rename from exemplos/primitivas/lista/juntar.delegua
rename to testes/exemplos/primitivas/lista/juntar.delegua
diff --git a/exemplos/primitivas/lista/ordenar.delegua b/testes/exemplos/primitivas/lista/ordenar.delegua
similarity index 100%
rename from exemplos/primitivas/lista/ordenar.delegua
rename to testes/exemplos/primitivas/lista/ordenar.delegua
diff --git a/exemplos/primitivas/lista/removerPrimeiro.delegua b/testes/exemplos/primitivas/lista/removerPrimeiro.delegua
similarity index 100%
rename from exemplos/primitivas/lista/removerPrimeiro.delegua
rename to testes/exemplos/primitivas/lista/removerPrimeiro.delegua
diff --git a/exemplos/primitivas/lista/removerUltimo.delegua b/testes/exemplos/primitivas/lista/removerUltimo.delegua
similarity index 100%
rename from exemplos/primitivas/lista/removerUltimo.delegua
rename to testes/exemplos/primitivas/lista/removerUltimo.delegua
diff --git a/exemplos/primitivas/texto/dividir.delegua b/testes/exemplos/primitivas/texto/dividir.delegua
similarity index 100%
rename from exemplos/primitivas/texto/dividir.delegua
rename to testes/exemplos/primitivas/texto/dividir.delegua
diff --git a/exemplos/primitivas/texto/inclui.delegua b/testes/exemplos/primitivas/texto/inclui.delegua
similarity index 100%
rename from exemplos/primitivas/texto/inclui.delegua
rename to testes/exemplos/primitivas/texto/inclui.delegua
diff --git a/exemplos/primitivas/texto/maiusculo.delegua b/testes/exemplos/primitivas/texto/maiusculo.delegua
similarity index 100%
rename from exemplos/primitivas/texto/maiusculo.delegua
rename to testes/exemplos/primitivas/texto/maiusculo.delegua
diff --git a/exemplos/primitivas/texto/minusculo.delegua b/testes/exemplos/primitivas/texto/minusculo.delegua
similarity index 100%
rename from exemplos/primitivas/texto/minusculo.delegua
rename to testes/exemplos/primitivas/texto/minusculo.delegua
diff --git a/exemplos/primitivas/texto/substituir.delegua b/testes/exemplos/primitivas/texto/substituir.delegua
similarity index 100%
rename from exemplos/primitivas/texto/substituir.delegua
rename to testes/exemplos/primitivas/texto/substituir.delegua
diff --git a/exemplos/primitivas/texto/subtexto.delegua b/testes/exemplos/primitivas/texto/subtexto.delegua
similarity index 100%
rename from exemplos/primitivas/texto/subtexto.delegua
rename to testes/exemplos/primitivas/texto/subtexto.delegua
diff --git a/testes/exemplos/testes.egua b/testes/exemplos/testes.egua
new file mode 100644
index 00000000..0b508cbb
--- /dev/null
+++ b/testes/exemplos/testes.egua
@@ -0,0 +1,406 @@
+escreva("--------------------------------");
+escreva("Testes Internos - Linguagem Egua");
+escreva("--------------------------------");
+escreva("|");
+
+var erros = 0;
+
+função startTest(){
+  escreva(tSesenão());
+  escreva("|");
+  escreva(tEnquanto());
+  escreva("|");
+  escreva(tPara());
+  escreva("|");
+  escreva(tFacaEnquanto());
+  escreva("|");
+  escreva(tCasoEscolha());
+  escreva("|");
+  escreva(tTentePegue());
+  escreva("|");
+  escreva(tClasse());
+}
+
+função tSesenão(){
+  escreva("----------------------------");
+  escreva("Iniciando Teste: Se - Se Não");
+  escreva("----------------------------");
+  var a = 1;
+  var b = 1;
+  se (a == b)
+    retorna("Se - Se não: OK!");
+  senão {
+    erros = erros + 1;
+    retorna("Se - Se não: ERRO!");
+  }
+}
+
+função tEnquanto(){
+  escreva("------------------------");
+  escreva("Iniciando Teste: Enquanto");
+  escreva("------------------------");
+  var a = 0;
+  enquanto(a<5){
+    a = a + 1;
+  }
+  se (a == 5)
+    retorna("Enquanto: OK!");
+  senão {
+    erros = erros + 1;
+    retorna("Enquanto: ERRO!");
+  }
+  escreva(a);
+}
+
+função tPara(){
+  escreva("--------------------");
+  escreva("Iniciando Teste: Para");
+  escreva("--------------------");
+  var a = 0;
+  para (var i = 0; i < 5; i = i + 1) {
+  a = a + 1;
+  }
+  se (a == 5)
+    retorna("Para: OK!");
+  senão {
+    erros = erros + 1;
+    retorna("Para: ERRO!");
+  }
+}
+
+função tFacaEnquanto(){
+  escreva("-----------------------------");
+  escreva("Iniciando Teste: Faça - Enquanto");
+  escreva("-----------------------------");
+  var a = 0;
+  fazer {
+    a = a + 1;
+  } enquanto(a<5){
+  }
+  se (a == 5)
+    retorna("Faça - Enquanto: OK!");
+  senão {
+    erros = erros + 1;
+    retorna("Faça - Enquanto: ERRO!");
+  }
+}
+
+função tCasoEscolha(){
+  escreva("--------------------");
+  escreva("Iniciando Teste: Caso - Escolha");
+  escreva("--------------------");
+  escolha(1){
+    caso 1: 
+    retorna("Caso - Escolha: OK!");  
+    caso 2:
+    retorna("Caso - Escolha: ERRO!");
+  }
+}
+
+função tTentePegue(){
+  escreva("--------------------");
+  escreva("Iniciando Teste: Tente - Pegue");
+  escreva("--------------------");
+  tente {
+  1 > "1";
+  escreva("Tente - Pegue: ERRO!");
+  } pegue {
+  escreva("Tente - Pegue: OK!");
+  } finalmente {
+  retorna(" ");  
+  }
+}
+
+função tClasse(){
+  escreva("--------------------");
+  escreva("Iniciando Teste: Classe");
+  escreva("--------------------");
+  tente{
+  classe Animal {
+    correr() {
+      escreva("Correndo Loucamente");
+    }
+  }
+  classe Cachorro herda Animal {
+    latir() {
+      escreva("Au Au Au Au");
+    }
+  }
+  var nomeDoCachorro = Cachorro();
+  nomeDoCachorro.correr();
+  nomeDoCachorro.latir();
+  escreva("Classe: OK!");
+  } pegue {
+  escreva("Classe: ERRO!");  
+  } finalmente {
+  retorna(" ");
+  }
+}
+
+startTest();
+escreva("----------------------------");
+escreva("Teste terminado com " + texto(erros) + " erro(s)!");
+escreva("----------------------------");
+
+escreva("--------------------------------");
+escreva("Testes Funções Internas - Linguagem Egua");
+escreva("--------------------------------");
+escreva("|");
+
+função ttamanho(){
+  var array = [1,2,3];
+  var tam = tamanho(array);
+
+  se (tam != nulo)
+    escreva(tam);
+  senão {
+    errosM = errosM+1;
+    escreva(errosM);
+  }
+}
+
+função ttexto(){
+  var t = 123;
+  var text = texto(t);
+
+  se (text != nulo)
+    escreva(text);
+  senão {
+    errosM = errosM+1;
+    escreva(errosM);
+  }
+}
+
+função treal(){
+  var n = '123.05';
+  var rel = real(n);
+
+  se (rel != nulo)
+    escreva(rel);
+  senão {
+    errosM = errosM+1;
+    escreva(errosM);
+  }
+}
+
+função tinteiro(){
+  var i = '50.56';
+  var int = inteiro(i);
+
+  se (int != nulo)
+    escreva(int);
+  senão {
+    errosM = errosM+1;
+    escreva(errosM);
+  }
+}
+
+função tordenar(){
+  var i = [4,2,1,5,3];
+  var ord = ordenar(i);
+
+  se (ord != nulo)
+    escreva(ord);
+  senão {
+    errosM = errosM+1;
+    escreva(errosM);
+  }
+}
+
+função taleatorio(){
+  var ran = aleatorio();
+  se (ran != nulo)
+    escreva(ran);
+  senão {
+    errosM = errosM+1;
+    escreva(errosM);
+  }
+}
+
+função taleatorioEntre(){
+  var ran = aleatorioEntre(3);
+
+  se (ran < 3) {
+    escreva(ran);
+  } senão {
+    errosM = errosM+1;
+    escreva(errosM);
+  }
+
+  var ran2 = aleatorioEntre(1,3);
+
+  se (ran2 >= 1) {
+    se (ran2 < 3) {
+      escreva(ran2);
+    } senão {
+      errosM = errosM+1;
+      escreva(errosM);
+    }
+  } senão {
+    errosM = errosM+1;
+    escreva(errosM);
+  }
+}
+
+escreva("--------------------------------");
+escreva("Função interna: Tamanho");
+ttamanho();
+escreva("|");
+escreva("--------------------------------");
+escreva("Função interna: Texto");
+ttexto();
+escreva("|");
+escreva("--------------------------------");
+escreva("Função interna: Real");
+treal();
+escreva("|");
+escreva("--------------------------------");
+escreva("Função interna: Inteiro");
+tinteiro();
+escreva("|");
+escreva("--------------------------------");
+escreva("Função interna: Ordenar");
+tordenar();
+escreva("|");
+escreva("--------------------------------");
+escreva("Função interna: Aleatório");
+taleatorio();
+escreva("|");
+escreva("--------------------------------");
+escreva("Função interna: Aleatório Entre");
+taleatorioEntre();
+escreva("|");
+escreva("--------------------------------");
+escreva("Teste terminado com " + texto(errosM) + " erro(s)!");
+escreva("----------------------------");
+
+escreva("Testando estado de função e classe");
+função a(){
+    retorna 1;
+}
+
+escreva(a);
+
+classe Animal {
+  correr() {
+      escreva("Correndo Loucamente");
+  }
+} 
+
+escreva(Animal);
+escreva("----------------------------");
+
+escreva("Testando paraCada");
+var array = [1, 2, 3];
+
+var fn = função(valor){
+  escreva(valor);
+};
+
+paraCada(array, fn);
+
+escreva("Testando mapear");
+var array = [1, 2, 3];
+
+var fn = função(valor){
+  retorna valor * 2;
+};
+
+escreva(mapear(array, fn));
+
+escreva("Testando filtrar");
+var array = [1, 2, 3];
+
+var fn = função(valor){
+  retorna valor % 2 == 0;
+};
+
+escreva(filtrar(array, fn));
+
+escreva("Testando reduzir");
+var array = [1, 2, 3];
+
+var fn = função(total, valor){
+  retorna texto(total) + texto(valor);
+};
+
+escreva(reduzir(array, fn, ''));
+
+escreva("Testando encontrar");
+var array = [1, 2, 3];
+
+var fn = função(valor){
+  retorna valor == 4;
+};
+
+escreva(encontrar(array, fn));
+
+escreva("Testando encontrarIndice");
+var array = [1, 2, 3];
+
+var fn = função(valor){
+  retorna valor == 3;
+};
+
+escreva(encontrarIndice(array, fn));
+
+escreva("Testando encontrar");
+var array = [1, 2, 3];
+
+var fn = função(valor){
+  retorna valor == 4;
+};
+
+escreva(encontrar(array, fn));
+
+escreva("Testando encontrarIndice");
+var array = [1, 2, 3];
+
+var fn = função(valor){
+  retorna valor == 3;
+};
+
+escreva(encontrarIndice(array, fn));
+
+escreva("Testando encontrarUltimo");
+var array = [1, 2, 3];
+
+var fn = função(valor){
+  retorna valor > 1;
+};
+
+escreva(encontrarUltimo(array, fn));
+
+escreva("Testando encontrarUltimoIndice");
+var array = [1, 2, 3];
+
+var fn = função(valor){
+  retorna valor > 1;
+};
+
+escreva(encontrarUltimoIndice(array, fn));
+
+escreva("Testando incluido");
+var array = [1, 2, 3];
+
+escreva(incluido(array, 3));
+
+escreva("Testando algum");
+var array = [1, 2, 3];
+
+var fn = função(valor){
+  retorna valor > 3;
+};
+
+escreva(algum(array, fn));
+
+escreva("Testando todos");
+var array = [1, 2, 3];
+
+var fn = função(valor){
+  retorna valor >= 1;
+};
+
+escreva(todos(array, fn));
+
+escreva("----------------------------");
\ No newline at end of file
diff --git a/testes/formatadores/formatador-delegua.test.ts b/testes/formatadores/formatador-delegua.test.ts
deleted file mode 100644
index b185a0e5..00000000
--- a/testes/formatadores/formatador-delegua.test.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-import { FormatadorDelegua } from '../../fontes/formatadores';
-import { Lexador } from '../../fontes/lexador';
-
-describe('Formatadores > Delégua', () => {
-    const formatador = new FormatadorDelegua();
-    const lexador = new Lexador();
-
-    it('Trivial', () => {
-        const resultadoLexador = lexador.mapear(
-            ["tente { escreva('sucesso') } pegue { escreva('pegue') } finalmente { escreva('pronto') }"], 
-            -1
-        );
-        const resultado = formatador.formatar(resultadoLexador.simbolos);
-        // console.log(resultado);
-        expect(resultado.split('\n')).toHaveLength(10);
-    });
-});
\ No newline at end of file
diff --git a/testes/importador.test.ts b/testes/importador.test.ts
deleted file mode 100644
index 46acba3f..00000000
--- a/testes/importador.test.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import { Delegua } from '../fontes/delegua';
-
-describe('Importador', () => {
-    describe('importar()', () => {
-        let delegua: Delegua;
-
-        beforeEach(() => {
-            delegua = new Delegua('delegua');
-        });
-
-        it('Trivial', () => {
-            const resultado = delegua.importador.importar('./exemplos/fibonacci.delegua', true, false);
-            expect(resultado).toBeTruthy();
-        });
-    });
-});
\ No newline at end of file
diff --git a/testes/primitivas/primitivas-texto.test.ts b/testes/primitivas/primitivas-texto.test.ts
deleted file mode 100644
index 1f69adec..00000000
--- a/testes/primitivas/primitivas-texto.test.ts
+++ /dev/null
@@ -1,59 +0,0 @@
-import primitivasTexto from '../../fontes/bibliotecas/primitivas-texto';
-
-describe('Primitivas de texto', () => {
-    describe('dividir()', () => {
-        it('Trivial', () => {
-            const resultado = primitivasTexto.dividir('123|456|789|0', '|', 4);
-            expect(resultado).toStrictEqual(['123', '456', '789', '0']);
-        });
-    });
-
-    describe('fatiar()', () => {
-        it('Trivial', () => {
-            const resultado = primitivasTexto.fatiar('1234567890', 4, 7);
-            expect(resultado).toBe('567');
-        });
-    });
-
-    describe('inclui()', () => {
-        it('Trivial', () => {
-            const resultado = primitivasTexto.inclui('123', '3');
-            expect(resultado).toBe(true);
-        });
-    });
-
-    describe('maiusculo()', () => {
-        it('Trivial', () => {
-            const resultado = primitivasTexto.maiusculo('delégua');
-            expect(resultado).toBe('DELÉGUA');
-        });
-    });
-
-    describe('minusculo()', () => {
-        it('Trivial', () => {
-            const resultado = primitivasTexto.minusculo('DELÉGUA');
-            expect(resultado).toBe('delégua');
-        });
-    });
-
-    describe('substituir()', () => {
-        it('Trivial', () => {
-            const resultado = primitivasTexto.substituir('123', '2', '4');
-            expect(resultado).toBe('143');
-        });
-    });
-
-    describe('subtexto()', () => {
-        it('Trivial', () => {
-            const resultado = primitivasTexto.subtexto('1234567890', 2, 5);
-            expect(resultado).toBe('345');
-        });
-    });
-
-    describe('tamanho()', () => {
-        it('Trivial', () => {
-            const resultado = primitivasTexto.tamanho('1234567890');
-            expect(resultado).toBe(10);
-        });
-    });
-});
\ No newline at end of file
diff --git a/testes/primitivas/primitivas-vetor.test.ts b/testes/primitivas/primitivas-vetor.test.ts
deleted file mode 100644
index 379a89d0..00000000
--- a/testes/primitivas/primitivas-vetor.test.ts
+++ /dev/null
@@ -1,87 +0,0 @@
-import primitivasVetor from '../../fontes/bibliotecas/primitivas-vetor';
-
-describe('Primitivas de vetor', () => {
-    describe('adicionar()', () => {
-        it('Trivial', () => {
-            const resultado = primitivasVetor.adicionar([1, 2, 3], 4);
-            expect(resultado).toStrictEqual([1, 2, 3, 4]);
-        });
-    });
-
-    describe('empilhar()', () => {
-        it('Trivial', () => {
-            const resultado = primitivasVetor.empilhar([1, 2, 3], 4);
-            expect(resultado).toStrictEqual([1, 2, 3, 4]);
-        });
-    });
-
-    describe('fatiar()', () => {
-        it('Trivial', () => {
-            const resultado = primitivasVetor.fatiar([1, 2, 3, 4, 5], 1, 3);
-            expect(resultado).toStrictEqual([2, 3]);
-        });
-    });
-
-    describe('inclui()', () => {
-        it('Trivial', () => {
-            const resultado = primitivasVetor.inclui([1, 2, 3], 3);
-            expect(resultado).toBe(true);
-        });
-    });
-
-    describe('inverter()', () => {
-        it('Trivial', () => {
-            const resultado = primitivasVetor.inverter([1, 2, 3]);
-            expect(resultado).toStrictEqual([3, 2, 1]);
-        });
-    });
-
-    describe('juntar()', () => {
-        it('Trivial', () => {
-            const resultado = primitivasVetor.juntar([1, 2, 3], '|');
-            expect(resultado).toBe('1|2|3');
-        });
-    });
-
-    describe('ordenar()', () => {
-        it('Trivial', () => {
-            const resultado = primitivasVetor.ordenar([3, 2, 7, 1, 5]);
-            expect(resultado).toStrictEqual([1, 2, 3, 5, 7]);
-        });
-    });
-
-    describe('remover()', () => {
-        it('Trivial', () => {
-            const resultado = primitivasVetor.remover([1, 2, 3], 2);
-            expect(resultado).toStrictEqual([1, 3]);
-        });
-    });
-
-    describe('removerPrimeiro()', () => {
-        it('Trivial', () => {
-            const resultado = primitivasVetor.removerPrimeiro([1, 2, 3]);
-            expect(resultado).toStrictEqual([2, 3]);
-        });
-    });
-
-    describe('removerUltimo()', () => {
-        it('Trivial', () => {
-            const resultado = primitivasVetor.removerUltimo([1, 2, 3]);
-            expect(resultado).toStrictEqual([1, 2]);
-        });
-    });
-
-    describe('somar()', () => {
-        it('Trivial', () => {
-            const resultado = primitivasVetor.somar([1, 2, 3]);
-            expect(resultado).toBe(6);
-        });
-    });
-
-    describe('tamanho()', () => {
-        it('Trivial', () => {
-            const resultado = primitivasVetor.tamanho([1, 2, 3]);
-            expect(resultado).toBe(3);
-        });
-    });
-});
\ No newline at end of file
diff --git a/testes/tradutores/tradutor-javascript.test.ts b/testes/tradutores/tradutor-javascript.test.ts
index ab0c5d02..54a0b9be 100644
--- a/testes/tradutores/tradutor-javascript.test.ts
+++ b/testes/tradutores/tradutor-javascript.test.ts
@@ -37,20 +37,6 @@ describe('Tradutor Delégua -> JavaScript', () => {
             delegua = new Delegua('delegua');
         });
 
-        it('declarando variável não inicializada', () => {
-            const retornoLexador = delegua.lexador.mapear(
-                [
-                    'var a;',
-                ],
-                -1
-            );
-            const retornoAvaliadorSintatico = delegua.avaliadorSintatico.analisar(retornoLexador);
-
-            const resultado = tradutor.traduzir(retornoAvaliadorSintatico.declaracoes);
-            expect(resultado).toBeTruthy();
-            expect(resultado).toMatch(/let a;/i);
-        });
-
         it('definindo funcao com variavel', () => {
             const retornoLexador = delegua.lexador.mapear(
                 [
@@ -91,7 +77,7 @@ describe('Tradutor Delégua -> JavaScript', () => {
             expect(resultado).toMatch(/corre\(\)/i);
             expect(resultado).toMatch(/console\.log\('correndo'\)/i);
             expect(resultado).toMatch(/class Cachorro extends Animal {/i);
-            expect(resultado).toMatch(/let thor = new Cachorro\(\)/i);
+            // expect(resultado).toMatch(/let thor = new Cachorro\(\)/i);
             expect(resultado).toMatch(/thor.corre\(\)/i);
         });
 
@@ -133,7 +119,7 @@ describe('Tradutor Delégua -> JavaScript', () => {
             expect(resultado).toMatch(/this.valor = abc/i);
             expect(resultado).toMatch(/mostrarValor\(\) {/i);
             expect(resultado).toMatch(/console\.log\(this.valor\)/i);
-            expect(resultado).toMatch(/let teste = new Teste\(100\)/i);
+            // expect(resultado).toMatch(/let teste = new Teste\(100\)/i);
             expect(resultado).toMatch(/teste.mostrarValor\(\)/i);
         });
 
@@ -225,13 +211,13 @@ describe('Tradutor Delégua -> JavaScript', () => {
             const retornoLexador = delegua.lexador.mapear(
                 [
                     'tente { ',
-                    '   1 > "2";',
-                    '   escreva("sucesso");',
+                    '1 > "2";',
+                    'escreva("sucesso");',
                     '}',
                     'pegue {',
-                    '   escreva("Ocorreu uma exceção.");',
+                    'escreva("Ocorreu uma exceção.");',
                     '} finalmente {',
-                    '   escreva("Ocorrendo exceção ou não, eu sempre executo");',
+                    'escreva("Ocorrendo exceção ou não, eu sempre executo");',
                     '}',
                 ],
                 -1