Version 7 of Once reglas

Updated 2003-05-27 14:18:44

Juan-Carlos Gil (27 May 2003) Yet another Tcl Endekalogue translation, this time to spanish.

I've added some small clarifications where I've felt they fit. I've also referenced the english words for many common terms (quote) just to make it clear what the translation refer to; moreover, sometimes I've left the english term (notably in the case of script).


Las siguientes reglas definen la sintaxis y la sem�ntica del lenguaje Tcl:

1. Comandos. Un script Tcl es una cadena con uno o m�s comandos. Los caracteres punto y coma as� como los finales de l�nea son separadores de comandos, a menos que se protejan (o "escapen"; quote) como se describe m�s abajo.

2. Evaluaci�n. Los comandos se eval�an en dos etapas. En la primera, el int�rprete de Tcl fracciona el comando en palabras (words) y hace las sustituciones pertinentes como se describe m�s abajo. Estas sustituciones se efect�an para todos los comandos de id�ntica forma. La primera palabra se utiliza para localizar un procedimiento (command procedure) que ser� el encargado de ejecutar el comando, y al que se le pasan el resto de las palabras como "argumentos". El procedimiento es libre de interpretar cada una de las palabras como quiera (como enteros, nombres de variables, listas o scripts Tcl); de hecho, distintos procedimientos interpretan sus palabras ("argumentos") de forma diferente.

3. Palabras. Las palabras de un comando se separan por caracteres de tipo espacio vac�o (white space: espacios, tabuladores y finales de l�nea), salvo los finales de l�nea, que son separadores de comandos.

4. Comillas dobles. Si el primer caracter de una palabra es una comilla doble (<<">>), entonces la palabra acaba en la siguiente comilla doble. Si entre ambas comillas dobles aparecen puntos y comas, corchetes cuadrados derechos o caracteres de espacio vac�o (incluyendo en este caso los finales de l�nea), �stos son tratados como caracteres ordinarios y, por tanto, como parte de la palabra.

5. Llaves. Si el primer caracter de una palabra es una llave izquierda (<<{>>), entonces la palabra acaba en la llave derecha (<<}>>) que casa con la primera. Las llaves se anidan dentro de la palabra: para cada llave izquieda adicional debe haber una llave derecha emparejada; sin embargo, cualquier llave tanto izquieda como derecha dentro de la palabra que este protejida al estar precedida por una barra invertida (backslash, <<\>>) no cuenta para identificar el emparejamiento de llaves. No se efect�an sustituciones en los caracteres entre las llaves, salvo por la sustituci�n especial de barra invertida seguida por final de l�nea descrita m�s abajo; adem�s, los puntos y comas, finales de l�nea, corchetes cuadrados derechos, o caracteres de espacio vac�o no se interpretan aqu� de ninguna forma especial.

6. Sustituci�n de comandos. Si una palabra contiene un corchete cuadrado izquierdo (<<&#91;>>), entonces Tcl efect�a sustituci�n de comandos. Para ello, el int�rprete de Tcl es invocado recursivamente con el objeto de procesar los caracteres que siguen al corchete cuadrado izquierdo como un script Tcl. Dicho script puede contener cualquier n�mero de comandos y debe estar terminado por un corchete cuadrado derecho (<<]>>). El resultado del script (esto es, el resultado de su �ltimo comando) se sustituye dentro de la palabra en lugar de ambos corchetes cuadrados y todos los caracteres entre ellos. Puede haber cualquier n�mero de sustituciones de comandos dentro de una palabra. Notes� que la sustituci�n de comandos no se efect�a en palabras dentro de llaves.

7. Sustituci�n de variables. Si una palabra contiene un s�mbolo de dolar (<<$>>), entonces Tcl efect�a sustituci�n de variables: el s�mbolo de dolar y los caracteres que siguen se sustituyen dentro de la palabra por el valor de una variable. La sustituci�n de variables puede tener una de las siguientes tres formas:

$nombre: nombre es el nombre de una variable escalar; el nombre es una secuencia de uno o m�s caracteres que pueden ser letras, d�gitos, el caracter subrayado (<<_>>) o el separador de espacios de nombres (namespaces, dos o m�s caracteres dos puntos).

$nombre(�ndice) nombre es el nombre de una variable tabular (array) y el �ndice es el nombre de un elemento dentro de la tabla. nombre debe estar formado por letras, d�gitos, caracteres subrayado o separadores de espacios de nombres y puede ser la cadena vac�a. Las sustituciones de comando, de variable y de barra invertida tienen lugar en los caracteres de �ndice.

${nombre} nombre es el nombre de una variable escalar que puede contener cualquier caracter excepto el de llave derecha.

8. Sustituci�n de barra invertida. Si una barra invertida (<<\>>) aparece dentro de una palabra, entonces tiene lugar la sustituci�n de barra invertida. En todos los casos excepto en los que se detallan exp�citamente a continuaci�n, la barra invertida se elimina y el caracter siguiente se trata como un caracter ordinario que se deja dentro de la palabra. Este mecanismo permite que determinados caracteres como las comillas, corchetes cuadrados derechos o s�mbolos de dolar aparezcan en las palabras sin desencadenar ning�n procesamiento especial. La tabla que sigue detalla las secuencias de barra invertida que se procesan de forma especial junto al valor que sustituye a cada secuencia:

\ a Alerta audible (campana) (0x7).

\ b Retroceso (0x8).

\ f Avance de p�gina (0xc).

\ n L�nea nueva (0xa).

\ r Retorno de carro (0xd).

\ t Tabulador (0x9).

\ v Tabulador vertical (0xb).

\ <l�nea nueva>espacio vac�o Un �nico espacio sustituye la secuencia formada por una barra invertida, un caracter de l�nea nueva y todos los espacios o tabuladores que sigan. Esta sustituci�n de barra invertida es especial en el sentido de que tiene lugar en una pasada especial antes de que el comando se analice (parse). Esto significa que esta sustituci�n tiene efecto incluso dentro de llaves y que el espacio resultante separar� palabras a menos que se encuentre dentro de comillas o llaves.

\ \ Barra invertida (<<\>>).

\ ooo Los d�gitos octales ooo (uno, dos o tres) dan el c�digo de ocho bits del caracter Unicode que ser� incluido.

\ xhh Los d�gitos hexadecimales hh dan el c�digo de dieciseis bits del caracter Unicode que ser� incluido. Cualquier n�mero de d�gitos hexadecimales pueden aparecer, si bien todos se ignoran salvo los dos �ltimos (esto es, el resultado es siempre un valor de un octeto): los bits superiores del caracter Unicode ser�n siempre 0.

\ uhhhh Los d�gitos hexadecimales hhhh (uno, dos, tres o cuatro) dan el c�digo de dieciseis bits del caracter Unicode que ser� incluido.

9. Comentarios. Si un caracter hash (<<#>>) aparece en una posici�n donde Tcl espera el primer caracter de la primera palabra de un comando, entonces el propio caracter hash y el resto de caracteres que le siguen hasta el siguiente final de l�nea se consideran un comentario y son ignorados. Notes� que el caracter de comentarios s�lo tiene esta interpretaci�n cuando aparece al principio de un comando.

10. Orden de las sustituciones. En el proceso de crear las palabras de un comando, Tcl procesa cada caracter una y s�lo una vez. Por ejemplo, si tiene lugar una sustituci�n de variable, el valor as� sustitu�do no sufre nuevas sustituciones: se incorpora a su palabra tal cual. Si ocurre la sustituci�n de un comando, el comando anidado se procesa en su totalidad por una llamada recursiva al int�rprete de Tcl sin que se efect�en sustituciones ni antes de invocar la llamada recursiva ni sobre el resultado del script anidado.

Las sustituciones tienen lugar de izquierda a derecha y cada una se eval�a completamente antes de proceder con la siguiente. Por tanto, la secuencia siguiente:

 set y [set x 0][incr x][incr x]

siempre har� que la variable y tenga el valor 012.

11. Sustituciones y fronteras entre palabras. Las sustituciones no afectan a las fronteras entre palabras de un comando. Por ejemplo, como resultado de una sustituci�n de variable su valor completo forma parte de una �nica palabra incluso si el valor de la variable contiene espacios.


Category Documentation |