Está en la página 1de 4

Gabriel Itzael escamilla piña.

CHRISTOFER GEOVANNI SALOLIN GARCIA.

Vocabulario del Lenguaje Python


Python es un lenguaje de programación de código abierto, diseñado a finales
de la década de 1980 por Guido van Rossum y presentado en 1991. Se
incorporó por primera vez a ArcGIS 9.0 y, desde entonces, ha sido la opción
favorita de usuarios que crean flujos de trabajo de geoprocesamiento.

Python tiene el respaldo de una comunidad de usuarios cada vez más grande y
variada, y ofrece fácil legibilidad, sintaxis definida, escritura dinámica y una
amplia captura de bibliotecas estándar y de terceros.

Un programa de Python es leído por un parser (analizador sintáctico). Los


datos introducidos en el analizador son un flujo de tokens, generados por
el analizador léxico. Este capítulo describe cómo el analizador léxico desglosa
un archivo en tokens.

Python lee el texto del programa como puntos de código Unicode; la


codificación de un archivo fuente puede ser dada por una declaración de
codificación y por defecto es UTF-8, ver PEP 3120 para más detalles. Si el
archivo fuente no puede ser decodificado, se genera un SyntaxError.

La "estructura léxica" de un lenguaje de programación es el conjunto de reglas


básicas que gobiernan el modo de escribir programas en ese lenguaje.
Especifica detalles como el modo de definir variables, qué caracteres utilizar
para indicar comentarios, cómo organizar los programas, etc.

Python es muy particular en lo que se refiere al diseño de los programas,


especialmente en lo que respecta a las líneas.

Reglas de estructura (Gramática, Sintaxis)

Sintaxis:

Hace referencia al conjunto de reglas que definen como se tiene que escribir el
código en un determinado lenguaje de programación. Es decir, hace referencia
a la forma en la que debemos escribir las instrucciones para que el ordenador,
o más bien lenguaje de programación, nos entienda.

En la mayoría de lenguajes existe una sintaxis común, como por ejemplo el uso
de = para asignar un dato a una variable, o el uso de {} para designar bloques
de código, pero Python tiene ciertas particularidades.

La sintaxis es a la programación lo que la gramática es a los idiomas. De la


misma forma que la frase “Yo estamos aquí” no es correcta, el siguiente código
en Python no sería correcto, ya que no respeta las normas del lenguaje.

Python permite escribir listas, diccionarios y generadores. Dispone de 33


palabras reservadas, lo cual es al mismo tiempo poco y suficiente. Cada
palabra clave tiene un significado claro y preciso, y no existen dos palabras
clave que se parezcan ni de lejos.

Su gramática y su sintaxis permiten, a su vez, una gran legibilidad y son muy


innovadoras en cuanto a las posibilidades algorítmicas que ofrecen a los
desarrolladores.

La siguiente gramática corresponde a la gramática de Python


1. Los comentarios en Python comienzan con # y terminan con un salto de
línea.
 2. Las líneas compuestas por espacios en blanco, tabuladores y comentarios
se ignoran y no tienen efecto en el nivel de sangría. Lameremos a este tipo de
líneas, líneas en blanco.
 3. Los espacios en blanco y tabuladores pueden separar las unidades léxicas.
Estos son necesarios solo cuando si se tienen dos átomos y si ambos se
encuentran concatedos de interpretan de manera diferente, por ejemplo, si
tenemos un if seguido de una x se puede interpretar como ifx si es que
no están separados por un espacio en blanco o un tabulador. Los espacios en
blanco y tabuladores solo pueden aparecer dentro de literales de cadena, pero
no en ningún otro átomo.
4. Los saltos de línea denotados con el átomo NEWLINE, son significativos
siempre que se encuentra fuera de un literal de cadena, excepto en las
siguientes situaciones: Cuando se encuentran inmediatamente después de una
diagonal invertida (\), en este caso se
interpreta como espacio en blanco, entre la línea
actual y la siguiente. Cuando se encuentran encerrados entre los siguientes
tipos de paréntesis: (y ), [y ], o { y }, en
este caso de nuevo los saltos de línea son tratados como espacios
en blanco.
5. Pasando por alto los lıneas en blanco los literales de cadena con múltiples
líneas (cadenas que comienzan y terminan con comillas triples), los
tabuladores y espacios en blanco que se encuentran al comienzo de una línea
son significativos
6. Si una lınea tiene una sangrıa mayor que la lınea anterior (que no sea una
línea de espacios en blanco), entonces el primer átomo que se genera para
dicha línea es INDENT. Se considera un error la primera línea (que no sea una
lınea de
espacios en blancos) dentro de un archivo tenga sangrıa.
 7. Si una línea tiene un sangrıa menor que la lınea anterior (que no sea una
lınea de espacios en blanco), entonces se generan tantos átomos DEDENT al
principio de dicha línea como sean necesarios para empatar con los átomos sin
empatar INDENT presentes en las lıneas previas con mayor cantidad de
sangrıa. El final de un archivo esta precedido por tantos átomos DEDENT como
seannecesarios para empatar todos los átomos sin empatar INDENT.

Codigo intermedio

Existen codigos intermedios de diversos tipos que varıan en cuanto a su sencillez, lo


próximos que están a las maquinas reales y lo facial que es trabajar con ellos.
Nosotros nos centraremos en un tipo de código que se parece bastante al lenguaje
ensamblador. Existen otros tipos de código intermedio que representan los programas
como árboles o grafos. También existen representaciones mixtas que combinan grafos
o árboles y representaciones lineales. El formato que usaremos para las operaciones
binarias es similar al del ensamblador MIPS: op dst, op1, op2 , donde op es un
operador, dst es el registro destino de la operación, op1 y op2 son los operandos. Si
op termina en i, el segundo operando es un valor inmediato (entero o real). En caso de
que el operador sea unario, la forma de la instrucción es op dst, op1 . Para acceder a
memoria utilizaremos instrucciones de acceso a memoria usando un registro base y un
desplazamiento. Para leer de memoria utilizamos lw dst, desp(base) donde dst es el
registro destino, desp es un entero que representa el desplazamiento y base es el
registro base. Si queremos acceder a una dirección absoluta, utilizamos $zero como
registro base, aprovechando que este registro siempre devuelve el valor 0. Para
escribir en memoria utilizamos sw fnt, desp(base) donde fnt es el registro fuente y el
resto tiene el mismo significado que antes. Por ejemplo, la sentencia a:= b*(-c), donde
a es una variable local en la dirección 1 respecto al registro $fp y b y c son variables
globales en las direcciones 1000 y 1001, se puede traducir como:

Uno de los objetivos que suele perseguirse es reducir al mínimo el numero de registros
utilizados. En nuestro caso, podemos emplear dos:

También podría gustarte