por Emre Demiralp Sobre el Author: Soy un estudiante en el Istanbul American Robert College, y a la vez, uno de los administradores del Computer Labs en la Faculty of Arts and Sciences en la Istanbul Technical University. El sistema operativo que domina sobre todos los dem�s en estos laboratorios es LINUX. Intereses: PovRay y PostScript, animaci�n, dise�o de CDs, programaci�n, holograf�a, etc.. usuario de Linux desde 1994. Contenidos: |
Resumen:
Gota a gota, se hace un lago -Proverbio Turco-. El autor describe la pila de operandos del lenguaje PostScript. Se presentan aqu� las manipulaciones de la pila y los operadores matem�ticos. Este art�culo no cubre todas las propiedades de la pila de operandos. Los art�culos siguientes continuar�n hablando acerca de ello.
Este es el segundo de una serie de art�culos acerca de PostScript. El prop�sito principal de este art�culo es comentar el manejo de la pila. La pila de operandos es quiz�s la parte m�s importante de PostScript. Asignaciones, operaciones aritm�ticas o matem�ticas, bucles y operaciones l�gicas son manejadas en esta porci�n de memoria espec�fica. �S�! La pila es una regi�n especial de memoria que PostScript usa para ejecutar casi cualquier cosa que nosotros queramos que PostScript haga. La pila mantiene la informaci�n en orden de forma que el �ltimo dato introducido sale primero. Puedes visualizar esto como una tuber�a con uno de sus extremos cerrado. Cuando pones algo en esta tuber�a, empujar� todos los elementos que ya estaban en ella hacia el extremo cerrado para hacer sitio para el mismo. Por lo tanto el �ltimo elemento en entrar ser� siempre el m�s cercano al extremo abierto de la tuber�a. Los elementos en la pila pueden ser cadenas de texto, constantes num�ricas, claves, bloques, ... �
A pesar de que los elementos se ordenan en la pila, hay algunas operaciones de pila que nos permiten reordenar los elementos. Las "manipulaciones" se aplican a uno o m�s de los elementos de la pila. Los operadores, por definici�n, manipulan elemento(s) en la pila. Los operadores pueden o no necesitar par�metros (operandos en la terminolog�a PostScript) dependiendo del caracter de la manipulaci�n.� Si necesitan el(los) par�metro(s) entonces estos deben ser apilados en la pila primero. El operador toma acci�n entonces con respecto a estos operandos..� Aqu� se da una lista de estos operadores con las explicaciones necesarias. Adem�s se dan algunos ejemplos para ilustrarlo con m�s detalle.�
Permitenos decir algo ahora acerca de la pila. Si quieres ver en acci�n a los operadores anteriores, debes activar primero el interprete Postscript. Como se mencion� en el primer art�culo, en el mundo Linux se usa un interprete disponible publicamente, de nombre ghostscript. Ghostscript puede activarse de diferentes maneras mediante el paso de los par�metros apropiados en la linea de comandos. La forma habitual de hacerlo es teclear gs en el entorno X Window. A veces puede que no funcione debido a alg�n problema de configuraci�n en X. Se visualizar� un mensaje de error acerca de la incapacidad de crear un consola gr�fica. Entonces o bien solucionas esos problemas o puedes forzar a ghostscript a usar el dispositivo x11. Para conseguirlo debes teclear gs -sDEVICE=x11. Tanto esto como un simple gs (si esto �ltimo funciona) crea un ventana vac�a con el fondo blanco que se usar� para los mensajes que se crear�n durante la sesi�n. Dado que los mensajes (displays) no se tratan en este art�culo no necesitamos esta ventana y es posible librarse de ella. Para ello, se puede activar el interprete ghostscript sin displays tecleando el par�metro -dNODISPLAY en la linea de comandos despu�s de gs o de gs -sDEVICE=x11. Si se hace esto, se visualizar� una cabecera de copyright seguida del prompt de ghostscript GS> al principio de una nueva linea. En este punto, ghostscript est� preparado para tus comandos. La pila de operandos est� vac�a.
Para ver el contenido de la pila de operandos puedes usar el operador de fichero pstack. Se le llama operador de fichero porque env�a informaci�n acerca del contenido de la pila al fichero de salida estandar que por defecto es la pantalla. Si introduces este comando en el prompt no se visualiza nada y un nuevo prompt GS> aparecer� al principio de una nueva linea. Esto significa que la pila de operandos est� vac�a.�
Para introducir elementos en la pila de operandos puedes teclear los elementos en el prompt. Por ejemplo si quieres introducir 1 como un elemento, solo tienes que teclear 1 en el prompt. Despu�s de esto se crea un nuevo prompt al principio de la linea siguiente. Pero, ahora, el prompt no es GS>. Es G<1>. Esta nueva forma de prompt refleja el n�mero de elementos en la pila de operandos. De modo que, si tu tienes GS<123> en cualquier momento en tu sesi�n ghostscript esto significa que hay 123 elementos en la pila de operandos.�
Puedes introducir m�s de un elemento en la pila de operandos de un solo paso. Para ello, debes teclear todos los elementos consecutivamente, pero separados por un espacio en blanco. Por ejemplo, si tu tecleas 1 2 3 4 5 6 en el prompt, los elementos 1, 2, 3, 4, 5, 6, se apilar�n en la pila de operandos respectivamente. Si ejecutas pstack despu�s de esto, entonces los elementos se visualizar�n en orden vertical de forma que el �ltimo elemento introducido se visualiza primero. La visualizaci�n de esta sesi�n de dos comandos puede quedar como sigue:�
GS>1 2 3 4 5 6�G<6>pstack 6 5 4 3 2 1 G<6>
Tambi�n es posible introducir elementos en la pila de operandos y ver el contenido de la pila en un solo paso. Todo lo que tienes que hacer es a�adir el comando pstack despu�s de los elementos a ser introducidos. Por tanto:�
GS>1 2 3 4 5 6 pstack6 5 4 3 2 1 G<6>
Hasta ahora hemos usado n�meros para introducir elementos. Los n�meros no son el �nico tipo de elementos, es posible introducir otros tipos de elementos como variables o claves, cadenas de texto, bloques, etc. Los trataremos m�s tarde en detalle. De todas maneras hay algo que debemos decir: si intentas introducir por ejemplo, un solo caracter a o una cadena abc se emitir� un mensaje de error. Esto es debido a que PostScript no puede entender estas cosas. Si quieres introducir un caracter o una cadena tienes que encerrarlo mediante los s�mbolos (). Aqu� hemos hablado tambi�n acerca de un tipo especial de elemento que se llama marktype. Para ver todo esto podemos dar la siguiente sesi�n de ejemplo:�
GS>1 2 3 mark 4 5 6 pstack6 5 4 -marktype- 3 2 1 G<7>
Ahora vamos a ver algunos ejemplos de las operadores que manipulan la pila de operandos. Dar� una sesi�n para mostrar como actuan estos operadores y me gustar�a cerrar esta secci�n sin m�s explicaciones.�
GS>1 2 3 mark 4 5 6 pstack6 5 4 -marktype- 3 2 1 G<7>pop pstack 5 4 -marktype 3� 2 1 G<6>exch pstack 4 5 -marktype 3 2 1 G<6>dup pstack 4 4 5 -marktype- 3 2 1 G<7>2 copy pstack 4 4 4 4 5 -marktype 3 2 1 G<9>5 index pstack -marktype- 4 4 4 4 5 -marktype 3 2 1 G<10>cleartomark cleartomark pstack 3 2 1 G<3>3 1 roll pstack 2 1 3 G<3>count pstack 3 2 1 3 G<4>mark 7 8 pstack 8 7 -marktype- 3 2 1 3 G<7>counttomark pstack 2 8 7 -marktype- 3 2 1 3 G<8>clear pstack GS>
Aparte de los operadores de manipulaci�n de la pila de operandos de PostScript hay algunos operadores aritm�ticos y matem�ticos. M�s abajo se dan estos operadores. No habr� ejemplos. Esto se deja en manos del lector que deber�a ser capaz de crearlos, despu�s de haber estudiado las sesiones de ejemplo de arriba.
Antes de terminar este art�culo una nota m�s. Si bien se ha mencionado arriba, quiz�s de forma impl�cita, los par�metros (operandos en la terminolog�a PostScript) de un comando pueden crear algunos problemas desagradables. El comando (u operador en la terminolog�a PostScript) busca sus par�metros en la pila de operandos. Cuando se encuentran el comando los usa y son borrados de la pila de operandos. De manera que ejecutar, a prop�sito o por error, un comando que necesita par�metro(s) sobre una pila de operandos sin valores para ellos, puede provocar bien una notificaci�n sobre los par�metros que est�n el cima de la pila si estos no son v�lidos para el tipo de par�metro requerido, o que alguno(s) de los elementos de la pila de operandos sean eliminados. Por tanto el usuario debe tener mucho cuidado con esto.
Antes de finalizar esta presentaci�n recomendamos escribir programas m�s complicados y completos a los usuarios que quieran avanzar con el lenguaje PostScript. Todas las preguntas y comentarios son bienvenidos.
Contactar con el equipo de LinuFocus
© Emre Demiralp LinuxFocus 1999 |
Translation information:
|
1999-07-02, generated by lfparser version 0.6