From a0ad25d35c67724310a7bc5eb813a967e156476c Mon Sep 17 00:00:00 2001 From: Elender Date: Sat, 21 Oct 2023 21:44:57 -0300 Subject: [PATCH] Update O Compilador --- PAL-1000/O Compilador | 206 +++++++++++++++++++++++++++--------------- 1 file changed, 135 insertions(+), 71 deletions(-) diff --git a/PAL-1000/O Compilador b/PAL-1000/O Compilador index 80e011da..5738f37e 100644 --- a/PAL-1000/O Compilador +++ b/PAL-1000/O Compilador @@ -101,16 +101,19 @@ Rotina para que se determine se existe algum problema de compila Se o sinalizador de erros deste compilador estiver ativado, diga sim. Rotina para que se apresente uma mensagem de erro contendo uma string: - Se existir algum problema de compilação, retorne. + Se existir algum problema de compilação, + Retorne. Ative o sinalizador de erros deste compilador. Atribua esta string à mensagem de erro deste compilador. Rotina para que se apresente uma mensagem de erro contendo uma string e um endereço de byte: - Se existir algum problema de compilação, retorne. + Se existir algum problema de compilação, + Retorne. Ative o sinalizador de erros deste compilador. Atribua a string à mensagem de erro deste compilador. Encontre o endereço do arquivo atual deste compilador e o número da linha de erro deste compilador usando o endereço de byte . - Se o endereço do arquivo atual deste compilador estiver em branco, retorne. + Se o endereço do arquivo atual deste compilador estiver em branco, + Retorne. Extraia um nome do arquivo desde o endereço do arquivo atual deste compilador. Anteponha "Erro no arquivo '" junto com o nome do arquivo seguido de "'. " para a mensagem de erro deste compilador. @@ -606,7 +609,7 @@ Rotina para que se adicione o atribua ou converta fragmentos usando uma vari Adicione uma quarta unidade semântica para as unidades semânticas usando o tipo desta segunda variável. Converta as unidades semânticas para uma representação interna da rotina. Destrua as unidades semânticas. - Apresente uma mensagem de erro contendo "Eu não sei como: " junto com a representação interna da rotina seguido de "." e o endereço local. + Apresente uma mensagem de erro contendo "Erro. A rotina para que se " junto com a representação interna da rotina seguido de " ainda não foi definida." e o endereço local. Rotina para que se adicione uma rotina para umas rotinas usando um endereço local: Crie a rotina. @@ -818,7 +821,8 @@ Rotina para que se enderece um fragmento usando um endere Se a quantidade de caracteres for 1, Adicione 2 para o endereço; Retorne. - Apresente a mensagem de erro contendo "Erro #10. A quantidade de bytes do tipo '" junto com o nome deste tipo desta variável deste fragmento seguido de "' é incompatível com o registrador EAX.". + Apresente a mensagem de erro contendo "Erro #10. A quantidade de bytes do tipo '" + junto com o nome deste tipo desta variável deste fragmento seguido de "' é incompatível com o registrador EAX.". Rotina para que se enderece uns fragmentos usando um endereço: Se existir algum problema de compilação, retorne. @@ -1930,13 +1934,15 @@ Rotina para que se compile uma express Rotina para que se compile uma expressão matematica usando um percorredor (operador de multiplicação): Se existir algum problema de compilação, retorne. Se a variável desta expressão matematica for inexistente, - Apresente uma mensagem de erro contendo "Erro #32. Erro de sintaxe. Comando 'vezes' incorreto. Não é póssível multiplicar por '" junto com a frase desta expressão matematica seguido de "'." e o percorredor; + Apresente uma mensagem de erro contendo "Erro #32. Erro de sintaxe. Comando 'vezes' incorreto. Não é póssível multiplicar por '" + junto com a frase desta expressão matematica seguido de "'." e o percorredor; Retorne. Mova o percorredor (usando diretrizes de compilação). Compile um termo usando o percorredor. Se existir algum problema de compilação, retorne. Se a variável deste termo for inexistente, - Apresente a mensagem de erro contendo "Erro #33. Erro de sintaxe. Comando 'multiplicado por' incorreto. Não é póssível multiplicar por '" junto com a frase deste termo seguido de "'." e o percorredor; + Apresente a mensagem de erro contendo "Erro #33. Erro de sintaxe. Comando 'multiplicado por' incorreto. Não é póssível multiplicar por '" + junto com a frase deste termo seguido de "'." e o percorredor; Retorne. Adicione uma variável intermediária usando o nome do tipo desta expressão matematica e o caractere inicial deste segmento inicial deste percorredor. Adicione fragmentos diversos usando "Atribua" e a variável desta expressão matematica e "para" e a variável intermediária e o caractere inicial deste segmento inicial deste percorredor. @@ -1970,7 +1976,8 @@ Rotina para que se compile o cabe Compile as unidades semânticas desta rotina e os parâmetros desta rotina usando o percorredor. Converta as unidades semânticas desta rotina para a representação interna da rotina desta rotina. Se a representação interna da rotina desta rotina estiver no catálogo geral de rotinas, - Apresente uma mensagem de erro contendo "Erro #34. A rotina para que se '" junto com a representação interna da rotina desta rotina seguido de "' já foi definida anteriormente." + Apresente uma mensagem de erro contendo "Erro #34. A rotina para que se '" + junto com a representação interna da rotina desta rotina seguido de "' já foi definida anteriormente." e o endereço local desta rotina; Retorne. Catalogue a rotina usando as unidades semânticas desta rotina e o catálogo geral de rotinas. @@ -1989,7 +1996,8 @@ Rotina para que se compile o cabe Retorne. Converta as unidades semânticas desta rotina para a representação interna da rotina desta rotina. Se a representação interna da rotina desta rotina estiver no catálogo geral de rotinas, - Apresente a mensagem de erro contendo "Erro #37. A rotina para que se ''" junto com a representação interna da rotina desta rotina seguido de "' já havia sido definida anteriormente." e o endereço local desta rotina; + Apresente a mensagem de erro contendo "Erro #37. A rotina para que se ''" + junto com a representação interna da rotina desta rotina seguido de "' já havia sido definida anteriormente." e o endereço local desta rotina; Retorne. Catalogue a rotina usando as unidades semânticas desta rotina e o catálogo geral de rotinas. @@ -2008,17 +2016,20 @@ Rotina para que se compile o cabe Examine um nome usando o percorredor. Adicione uma segunda unidade semântica para as unidades semânticas desta rotina usando "'s " junto com o nome. Se o segmento inicial deste percorredor não for "para", - Apresente a mensagem de erro contendo "Erro #39. palavra-chave 'para' ausente. Encontrado a palavra: " junto com o segmento inicial deste percorredor seguido de "." e o percorredor; + Apresente a mensagem de erro contendo "Erro #39. palavra-chave 'para' ausente. Encontrado a palavra: " + junto com o segmento inicial deste percorredor seguido de "." e o percorredor; Retorne. \ not translated - no possessives em Spanish Adicione uma terceira unidade semântica para as unidades semânticas desta rotina usando "para". Converta as unidades semânticas desta rotina para uma representação interna da rotina. Se a representação interna da rotina estiver no catálogo geral de rotinas, - Apresente a mensagem de erro contendo "Erro #40. Rotina para que se '" junto com a representação interna da rotina seguido de "' já definida." e o endereço local desta rotina; + Apresente a mensagem de erro contendo "Erro #40. Rotina para que se '" + junto com a representação interna da rotina seguido de "' já definida." e o endereço local desta rotina; Retorne. \ not translated - no possessives em Spanish Catalogue a rotina usando as unidades semânticas desta rotina e o catálogo geral de rotinas. Mova o percorredor (usando diretrizes de compilação). Se o segmento inicial deste percorredor não for algum artigo indefinido, - Apresente a mensagem de erro contendo "Erro #41. Necessário artigo indefinido. Encontrado '" junto com o segmento inicial deste percorredor seguido de "'." e o percorredor; + Apresente a mensagem de erro contendo "Erro #41. Necessário artigo indefinido. Encontrado '" + junto com o segmento inicial deste percorredor seguido de "'." e o percorredor; Retorne. \ not translated - no possessives em Spanish Compile as unidades semânticas desta rotina e os parâmetros desta rotina usando o percorredor (artigo indefinido). Se o segmento inicial deste percorredor não estiver em branco, @@ -2032,7 +2043,8 @@ Rotina para que se compile o cabe Compile as unidades semânticas desta rotina e os parâmetros desta rotina usando o percorredor. Converta as unidades semânticas desta rotina para a representação interna da rotina desta rotina. Se a representação interna da rotina desta rotina estiver no catálogo geral de rotinas, - Apresente uma mensagem de erro contendo "Erro #43. Rotina para que se '" junto com a representação interna da rotina desta rotina seguido de "' já codificada." e o endereço local desta rotinas; + Apresente uma mensagem de erro contendo "Erro #43. Rotina para que se '" + junto com a representação interna da rotina desta rotina seguido de "' já codificada." e o endereço local desta rotinas; Retorne. Catalogue a rotina usando as unidades semânticas desta rotina e o catálogo geral de rotinas. @@ -2059,7 +2071,8 @@ Rotina para que se compile um valor literal usando um percorredor: Se o segmento inicial deste percorredor for algum string literal, Compile o valor literal usando o percorredor (cadeia de caracteres); Retorne. - Apresente uma mensagem de erro contendo "Erro interno #44. O valor '" junto com o segmento inicial deste percorredor seguido de "' não pode ser compilado." e o percorredor. + Apresente uma mensagem de erro contendo "Erro interno #44. O valor '" + junto com o segmento inicial deste percorredor seguido de "' não pode ser compilado." e o percorredor. Rotina para que se compile um valor literal usando um percorredor (valores booleanos): Se existir algum problema de compilação, retorne. @@ -2160,7 +2173,8 @@ Rotina para que se compile umas unidades sem Se o percorredor estiver sobre algum unidade semântica string, Compile as unidades semânticas e o parâmetros usando o percorredor (string de unidade semântica); Reitere. - Apresente uma mensagem de erro contendo "Erro #48. Rotina para que se '" junto com o segmento inicial deste percorredor seguido de "' não localizada." e o percorredor. + Apresente uma mensagem de erro contendo "Erro #48. Rotina para que se '" + junto com o segmento inicial deste percorredor seguido de "' não localizada." e o percorredor. Rotina para que se compile umas unidades semânticas e uns parâmetros usando um percorredor (artigo definido): Se existir algum problema de compilação, retorne. @@ -2186,7 +2200,8 @@ Rotina para que se compile umas unidades sem Se o segmento inicial deste percorredor for uma palavra-chave de designação, compile a parte designadora usando o percorredor e o parâmetro. Destrinche o parâmetro. Se o parâmetro estiver duplicada no parâmetros, - Apresente uma mensagem de erro contendo "Erro #49. O parâmetro '" junto com o nome deste parâmetro seguido de "' já foi declarado anteriormente." e o endereço local deste parâmetro; + Apresente uma mensagem de erro contendo "Erro #49. O parâmetro '" + junto com o nome deste parâmetro seguido de "' já foi declarado anteriormente." e o endereço local deste parâmetro; Retorne. Adicione uma unidade semântica para as unidades semânticas usando o tipo deste parâmetro. @@ -2227,7 +2242,8 @@ Rotina para que se compile a pr Compile a próxima instrução usando o percorredor (cláusula de isolamento); Retorne. Se o segmento inicial deste percorredor não for o início de alguma declaração, - Apresente uma mensagem de erro contendo "Erro #50. Esperado declaração. Encontrado: " junto com o segmento inicial deste percorredor seguido de "." e o percorredor; + Apresente uma mensagem de erro contendo "Erro #50. Esperado declaração. Encontrado: " + junto com o segmento inicial deste percorredor seguido de "." e o percorredor; Retorne. Compile a próxima instrução usando o percorredor (demais cláusulas). Se o segmento inicial deste percorredor não for o ponto final, @@ -2253,21 +2269,24 @@ Rotina para que se compile a pr Remova as aspas de a string. Mova o percorredor (usando diretrizes de compilação). Se o segmento inicial deste percorredor não for algum string literal, - Apresente uma mensagem de erro contendo "Erro #52. Nomes de bibliotecas devem ser escritos entre aspas. Encontrado: " junto com o segmento inicial deste percorredor seguido de "." e o percorredor; + Apresente uma mensagem de erro contendo "Erro #52. Nomes de bibliotecas devem ser escritos entre aspas. Encontrado: " + junto com o segmento inicial deste percorredor seguido de "." e o percorredor; Retorne. Atribua o segmento inicial deste percorredor para uma segunda string. Remova as aspas de a segunda string. Mova o percorredor (usando diretrizes de compilação). Adicione uma função para as DLLs usando a string e a segunda string. - Se o segmento inicial deste percorredor for "com", compile a próxima instrução usando o percorredor (palavra-chave 'processe' - cláusula com). - Se o segmento inicial deste percorredor for "usando", compile a próxima instrução usando o percorredor (palavra-chave 'processe' - cláusula com). - Se o segmento inicial deste percorredor for alguma palavra-chave de devolução, compile a próxima instrução usando o percorredor retornando um termo (palavra-chave 'processe' - cláusula retornando). - \Se o segmento inicial deste percorredor for "retornando", compile a próxima instrução usando o percorredor retornando um outro termo (palavra-chave 'processe' - cláusula retornando). - \Se o segmento inicial deste percorredor for uma palavra-chave de devolução, compile a próxima instrução usando o percorredor retornando um termo (palavra-chave 'processe' - cláusula retornando). + Se o segmento inicial deste percorredor for "com", + Compile a próxima instrução usando o percorredor (palavra-chave 'processe' - cláusula com). + Se o segmento inicial deste percorredor for "usando", + Compile a próxima instrução usando o percorredor (palavra-chave 'processe' - cláusula com). + Se o segmento inicial deste percorredor for alguma palavra-chave de devolução, + Compile a próxima instrução usando o percorredor retornando um termo (palavra-chave 'processe' - cláusula retornando). Adicione um fragmento usando a etiqueta de demanda externa e a função. Se o termo estiver vazio, retorne. Se a variável deste termo for inexistente, - Apresente a mensagem de erro contendo "Erro #53. A variável do termo '" junto com a frase deste termo seguido de "' não pode ser localizada." e o percorredor; + Apresente a mensagem de erro contendo "Erro #53. A variável do termo '" + junto com a frase deste termo seguido de "' não pode ser localizada." e o percorredor; Retorne. Adicione um segundo fragmento usando o etiqueta de obtenção do registrador EAX e a variável deste termo. @@ -2275,7 +2294,8 @@ Rotina para que se compile a pr Compile uma expressão matematica usando o percorredor. Se existir algum problema de compilação, retorne. Se a variável desta expressão matematica for inexistente, - Apresente uma mensagem de erro contendo "Erro #54. A variável da expressão matematica'" junto com a frase desta expressão matematica seguido de "' não pode ser localizada." e o percorredor; + Apresente uma mensagem de erro contendo "Erro #54. A variável da expressão matematica'" + junto com a frase desta expressão matematica seguido de "' não pode ser localizada." e o percorredor; Retorne. Se o tipo desta expressão matematica não puder ser reduzido para "ponteiro", Apresente a mensagem de erro contendo "Erro #55. Neste comando 'Processe' é necessário usar uma expressão matematica do tipo ponteiro." e o percorredor; @@ -2287,7 +2307,8 @@ Rotina para que se compile a pr Adicione um fragmento usando a etiqueta de demanda indireta e a variável desta expressão matematica. Se o termo estiver vazio, retorne. Se a variável deste termo for inexistente, - Apresente a mensagem de erro contendo "Erro #56. A variável do termo '" junto com a frase deste termo seguido de "' é inexistente." e o percorredor; + Apresente a mensagem de erro contendo "Erro #56. A variável do termo '" + junto com a frase deste termo seguido de "' é inexistente." e o percorredor; Retorne. Adicione um segundo fragmento usando o etiqueta de obtenção do registrador EAX e a variável deste termo. @@ -2314,10 +2335,12 @@ Rotina para que se compile a pr Compile uma expressão matematica usando o percorredor. Se existir algum problema de compilação, retorne. Se a variável desta expressão matematica for inexistente, - Apresente uma mensagem de erro contendo "Erro #58. A variável da expressão matematica '" junto com a frase desta expressão matematica seguido de "' é inexistente." e o percorredor; + Apresente uma mensagem de erro contendo "Erro #58. A variável da expressão matematica '" + junto com a frase desta expressão matematica seguido de "' é inexistente." e o percorredor; Retorne. Se o tipo desta expressão matematica não for valor empilhável, - Apresente a mensagem de erro contendo "Erro #59. O tipo '" junto com o nome deste tipo desta expressão matematica seguido de "' da expressão matematica é um valor empilhável." e o percorredor; + Apresente a mensagem de erro contendo "Erro #59. O tipo '" + junto com o nome deste tipo desta expressão matematica seguido de "' da expressão matematica é um valor empilhável." e o percorredor; Retorne. Se o segmento inicial deste percorredor for algum operador de continuidade, compile a próxima instrução usando o percorredor (palavra-chave 'processe' - cláusula com). Adicione um fragmento usando o etiqueta de inserção de valor [na stack] e a variável desta expressão matematica. @@ -2347,14 +2370,16 @@ Rotina para que se compile a pr Se a rotina for inexistente, converta as unidades semânticas para uma representação interna da rotina. Destrua as unidades semânticas. Se a rotina for inexistente, - Apresente uma mensagem de erro contendo "Erro #61. A rotina para que se '" junto com a representação interna da rotina seguido de "' não existe." e o percorredor; + Apresente uma mensagem de erro contendo "Erro #61. A rotina para que se '" + junto com a representação interna da rotina seguido de "' não existe." e o percorredor; Retorne. Se o sinalizador de deliberação desta rotina não estiver ativo, Apresente a mensagem de erro contendo "Erro #62. Necessário utilizar um decisor." e o percorredor; Retorne. \ Se o segmento inicial deste percorredor não for a vírgula, apresente a mensagem de erro contendo "Acho que você esqueceu de uma vírgula, eu achei isso aqui: " junto com o segmento inicial deste percorredor seguido de "." e o percorredor; Retorne. Se o segmento inicial deste percorredor não for qualquer separador de comandos, - Apresente a mensagem de erro contendo "Erro #63. Necessário incluir uma vírgula ao invés de: " junto com o segmento inicial deste percorredor seguido de "." e o percorredor; + Apresente a mensagem de erro contendo "Erro #63. Necessário incluir uma vírgula ao invés de: " + junto com o segmento inicial deste percorredor seguido de "." e o percorredor; Retorne. Adicione um fragmento usando a etiqueta de demanda interna e a rotina. Se o sinalizador estiver ativo, adicione um segundo fragmento usando a etiqueta de negação lógica. @@ -2385,7 +2410,8 @@ Rotina para que se determine se um subtexto Rotina para que se compile a próxima instrução usando um percorredor (cláusula de decodificação): Mova o percorredor (usando diretrizes de compilação). Se o segmento inicial deste percorredor não for algum valor hexadecimal literal, - Apresente uma mensagem de erro contendo "Erro #65. Encontrado '" junto com o segmento inicial deste percorredor seguido de "'. Esperado instrução hexadecimal" e o percorredor; + Apresente uma mensagem de erro contendo "Erro #65. Encontrado '" + junto com o segmento inicial deste percorredor seguido de "'. Esperado instrução hexadecimal" e o percorredor; Retorne. Adicione um fragmento usando o etiqueta de decodificação. Atribua o segmento inicial deste percorredor para um parte da cifra binária. @@ -2582,13 +2608,15 @@ Rotina para que se compile uma refer Se o percorredor está sobre algum unidade semântica string, Compile a referência da rotina usando o percorredor (string de unidade semântica); Reitere. - Apresente uma mensagem de erro contendo "Erro #86. O termo '" junto com o segmento inicial deste percorredor seguido de "' não é válido neste tipo de comando." e o percorredor. + Apresente uma mensagem de erro contendo "Erro #86. O termo '" + junto com o segmento inicial deste percorredor seguido de "' não é válido neste tipo de comando." e o percorredor. [Reitere.] Rotina para que se compile uma referência da rotina usando um percorredor (decide): Mova o percorredor (usando diretrizes de compilação). Se o segmento inicial deste percorredor não for algum comando condicional, - Apresente uma mensagem de erro contendo "Erro #87. Esperava encontrar: 'Para que se decisa SE xxxx'. Encontrado: 'Para que se decida '" junto com o segmento inicial deste percorredor seguido de "' '." e o percorredor; + Apresente uma mensagem de erro contendo "Erro #87. Esperava encontrar: 'Para que se decisa SE xxxx'. Encontrado: 'Para que se decida '" + junto com o segmento inicial deste percorredor seguido de "' '." e o percorredor; Retorne. Mova o percorredor (usando diretrizes de compilação). @@ -2607,13 +2635,15 @@ Rotina para que se compile uma refer Se o sinalizador estiver ativo, compile a referência da rotina usando o percorredor (artigo indefinido). Se o sinalizador não estiver ativo, compile a referência da rotina usando o percorredor (artigo definido). Se o segmento inicial deste percorredor não for algum possessivo inglês, - Apresente uma mensagem de erro contendo "Erro #88. O compilador esperava encontrar um 's. Encontrado: '" junto com o segmento inicial deste percorredor seguido de "'." e o percorredor; + Apresente uma mensagem de erro contendo "Erro #88. O compilador esperava encontrar um 's. Encontrado: '" + junto com o segmento inicial deste percorredor seguido de "'." e o percorredor; Retorne. Mova o percorredor (usando diretrizes de compilação). Examine um nome usando o percorredor. Adicione uma segunda unidade semântica para a referência da rotina usando "'s " junto com o nome. Se o segmento inicial deste percorredor não for "para", - Apresente a mensagem de erro contendo "Erro #89. O compilador esperava encontrar a palavra 'para'. Encontrado: '" junto com o segmento inicial deste percorredor seguido de "'." e o percorredor; + Apresente a mensagem de erro contendo "Erro #89. O compilador esperava encontrar a palavra 'para'. Encontrado: '" + junto com o segmento inicial deste percorredor seguido de "'." e o percorredor; Retorne. Adicione uma terceira unidade semântica para a referência da rotina usando "para". Mova o percorredor (usando diretrizes de compilação). @@ -2687,11 +2717,12 @@ Rotina para que se compile um termo usando um percorredor (an Se o segmento inicial deste percorredor for algum valor literal, Compile o termo usando o percorredor (valor literal); Retorne. - Apresente uma mensagem de erro contendo "Erro #95. O Compilador esperava encontrar um termo. Encontrado: '" junto com o segmento inicial deste percorredor seguido de "'." e o percorredor. + Apresente uma mensagem de erro contendo "Erro #95. O Compilador esperava encontrar um termo. Encontrado: '" + junto com o segmento inicial deste percorredor seguido de "'." e o percorredor. Rotina para que se compile um termo usando um percorredor (redirecionamentos de endereços - campos de estruturas): Se a variável deste termo for inexistente, - Apresente uma mensagem de erro contendo "Erro #96. Termo inexistente. Consulte a rotina para que se compile um termo usando um percorredor (redirecionamentos de endereços - campos de estruturas). " e o percorredor; + Apresente uma mensagem de erro contendo "Erro #96. Termo inexistente." e o percorredor; Retorne. Atribua o nome deste tipo do conteúdo deste tipo deste termo ao nome do tipo deste termo. Atribua o tipo do conteúdo deste tipo deste termo ao tipo deste termo. @@ -2701,7 +2732,8 @@ Rotina para que se compile um termo usando um percorredor (redirecionamentos de Rotina para que se compile um termo usando um percorredor (cláusula de redirecionamento): Se existir algum problema de compilação, retorne. Se a variável deste termo for inexistente, - Apresente uma mensagem de erro contendo "Erro #97. Cláusula redirecionamento inválida. A variável '" junto com a frase deste termo seguido de "' deste termo não foi encontrada." e o percorredor; + Apresente uma mensagem de erro contendo "Erro #97. Cláusula redirecionamento inválida. A variável '" + junto com a frase deste termo seguido de "' deste termo não foi encontrada." e o percorredor; Retorne. Se o tipo do conteúdo deste tipo deste termo for inexistente, Apresente a mensagem de erro contendo "Erro #98. O tipo do conteúdo deste termo não foi encontrado." e o percorredor; @@ -2728,7 +2760,8 @@ Rotina para que se compile um termo usando um percorredor (subtra Compile uma segunda termo usando o percorredor. Se existir algum problema de compilação, retorne. Se a variável desta segunda termo for inexistente, - Apresente uma mensagem de erro contendo "Erro #99. Comando 'inverta' inválido. A variável: " junto com o frase desta segunda termo seguido de "' não foi encontrada." e o percorredor; + Apresente uma mensagem de erro contendo "Erro #99. Comando 'inverta' inválido. A variável: " + junto com o frase desta segunda termo seguido de "' não foi encontrada." e o percorredor; Retorne. Adicione uma variável intermediária usando o nome do tipo desta segunda termo e o caractere inicial deste segmento inicial deste percorredor. Adicione fragmentos diversos usando "Atribua" e a variável desta segunda termo e "para" e a variável intermediária e o endereço local desta segunda termo. @@ -2753,10 +2786,12 @@ Rotina para que se compile um termo usando um percorredor (nova vari Se o segmento inicial deste percorredor for uma palavra-chave de designação, compile a parte designadora usando o percorredor e a variável local. Destrinche a variável local. Se a variável local estiver duplicada em os parâmetros desta rotina utilizada atualmente, - Apresente a mensagem de erro contendo "Erro #101. O parâmetro: " junto com o nome desta variável local seguido de "' já está sendo usado como parâmetro." e o endereço local desta variável local; + Apresente a mensagem de erro contendo "Erro #101. O parâmetro: " + junto com o nome desta variável local seguido de "' já está sendo usado como parâmetro." e o endereço local desta variável local; Retorne. Se a variável local estiver duplicada em as variáveis locais desta rotina utilizada atualmente, - Apresente a mensagem de erro contendo "Erro #102. A variável local " junto com o nome desta variável local seguido de "' já foi declarada nesta rotina. Utilize um nome de variável diferente." e o endereço local desta variável local; + Apresente a mensagem de erro contendo "Erro #102. A variável local " + junto com o nome desta variável local seguido de "' já foi declarada nesta rotina. Utilize um nome de variável diferente." e o endereço local desta variável local; Retorne. Elimine apelidos duplicados usando a variável local e o catálogo de apelidos desta rotina utilizada atualmente. Atribua a variável local à variável deste termo. @@ -2768,14 +2803,16 @@ Rotina para que se compile um termo usando um percorredor (adi Mova o percorredor (usando diretrizes de compilação). Compile o termo usando o percorredor. Se a variável deste termo for inexistente, - Apresente uma mensagem de erro contendo "Erro #103. Comando 'Posigate' inválido. O termo da variável'" junto com a frase deste termo seguido de "' não foi localizado." e o percorredor; + Apresente uma mensagem de erro contendo "Erro #103. Comando 'Posigate' inválido. O termo da variável'" + junto com a frase deste termo seguido de "' não foi localizado." e o percorredor; Retorne. Limpe a frase deste termo. Rotina para que se compile um termo usando um percorredor (possessivo - magnitude): Se existir algum problema de compilação, retorne. Se a variável deste termo for inexistente, - Apresente uma mensagem de erro contendo "Erro #104. Comando magnitude inválido. A variável: " junto com a frase deste termo seguido de "'não foi localizada." e o percorredor; + Apresente uma mensagem de erro contendo "Erro #104. Comando magnitude inválido. A variável: " + junto com a frase deste termo seguido de "'não foi localizada." e o percorredor; Retorne. Adicione um valor literal para os valores literais usando o caractere inicial deste segmento inicial deste percorredor. Converta a quantidade de caracteres deste tipo deste termo para os data deste valor literal. @@ -2787,7 +2824,8 @@ Rotina para que se compile um termo usando um percorredor (possessivo - magnitud Rotina para que se compile um termo usando um percorredor (possessivo - conteúdo): Se existir algum problema de compilação, retorne. Se a variável deste termo for inexistente, - Apresente uma mensagem de erro contendo "Erro #105. Palavra-chave 'conteúdo' detectada, mas o termo da variável: " junto com a frase deste termo seguido de "' não foi devidamente definido." e o percorredor; + Apresente uma mensagem de erro contendo "Erro #105. Palavra-chave 'conteúdo' detectada, mas o termo da variável: " + junto com a frase deste termo seguido de "' não foi devidamente definido." e o percorredor; Retorne. Se o tipo deste termo não puder ser reduzido para "ponteiro", Apresente a mensagem de erro contendo "Erro #106. A palavra 'conteúdo' exige valores do tipo 'ponteiro'." e o percorredor; @@ -2797,7 +2835,8 @@ Rotina para que se compile um termo usando um percorredor (possessivo - conte Rotina para que se compile um termo usando um percorredor (possessivo - endereçamento): Se existir algum problema de compilação, retorne. Se a variável deste termo for inexistente, - Apresente uma mensagem de erro contendo "Erro #107. palavra-chave 'endereçamento' detectada, mas a variável do termo: " junto com a frase deste termo seguido de " não foi localizada." e o percorredor; + Apresente uma mensagem de erro contendo "Erro #107. palavra-chave 'endereçamento' detectada, mas a variável do termo: " + junto com a frase deste termo seguido de " não foi localizada." e o percorredor; Retorne. Adicione uma variável intermediária usando "ponteiro" e o caractere inicial deste segmento inicial deste percorredor. Adicione um fragmento usando o etiqueta de carregamento de endereço e a variável deste termo e a variável intermediária. @@ -2830,16 +2869,22 @@ Rotina para que se compile um termo usando um percorredor (possessivos): Rotina para que se compile um termo usando um percorredor (proporção de execução): Se existir algum problema de compilação, retorne. Se a variável deste termo for inexistente, - Apresente uma mensagem de erro contendo "Erro #108. Operador '/' detectado, mas o numerador do termo: " junto com a frase deste termo seguido de " não foi localizada." e o percorredor; + Apresente uma mensagem de erro contendo "Erro #108. Operador '/' detectado, mas o numerador do termo: " + junto com a frase deste termo seguido de " não foi localizada." e o percorredor; Retorne. Mova o percorredor (usando diretrizes de compilação). Compile um segundo termo usando o percorredor. Se existir algum problema de compilação, retorne. Se a variável deste segundo termo for inexistente, - Apresente a mensagem de erro contendo "Erro #109. Operador '/' detectado, mas o denominador do termo: " junto com o frase deste segundo termo seguido de "' não foi localizado." e o percorredor; + Apresente a mensagem de erro contendo "Erro #109. Operador '/' detectado, mas o denominador do termo: " + junto com o frase deste segundo termo seguido de "' não foi localizado." e o percorredor; Retorne. Adicione uma variável intermediária usando "proporção" e o caractere inicial deste segmento inicial deste percorredor. - Adicione fragmentos diversos usando "Atribua" e a variável deste termo e "e" e a variável deste segundo termo e "para" e a variável intermediária e o caractere inicial deste segmento inicial deste percorredor. + Adicione fragmentos diversos usando "Atribua" + e a variável deste termo + e "e" e a variável deste segundo termo + e "para" e a variável intermediária + e o caractere inicial deste segmento inicial deste percorredor. Atribua a variável intermediária à variável deste termo. Limpe a frase deste termo. @@ -2888,7 +2933,8 @@ Rotina para que se compile um termo usando um percorredor e uma vari Rotina para que se compile um termo usando um percorredor e uma variável nome e um article segmento inicial (reversão de contrações de variáveis do possessivo): \ Rotina nova criada pelo Dahn para version 2 Encontre uma variável usando a variável nome. - Se a variável for inexistente, apresente uma mensagem de erro contendo "Erro #112. Não foi possível encontrar a variável: " junto com a variável nome seguido de ".". + Se a variável for inexistente, + Apresente uma mensagem de erro contendo "Erro #112. Não foi possível encontrar a variável: " junto com a variável nome seguido de ".". Atribua a variável à variável deste termo. Atribua "o " à frase deste termo. Acrescente a variável nome para a frase deste termo. @@ -2906,10 +2952,12 @@ Rotina para que se compile um termo usando um percorredor e uma vari Se o segmento inicial deste percorredor for uma palavra-chave de designação, compile a parte designadora usando o percorredor e a variável local. Destrinche a variável local. Se a variável local estiver duplicada em os parâmetros desta rotina utilizada atualmente, - Apresente uma mensagem de erro contendo "Erro #113. O termo: " junto com o nome desta variável local seguido de "' já está sendo usado como parâmetro." e o endereço local desta variável local; + Apresente uma mensagem de erro contendo "Erro #113. O termo: " + junto com o nome desta variável local seguido de "' já está sendo usado como parâmetro." e o endereço local desta variável local; Retorne. Se a variável local estiver duplicada em as variáveis locais desta rotina utilizada atualmente, - Apresente a mensagem de erro contendo "Erro #114. O termo: " junto com o nome desta variável local seguido de "' já está sendo usado coma variável local." e o endereço local desta variável local; + Apresente a mensagem de erro contendo "Erro #114. O termo: " + junto com o nome desta variável local seguido de "' já está sendo usado coma variável local." e o endereço local desta variável local; Retorne. Elimine apelidos duplicados usando a variável local e o catálogo de apelidos desta rotina utilizada atualmente. Atribua a variável local à variável deste termo. @@ -2950,10 +2998,10 @@ Rotina para que se compile um termo usando um percorredor e um campo de estrutur Atribua a rotina de função deste campo de estrutura para uma rotina. Atribua o último parâmetro destes parâmetros desta rotina para um parâmetro. Se o parâmetro for inexistente, - Apresente uma mensagem de erro contendo "Erro #115. Parâmetro inexistente. Consulte a rotina para que se compile um termo usando um percorredor e um campo de estrutura (função)." e o percorredor; + Apresente uma mensagem de erro contendo "Erro #115. Parâmetro inexistente. " e o percorredor; Retorne. Se o tipo deste parâmetro for inexistente, - Apresente a mensagem de erro contendo "Erro #116. Tipo de parâmetro inexistente. Consulte a rotina para que se compile um termo usando um percorredor e um campo de estrutura (função)" e o percorredor; + Apresente a mensagem de erro contendo "Erro #116. Tipo de parâmetro inexistente. " e o percorredor; Retorne. Adicione uma variável intermediária usando o nome deste tipo deste parâmetro e o caractere inicial deste segmento inicial deste percorredor. Adicione um fragmento usando o etiqueta de inserção de endereço [na stack] e a variável intermediária. @@ -2980,17 +3028,22 @@ Rotina para que se compile um termo usando um percorredor e um nome (possessivo Compile o termo usando o percorredor e o campo de estrutura; Retorne. Se a variável deste termo for inexistente, - Apresente uma mensagem de erro contendo "Erro #117. A variável do termo '" junto com a frase deste termo seguido de "' não localizada." e o percorredor; + Apresente uma mensagem de erro contendo "Erro #117. A variável do termo '" + junto com a frase deste termo seguido de "' não localizada." e o percorredor; Retorne. Se o tipo puder ser reduzido para "ponteiro", atribua o tipo do conteúdo deste tipo ao tipo. Se o tipo for inexistente, - Apresente a mensagem de erro contendo "Erro #118. O tipo: " junto com o nome seguido de "' não foi localizada na estrutura: " junto com o nome deste tipo deste termo seguido de "." e o percorredor; + Apresente a mensagem de erro contendo "Erro #118. O tipo: " + junto com o nome seguido de "' não foi localizada na estrutura: " + junto com o nome deste tipo deste termo seguido de "." e o percorredor; Retorne. Itere. Se existir algum problema de compilação, retorne. Obtenha um campo desde os campos deste tipo. Se o campo for inexistente, - Apresente a mensagem de erro contendo "Erro #119. O campo '" junto com o nome seguido de "' não foi localizado na estrutura '" junto com o nome deste tipo deste termo seguido de "'." e o percorredor; + Apresente a mensagem de erro contendo "Erro #119. O campo '" + junto com o nome seguido de "' não foi localizado na estrutura '" + junto com o nome deste tipo deste termo seguido de "'." e o percorredor; Retorne. Encontre um campo de estrutura-membro usando "" e o tipo deste campo e o nome. Se o campo de estrutura-membro estiver vazio, reitere. @@ -3019,7 +3072,8 @@ Rotina para que se converta umas unidades sem Rotina para que se converta um termo por concatenação usando um percorredor: \\ concatenação \ used for right-lado followed by operand Se a variável deste termo for inexistente, - Apresente uma mensagem de erro contendo "Erro #120. A variável do termo '" junto com a frase deste termo seguido de "' não pode ser encontrada." e o percorredor; + Apresente uma mensagem de erro contendo "Erro #120. A variável do termo '" + junto com a frase deste termo seguido de "' não pode ser encontrada." e o percorredor; Retorne. Se o tipo deste termo puder ser reduzido para "string", retorne. Se o tipo deste termo puder ser reduzido para "texto", retorne. @@ -3327,7 +3381,8 @@ Rotina para que se determine se um percorredor Diga não. Rotina para que se determine se uma string deveria ser expandida usando uma segunda string (análise de termos compostos): - Se a string não for uma preposição, diga não. + Se a string não for "partir", diga não. + Se a string não for "partindo", diga não. \Se a string for alguma locução prepositiva, diga sim. Se a segunda string não for "de", diga não. Diga sim. @@ -4357,7 +4412,7 @@ Rotina para que se encontre uma DLL usando uma string: Se o nome desta DLL for a string, retorne. Reitere. -Rotina para que se encontre um endereço completo e um número da linha usando um endereço de byte : +Rotina para que se encontre um endereço completo e um número da linha usando um endereço de byte: Limpe o endereço completo. Atribua 0 ao número da linha. Encontre um arquivo fonte usando o endereço de byte . @@ -4445,9 +4500,12 @@ Rotina para que se encontre um arquivo fonte usando um endere Retorne. Itere. Obtenha o arquivo fonte desde os arquivos fontes. - Se o arquivo fonte for inexistente, retorne. - Se o endereço de byte for menor do que o caractere inicial deste trecho deste arquivo fonte, reitere. - Se o endereço de byte for maior do que o caractere final deste trecho deste arquivo fonte, reitere. + Se o arquivo fonte for inexistente, + Retorne. + Se o endereço de byte for menor do que o caractere inicial deste trecho deste arquivo fonte, + Reitere. + Se o endereço de byte for maior do que o caractere final deste trecho deste arquivo fonte, + Reitere. Rotina para que se encontre um tipo e um apelido usando um nome: Esvazie o tipo. @@ -4546,10 +4604,13 @@ Rotina para que se obtenha um endere Atribua -1 ao endereço desta rotina. Encontre uma segunda rotina usando o representação de emprego desta rotina e o catálogo geral de rotinas. Se a segunda rotina for inexistente, - Apresente uma mensagem de erro contendo "Erro #121. Rotina: " junto com o representação de emprego desta rotina seguido de "' não encontrada. (palavra-chave empregue)" e o endereço local desta rotina; + Apresente uma mensagem de erro contendo "Erro #121. Rotina: " junto com + a representação de emprego desta rotina seguido de "' não encontrada. (palavra-chave empregue)" + e o endereço local desta rotina; Retorne. Se o endereço desta segunda rotina for -1, - Apresente a mensagem de erro contendo "Erro #122. Referência recursiva na palavra-chave 'empregue'." e o endereço local desta rotina; + Apresente a mensagem de erro contendo "Erro #122. Referência recursiva na palavra-chave 'empregue'." + e o endereço local desta rotina; Retorne. Obtenha o endereço usando a segunda rotina. Atribua o endereço ao endereço desta rotina. @@ -4605,7 +4666,8 @@ Rotina para que se catalogue uma vari Se existir algum problema de compilação, retorne. Se a variável global for inexistente, retorne. Se o nome desta variável global estiver no catálogo de variáveis globais, - Apresente uma mensagem de erro contendo "Erro #123. '" junto com o nome desta variável global seguido de "' é uma variável variável global duplicada." e o endereço local desta variável global; + Apresente uma mensagem de erro contendo "Erro #123. '" + junto com o nome desta variável global seguido de "' é uma variável variável global duplicada." e o endereço local desta variável global; Retorne. Catalogue a variável global usando o nome desta variável global e o catálogo de variáveis globais. @@ -4613,7 +4675,8 @@ Rotina para que se catalogue um valor literal: Se existir algum problema de compilação, retorne. Se o valor literal for inexistente, retorne. Se o nome deste valor literal estiver no catálogo de variáveis hexadecimais, - Apresente uma mensagem de erro contendo "Erro interno #124. O nome deste valor literal já foi catalogado anteriormente" e o endereço local deste valor literal; + Apresente uma mensagem de erro contendo "Erro interno #124. O nome deste valor literal já foi catalogado anteriormente" + e o endereço local deste valor literal; Retorne. Catalogue o valor literal usando o nome deste valor literal e o catálogo de variáveis hexadecimais. @@ -4679,7 +4742,8 @@ Rotina para que se catalogue um tipo usando um nome: [Se o existing tipo já existir, então:] Atribua o endereço local deste tipo para um endereço local. Se o endereço local for inexistente, atribua o endereço local deste existing tipo ao endereço local. \ point the error to a type in the source code, not a generated type - Se o endereço local não for inexistente, Apresente uma mensagem de erro contendo "Erro #125. Tipo: " junto com o nome seguido de "' duplicado." e o endereço local. + Se o endereço local não for inexistente, + Apresente uma mensagem de erro contendo "Erro #125. Tipo: " junto com o nome seguido de "' duplicado." e o endereço local. \Rotina para que se inicialize o compilador: \Rotina em branco. Serve apenas para fazer com que o código fique "simétrico" @@ -5214,14 +5278,14 @@ Rotina para que se mova um percorredor (englobando tudo): Retorne. Mova o percorredor (símbolos conectivos). -Rotina para que se mova um percorredor (usando diretrizes de compilação): \ talvez aqui conserte o subtraia - Itere. +Rotina para que se mova um percorredor (usando diretrizes de compilação): \ talvez aqui conserte o comando "subtraia" + [Itere.] Se o sinalizador de erros deste compilador estiver ativo, Limpe o segmento inicial deste percorredor; Retorne. Mova o percorredor retornando uma string de erro (englobando tudo). Se a string de erro não estiver em branco, - Apresente uma mensagem de erro contendo a string de erro e o caractere inicial deste segmento inicial deste percorredor; + Apresente uma mensagem de erro contendo a string de erro e o caractere inicial deste segmento inicial deste percorredor; \#191 Retorne. \Se o segmento inicial deste percorredor for "del", recue o percorredor; Retorne. \ Spanish contraction "del"; fudged para "de l", short por "de el" Se o segmento inicial deste percorredor estiver em branco, retorne. @@ -7083,4 +7147,4 @@ Rotina para que se determine se um percorredor Se o percorredor não for sobre algum possessivo reverso, diga não. Diga sim. -\finalmente acabou \ No newline at end of file +\finalmente acabou