Você está na página 1de 6

Gramtica de Python La siguiente gramtica corresponde a la gramtica de Python 1.

Los comentarios en Python comienzan con # y terminan con un salto de lnea. 2. Las lneas compuestas por espacios en blanco, tabuladores y comentarios se ignoran y no tienen efecto en el nivel de sangra. Lamaremos a este tipo de lneas, lneas en blanco. 3. Los espacios en blanco y tabuladores pueden separar las unidades lexicas. 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 estn separados por un espacio en blanco o un tabulador. Los espacios en blanco y tabuladores solo pueden aparcer dentro de literales de cadena pero no en ningn otro tomo. 4. Los saltos de lnea 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 despus de una diagonal invertida (\), en este caso se interpreta como espacio en blanco, entre la lnea actual y la siguiente. Cuando se encuentran encerrados entre los siguientes tipos de parntesis: ( y ), [ y ], o { y }, en este caso de nuevo los saltos de lnea son tratados como espacios en blanco. 5. Pasando por alto los lneas en blanco los literales de cadena con multiples lneas (cadenas que comienzan y terminan con comillas triples), los tabuladores y espacios en blanco que se encuentran al comienzo de una lnea son significativos (excepto en los casos que ya mencioncionamos anteriormente). Los espacios que se dejan de sangra en una lnea, equivale al nmero de espacios en blanco que se dejan al inicio de esa lnea.Si se encuentra un tabulador despus de N espacios en blanco, este cuenta como 8(Nmod8) espacios en blanco, esto es si un tabular se cuenta como el nmero de espacios en blanco faltantes para llegar al siguiente mltiplo de 8. 6. Si una lnea tiene una sangra mayor que la lnea anterior (que no sea una lnea de espacios en blanco), entonces el primer tomo que se gener para dicha lnea es INDENT. Se considera un error la primer lnea (que no sea una lnea de espacios en blancos) dentro de un archivo tenga sangra. 7. Si una lnea tiene un sangra menor que la lnea anterior (que no sea una lnea de espacios en blanco), entonces se generan tantos tomos DEDENT al principio de dicha lnea como sean necesarios para empatar con los tomos sin empatar INDENT presentes en las lneas previas con mayor cantidad de sangra. El final de un archivo esta precedido por tantos tomos DEDENT como sean necesarios para empatar todos los tomos sin empatar INDENT. Los siguientes son tomos en Python. keyword ::= "and" | "del"| "from"| "not"| "while"| "as"| "elif"| "global" | "or"| "with"| "assert" | "else"| "if"| "pass"| "yield"| "break"| "except" | "import" | "print"| "class"| "exec"| "in"| "raise"| "continue"| "finally" | "is"| "return"| "def"| "for"| "lambda" | "try"

identifier ::= (letter|"_") (letter | digit | "_")* (donde el lexema que empata no es una palabra reservada) letter ::= lowercase | uppercase lowercase ::= "a"|"b"|...|"z" uppercase ::= "A"|"B"|...|"Z" digit ::= "0"|"1"|...|"9" stringliteralpiece ::= [stringprefix](shortstring | longstring) | rawstringprefix(shortrawstring | longrawstring) stringprefix ::= "u" | "U" rawstringprefix ::= "r" | "ur" | "R" | "UR" | "Ur" | "uR" shortstring ::= "" shortstringitem1* "" | " shortstringitem2* " rawshortstring ::= "" rawshortstringitem1* "" | " rawshortstringitem2* " longstring ::= "" <cualquier sencuencia de longstringitems que no contenga "" sin escapar> "" | """ <cualquier secuencia de longstringitems que no contenga """ sin escapar> """ rawlongstring ::= "" <cualquier secuencia de rawlongstringitems que no contenga "" sin escapar> "" | """ <cualquier secuencia de rawlongstringitems que no contenga """ sin escapar> """ shortstringitem1 ::= <cualquier tipo de caracter excepto "" o salto de lnea> | escapeseq shortstringitem2 ::= <cualquier tipo de caracter excepto " o salto de lnea> | escapeseq longstringitem ::= <cualquier tipo de caracter excepto \> | escapeseq escapeseq ::= \ <cualquier caracter ASCII> | \ <1-3 digitos octales> rawshortstringitem1 ::= <cualquier tipo de caracter excepto "" o salto de linea> | rawescapeseq rawshortstringitem2 ::= <cualquier tipo de caracter excepto " o salto de linea> | rawescapeseq rawlongstringitem ::= <cualquier tipo de caracter excepto \> | rawescapeseq rawescapeseq ::= \ <cualquier caracter ASCII> longinteger ::= integer ("l" | "L") integer ::= decimalinteger | octinteger | hexinteger decimalinteger ::= nonzerodigit digit* | "0" octinteger ::= "0" octdigit+ hexinteger ::= "0" ("x" | "X") hexdigit+ nonzerodigit ::= "1"..."9" octdigit ::= "0"..."7" hexdigit ::= digit | "a"..."f" | "A"..."F" floatnumber ::= pointfloat | exponentfloat pointfloat ::= [intpart] fraction | intpart "." exponentfloat ::= (intpart | pointfloat) exponent intpart ::= digit+ fraction ::= "." digit+ exponent ::= ("e" | "E") ["+" | "-"] digit+ imagnumber ::= (floatnumber | intpart) ("j" | "J") Gramtica de Java

1. Comentarios En Java hay tres tipos de comentarios: // comentarios para una sola lnea /* comentarios de una o ms lneas */ /** comentario de documentacin, de una o ms lneas */ Los dos primeros tipos de comentarios son los que todo programador conoce y se utilizan del mismo modo. Los comentarios de documentacin, colocados inmediatamente antes de una declaracin (de variable o funcin), indican que ese comentario ha de ser colocado en la documentacin que se genera automticamente cuando se utiliza la herramienta de Java, javadoc. Dichos comentarios sirven como descripcin del elemento declarado permitiendo generar una documentacin de nuestras clases escrita al mismo tiempo que se genera el cdigo. 2. Identificadores Los identificadores nombran variables, funciones, clases y objetos; cualquier cosa que el programador necesite identificar o usar. En Java, un identificador comienza con una letra, un subrayado (_) o un smbolo de dlar ($). Los siguientes caracteres pueden ser letras o dgitos. Se distinguen las maysculas de las minsculas y no hay longitud mxima. Ejemplos de identificadores vlidos: Identificador nombre_usuario Nombre_Usuario _variable_de_sistema $transaccion y su uso sera, por ejemplo: int contador_principal; char _lista_de_ficheros; float cantidad_en_Ptas; 3. Palabras clave Las siguientes son las palabras clave que estn definidas en Java y que no se pueden utilizar como identificadores: abstract continue for new switch boolean default goto null synchronizedbreak do if package thisbyte double implements private threadsafebyvalue else import protected throwcase extends instanceof public transient catch false int return true char final interface short try class finally long static void

const float native super while 4. Palabras reservadas Adems, el lenguaje se reserva unas cuantas palabras ms, pero que hasta ahora no tienen un cometido especfico. Son: cast future generic inneroperator outer rest var 5. Tags HTML Atributos del tag <APPLET>; (en negrita los imprescindibles) <APPLETCODEBASE=url raizCODE=fichero con la clase principal WIDTH=anchura HEIGTH=altura ALT=texto alternativo (para navegadores sin soporte Java pero que saben interpretar el tag APPLET) NAME=nombre del applet. Para hacer referencia al applet desde otro o desde JavaScript ALIGN=alineacion (hasta 9 valores: LEFT, RIGHT, TOP, MIDDLE, etc...) VSPACE=espacio en pixeles dejado en blanco como margen en la ventana del applet HSPACE=idem izqda-dcha > <PARAM NAME=unPArametro VALUE=valorDelParametro> <PARAM NAME=otroParametro VALUE=valor> <dem etc> Texto alternativo </APPLET> FUNCIONES EN JAVA En Java una funcion es un modulo de un programa separado del cuerpo principal, que realiza una tarea especifica y que puede regresar un valor a la parte principal del programa u otra funcion o procedimiento que la invoque.

La forma general de una funcion es: tipodatoregresa Nom_fun(parametros) { cuerpo de instrucciones; intruccion return; } El tipo especifica el tipo de valor que la funcion regresara utlizando la instruccin return. Si no se especifica un tipo se asume de default que el tipo regresado es int. La lista de parametros formales es una lista de variables separadas por comas (,) que almacenaran los valores que reciba la funcion, estas variables actuan como locales dentro del cuerpo de la funcion. Aunque no se ocupen parametros los parntesis son requeridos. La declaracion de parametros es la especificacion de cada tipo de parametro recibido. INSTRUCCION RETURN Dentro del cuerpo de la funcin deber haber una instruccin return cuando menos, para regresar el valor, esta instruccin permite regresar datos. EN JAVA EXISTEN 3 CLASES USUALES DE FUNCIONES. Las primeras son de tipo computacional que son diseadas para realizar operaciones con los argumentos y regresan un valor basado en el resultado de esa operacin. Las segundas funciones son aquellas que manipulan informacin y regresan un valor que indican la terminacion o la falla de esa manipulacion. Las terceras son aquellas que no regresan ningun valor, es decir son estrictamenta procedurales. Clase en Python En Python las clases se definen mediante la palabra clave class seguida del nombre de la clase, dos puntos (:) y a continuacin, indentado, el cuerpo de la clase. Como en el caso de las funciones, si la primera lnea del cuerpo se trata de

una cadena de texto, esta ser la cadena de documentacin de la clase o docstring. El mtodo __init__, con una doble barra baja al principio y final del nombre, se ejecuta justo despus de crear un nuevo objeto a partir de la clase, proceso que se conoce con el nombre de instanciacin. El mtodo __init__ sirve, como sugiere su nombre, para realizar cualquier proceso de inicializacin que sea necesario. el primer parmetro de __init__ y del resto de mtodos de la clase es siempre self. Esta es una idea inspirada en Modula-3 y sirve para referirse al objeto actual. Este mecanismo es necesario para poder acceder a los atributos y mtodos del objeto diferenciando, por ejemplo, una variable local mi_var de un atributo del objeto self.mi_var. veremos cmo se utiliza self para asignar al atributo gasolina del objeto (self.gasolina) el valor que el programador especific para el parmetro gasolina. El parmetro gasolina se destruye al final de la funcin, mientras que el atributo gasolina se conserva (y puede ser accedido) mientras el objeto viva. Ejemplo: class Coche: """Abstraccion de los objetos coche.""" def __init__(self, gasolina): self.gasolina = gasolina print "Tenemos", gasolina, "litros" def arrancar(self): if self.gasolina > 0: print "Arranca" else: print "No arranca..." def conducir(self): if self.gasolina > 0: self.gasolina -= 1 print "Quedan", self.gasolina, "litros" else: print "No se mueve..."

Você também pode gostar