18.6. Análisis sintáctico

Para implementar el algoritmo anterior, necesitamos ser capaces de recorrer una cadena y separarla en operandos y operadores. Este proceso es un ejemplo del analisis sintactico, y los resultados|la piezas individuales de la cadena|son tokens. Quizás se acuerde de esas palabras del Capítulo 1.

Python posee un metodo llamado split (partir) en el modulo string (cadena) y en el modulo re (expresiones regulares). La función string.split parte una cadena y la convierte en una lista utilizando un solo carácter como delimitador.

Por ejemplo:

   1: >>> import string
   2: >>> string.split("La hora ha llegado"," ")
   3: ['La', 'hora', 'ha', 'llegado']

 


En este caso, el delimitador es el carácter espacio, y se parte la cadena en cada espacio.


La función re.split tiene mas potente, y nos permite utilizar una expresión regular en vez de un delimitador. Una expresión regular es una manera de especificar un conjunto de cadenas.


Por ejemplo, [A-z] es el conjunto de todas las letras y [0-9] es el conjunto de todas las cifras. El operador ^ niega un conjunto, y [^0-9] es el conjunto de todo lo que no es un numero, lo cual es exactamente lo que queremos utilizar para partir expresiones en el formato postfijo:




   1: >>> import re
   2: >>> re.split("([^0-9])", "123+456*/")
   3: ['123', '+', '456', '*', '', '/', '']

 

Fíjese que el orden de los argumentos es diferente del de string.split; el delimitador viene antes de la cadena.


La lista resultante incluye los operandos 123 y 456 y los operadores * y /.


También incluye dos cadenas vacías que se insertan después de los operandos.

0