Vous êtes sur la page 1sur 22

1

Apndice 1

DESCRIPCION FORMAL DE LENGUAJES


A1.1. Lxico, Sintaxis, Semntica.
Un programa es una secuencia de smbolos y puede considerarse como un texto. Los smbolos de un lenguaje pertenecen a un conjunto que se denomina vocabulario o lxico. Los smbolos tambin se denominan elementos lxicos o tokens. Lxico significa diccionario; y aplicado en el ambiente de lenguajes de programacin se utiliza para denotar los smbolos del lenguaje. Estos smbolos, a su vez, estn formados por secuencias de caracteres; y existen reglas que determinan cmo puede generarse o producirse un smbolo a partir de caracteres. Cada lenguaje de programacin define reglas que permiten componer el texto de un programa como una secuencia de smbolos. El conjunto de estas reglas se denomina gramtica, o ms usualmente, la sintaxis del lenguaje. Sintaxis significa con orden. Cada regla establece una clase definida de objetos o categoras sintcticas; como ejemplos pueden darse algunas partes tpicas de un programa: acciones, declaraciones, condiciones, expresiones, etc. Asociado a cada palabra (smbolo) y a cada frase o sentencia (categora sintctica) debe existir un significado, el cual se traduce en valores de los objetos (constantes y variables) de acuerdo a sus tipos; o en nombres de objetos o grupos de acciones; o en la especificacin de las operaciones que deben efectuarse sobre esos objetos. Todas las reglas que aportan esta informacin se denomina: Semntica del lenguaje. Si bien las reglas para construir smbolos y frases son finitas, el conjunto de programas es infinito. Para describir con rigurosidad los lenguajes de programacin se emplea una notacin formal que se denomina Metalenguaje. El formulismo ms conocido, y que emplearemos en la descripcin, es el Formalismo Extendido Backus-Nauer. (BNF, Backus Nauer Formalism). Bsicamente consiste en describir una frase, (categora sintctica) o parte abstracta de un programa, mediante la secuencia de componentes, de menor categora, que pueden reemplazar Profesor Leopoldo Silva Bijit 20-01-2010

Estructuras de Datos y Algoritmos

dicha frase. Las reglas deben especificar hasta llegar al reemplazo por los smbolos que componen el diccionario. En este ambiente, los elementos lxicos del lenguaje se denominan smbolos terminales. Las componentes estructurales del lenguaje que sern reemplazadas, se denominan smbolos no terminales. La regla que establece el reemplazo de un smbolo no terminal por una secuencia de smbolos terminales y no terminales se denomina produccin. Las reglas deben permitir verificar, con facilidad, si una secuencia de smbolos es o no una sentencia correcta del lenguaje. Un programador debe conocer cmo generar secuencias de smbolos terminales que cumplen la gramtica.

A1.2. Metalenguaje BNF.


A1.2.1. Produccin. Existe slo una accin primitiva, es la produccin. Es una ecuacin sintctica que permite definir una categora sintctica, S; mediante una expresin E. En smbolos: <S> ::= <E> Grficamente:

Figura A1.1. Produccin Los parntesis de ngulo, delimitan los smbolos no terminales. En el grfico esto se representa por un rectngulo. La secuencia ::= , es el metasmbolo para la produccin. Y se lee: puede ser reemplazado por. Una produccin puede considerarse la instancia de definicin de S en trminos de E. Lo usual es que S corresponda a una parte o concepto del lenguaje. Por ejemplo: acciones, condiciones, tipos, etc. La expresin E, debe especificar una secuencia de smbolos; stos, a su vez, deben especificar, en forma precisa, cmo se estructura una parte en trminos de sus componentes.

Profesor Leopoldo Silva Bijit

20-01-2010

Apndice 1. Descripcin formal de lenguajes A1.2.2. Secuenciacin de smbolos.

Los lenguajes estructurados suelen disponer tres formas bsicas para establecer secuencias: La alternativa, la concatenacin, y la iteracin. A1.2.2.1. Alternativa. Una expresin puede considerarse como una lista de trminos sintcticos alternativos. En smbolos: <E> ::= <T1>|<T2>|--- |<Tn> Grficamente: n>0

T1

T2 E Ti

Tn

Figura A1.2. Alternativa El metasmbolo | se lee como o excluyente. La produccin anterior explica que una expresin puede remplazarse por uno (y slo uno) de los trminos de la lista. Ejemplo: <clase de almacenamiento> ::= 'auto ' | 'extern ' | 'register ' | 'static ' | 'typedef ' Ntese que los smbolos terminales, se indican por una secuencia de caracteres entre comillas simples. A1.2.2.2. Concatenacin. Cada trmino puede ser reemplazado por la concatenacin (o producto) de factores sintcticos. En smbolos: <T> ::= <F1><F2> ---- <Fn> Profesor Leopoldo Silva Bijit 20-01-2010 n>0

4 Grficamente:

Estructuras de Datos y Algoritmos

F1

F2

Fi

Fn

Figura A1.3. Concatenacin Ejemplo: <accin repetitiva> ::= 'while' '(' <expresin> ')' <accin> A1.2.2.3. Opcin. a) Opcin. Una o ninguna. Una forma de reemplazar un factor es mediante la opcin. En smbolos: <F> ::= [ E ] Grficamente:

F S
Figura A1.4. Opcin. Los parntesis cuadrados son los metasmbolos empleados para la opcin, se indica que el factor puede ser reemplazado por la expresin o por nada. Se dice que [E] es opcional; puede estar o no. Y si est, lo hace slo una vez. Ejemplo: <signo> ::= [ '+' | '-' ]

Profesor Leopoldo Silva Bijit

20-01-2010

Apndice 1. Descripcin formal de lenguajes

+
Signo

Figura A1.5. Sintaxis de Signo Debe notarse que los smbolos terminales se representan encerrados en ovoides o crculos, en la descripcin grfica. La ausencia de smbolo, suele ser tratada como la ocurrencia del smbolo vaco. b) Repeticin. Un factor tambin puede ser reemplazado por la repeticin, de cero o ms veces, de una expresin. En smbolos: <F> ::= { E } Grficamente:

F E

Figura A1.6. Repeticin Los parntesis de llave denotan la repeticin. Ejemplo: <nmero entero sin signo> ::= <dgito>{dgito} Para delimitar el nmero mximo de repeticiones, suele agregarse un valor entero como superndice. Ejemplo: {digito}^3 indica a lo ms 3 cifras.

Profesor Leopoldo Silva Bijit

20-01-2010

6 c) Repeticin de a lo menos una vez.

Estructuras de Datos y Algoritmos

Una alternativa de reemplazo de factor, es la repeticin, de una expresin, por lo menos una vez. En smbolos: <F> ::= <E> {E} La que es semnticamente equivalente a: <F> ::= {E} <E> Estableceremos la siguiente equivalencia, como convenio, para simplificar la notacin: <F> ::= {E*} Grficamente:

Figura A1.7. Repeticin de a lo menos una vez. d) Lista. Una construccin de uso frecuente es: <lista> ::= { <entidad> <separador> } <entidad> La lista est formada por una entidad a lo menos; en caso de existir varias entidades, stas aparecen separadas por el separador. Ntese que despus de la ltima entidad no debe existir un separador. Debido a su frecuente uso, la sintaxis de lista puede convenirse en anotarla, en forma abreviada, segn: <lista> ::= { <entidad>* <separador> }

Profesor Leopoldo Silva Bijit

20-01-2010

Apndice 1. Descripcin formal de lenguajes A1.2.2.4. Agrupaciones.

En las ocasiones que sean necesarias pueden agruparse trminos y factores sintcticos mediante parntesis redondos. Ejemplo: <trmino simple> ::= ('A'|'B')('C'|'D') Las siguientes secuencias cumplen la sintaxis de trmino simple: AC AD BC BD A1.2.2.5. Sintaxis de factor.

En smbolos:
<F> ::= <S>|<smbolo terminal>|(E)| E |[ E ]|{ E } Los smbolos terminales son secuencias de smbolos tomados del vocabulario del lenguaje. Y se representan entre comillas simples. La entidad sintctica <S> debe considerarse representada por su identificador o nombre; y debe estar definida previamente. A1.2.3. Descripcin formal de BNF. El BNF es un lenguaje formal, y como veremos puede emplearse para describirse a s mismo. Las siguientes producciones definen el formalismo: <sintaxis> ::= <produccin>

<produccin> ::= <identificador> '::=' <expresin> <expresin> ::= <trmino> { '|' <trmino> } <trmino> <factor> ::= <factor> { <factor> } ::= <identificador> <smbolo terminal> '(' <expresin> ')' <expresin> '[' <expresin> ']' '{' <expresin> '}' | | | | |

El identificador denota una entidad sintctica.

Profesor Leopoldo Silva Bijit

20-01-2010

8 A1.2.4. Ejemplos. a) 'A'['B']'C' b) 'A'{'BA'} c) {'A'|'B'}'C' genera ABC y AC genera A ABA ABABA ....... genera C AC BC AAC

Estructuras de Datos y Algoritmos

A1.2.5. rboles de Derivacin. Una forma de ayudar a reconocer las frases y su estructura es el desarrollo de rboles de derivacin. Ejemplo: Dadas las producciones: <entero con signo>::=<signo><entero> <signo>::='+'|'-' <entero>::=<dgito><entero>|<dgito> <dgito>::='0'|'1'

(definicin recursiva)

Verificar si +10 pertenece o no al lenguaje. Especficamente si es o no un entero con signo. Una forma de verificacin es la construccin de un rbol de derivacin, que consiste en representar grficamente los reemplazos que se efectan desde el smbolo de partida (raz) hasta llegar a elementos terminales (hojas). [top-down] El entero con signo puede reemplazarse por la secuencia: signo entero.

enteroconsigno signo entero

Figura A1.8. Secuencia signo entero

A su vez, signo se reemplaza por + (ya es terminal). Y entero por: dgito entero.

enteroconsigno signo + dgito


Figura A1.9. Dgito entero Dgito por el terminal 1, y entero por dgito. Finalmente dgito por el terminal 0.

entero entero

Profesor Leopoldo Silva Bijit

20-01-2010

Apndice 1. Descripcin formal de lenguajes

enteroconsigno signo + 1 dgito entero entero dgito 0


Figura A1.10. Entero con signo El procedimiento de reconocimiento puede tambin efectuarse a la inversa, desde las hojas hacia la raz. (bottom up) A1.2.6. Recursividad en Producciones. Consiste, en este caso, en definir un smbolo no terminal en trminos de s mismo. La recursividad permite definir lenguajes con un nmero finito de producciones. La definicin recursiva permite generar smbolos de longitud variable. El factor bsico de repeticin puede describirse explcitamente en forma recursiva. Se tiene que: <A>::={<B>} es equivalente a: <A>::=<vaco>|<A><B> En forma grfica: (ii) (i)

A B

Figura A1.11. Repeticin (i)

Profesor Leopoldo Silva Bijit

20-01-2010

10

Estructuras de Datos y Algoritmos

A B

Figura A1.12. Repeticin recursiva (ii) Se dice que la definicin ii) de A es recursiva. Puede comprobarse que existen otras formas equivalentes. Son equivalentes porque generan las mismas secuencias; cuestin que puede verificarse desarrollando rboles de derivacin. Otras formas equivalentes son: <A> ::= <vaco>|<B><A> <A> ::= <vaco>|<A><B><A> (iii) (iv)

La secuencia BBBB, puede lograrse para el caso (ii) segn: A es reemplazado por: AB; luego A es nuevamente reemplazado por AB: ABB; luego A por AB, queda: ABBB; otra vez A por AB, queda: ABBBB; finalmente A por el smbolo vaco. Ejemplo: <S>::='z'|'y'<S>

S y

Figura A1.13. Produccin recursiva Genera las secuencias: z yz yyz yyyz ...

Profesor Leopoldo Silva Bijit

20-01-2010

Apndice 1. Descripcin formal de lenguajes Puede escribirse: <S>::={'y'}'z'

11

y
Figura A1.14. Simplificacin a no recursiva. A1.2.7. Asociatividad en Producciones. El uso de recursividad en las producciones, permite establecer reglas de asociatividad sin uso de parntesis. Puede emplearse recursividad por la izquierda. Ejemplo: <expresin>::= <expresin><operador><variable>|<variable> <operador> ::= '+'|'*' <variable> ::= 'x'|'y' La secuencia x+y*x+y se interpreta: ((x+y)*x)+y Con la derivacin:

exp

exp

op

var

exp

op

var

exp var

op +

var * y

x
Figura A1.15. Derivacin Se refleja la asociatividad, agrupando primero las hojas ms alejadas de la raz. Tambin puede emplearse recursividad por la derecha: Profesor Leopoldo Silva Bijit 20-01-2010

12

Estructuras de Datos y Algoritmos

Ejemplo: <expresin> ::=<variable><operador><expresin>|<variable> <operador> ::='+'|'*' <variable> ::='x'|'y' La secuencia x+y*x+y se interpreta: x+(y*(x+y)) Con la derivacin:

exp

var

op

exp

var

op

exp

* x

var

op

exp var y

Figura A1.16. Derivacin A1.2.8. Ambigedad en Producciones.

Ciertas producciones pueden llevar a ambigedades semnticas:


Ejemplo: <expresin> ::=<expresin><operador><expresin>|<variable> <operador> ::='+'|'*' <variable> ::='a'|'b'|'c' Puede comprobarse que la secuencia: a+b*c puede interpretarse como a+(b*c) y tambin como (a+b)*c. Comprobar lo anterior generando los rboles de derivacin correspondientes. Obviamente en una gramtica deben evitarse producciones que generen ambigedades.

Profesor Leopoldo Silva Bijit

20-01-2010

Apndice 1. Descripcin formal de lenguajes A1.2.9. Precedencia de operadores en expresiones aritmtico lgicas.

13

El formalismo BNF, permite reflejar el orden o jerarqua de los operadores en una expresin aritmtica o lgica. Por ejemplo: Si se tiene que el operador * tiene precedencia (o mayor jerarqua) que el operador +; entonces la secuencia a+b*c se interpreta como: a+(b*c) Es decir, se realiza primero la multiplicacin, luego la adicin. El uso cuidadoso de las reglas de composicin de expresiones aritmticas y lgicas, permite escribirlas sin usar parntesis. Sin embargo, para mejorar la legibilidad en ciertos casos, suelen emplearse stos. Cuando se escriben expresiones complejas empleando parntesis, suele usarse la regla de contar los parntesis abiertos y los cerrados: deben estar balanceados. A1.2.10. Reglas para construir Expresiones. i) Las expresiones estn formadas por operadores y operandos. ii) Son frmulas o reglas para computar valores. iii) Precedencia de operadores iv) Los grupos de operadores de igual precedencia se ejecutan de acuerdo a su regla de asociatividad. La siguiente lista muestra los operadores agrupados, en niveles de precedencia, en orden descendente de sta. Cada grupo est separado del siguiente por una lnea en blanco. La columna a la derecha establece la asociatividad del operador. Operador Post-incremento Post-decremento subndice llamado a funcin seleccin de miembro apunta a miembro sizeof pre-incremento pre-decremento direccin de indireccin ms menos Profesor Leopoldo Silva Bijit Ejemplo notacin X++ X-X[Y] X(Y) X.Y X->Y sizeof X ++X --X &X *X +X -X 20-01-2010 Asociatividad desde izquierda hacia la derecha

desde derecha a izquierda

14 NOT al bit NOT lgico casteo de tipo multiplicacin divisin Resto (modulo) suma resta Corrimiento a izquierda Corrimiento a derecha Menor que Menor o igual que Mayor que Mayor o igual que Igualdad No igualdad AND al bit OR exclusivo al bit OR inclusivo al bit AND lgico OR lgico Condicional Asignacin Multiplica y asigna Divide y asigna Resto y asigna Suma y asigna Resta y asigna Left shift assign right shift assign AND al bit y asigna OR ex al bit y asigna OR inclusive al bit asigna Profesor Leopoldo Silva Bijit ~X !X (declaracin)X X*Y X/Y X%Y X+Y XY X << Y X >> Y X<Y X <= Y X>Y X >= Y X == Y X != Y X&Y X^Y X|Y X && Y X || Y Z?X:Y X=Y X *= Y X /= Y X %= Y X += Y X -= Y X <<= Y X >>= Y X &= Y X ^= Y X |= Y

Estructuras de Datos y Algoritmos

desde izquierda a derecha

desde izquierda a derecha

desde izquierda a derecha

desde izquierda a derecha

desde izquierda a derecha

desde izquierda a derecha desde izquierda a derecha desde izquierda a derecha desde izquierda a derecha desde izquierda a derecha desde derecha a izquierda desde derecha a izquierda X=X*Y X=X/Y

20-01-2010

Apndice 1. Descripcin formal de lenguajes coma X, Y desde izquierda a derecha

15

Figura A1.17. Reglas de precedencia y asociatividad. La precedencia se refiere al orden de evaluacin. Es decir, cules operadores reciben primero sus operandos. Ejemplos: La semntica de a/b/c es (a/b)/c de acuerdo a la regla iv) ya que hay secuencia de operadores de igual precedencia y se asocia desde izquierda a derecha. En forma similar: a/b*c se interpreta: (a/b)*c y=m*x+b *p++ = -X->Y se interpreta como y = ((m * x) + b) se interpreta como (*(p++)) = (-(X->Y))

Para la expresin: a + b*c, aplicando la regla iii), la multiplicacin tiene precedencia sobre la suma, por lo tanto se ejecuta primero. Se interpreta: a + (b*c)

A1.3. Smbolos del lenguaje. Lxico.


El texto de un programa est formado por una secuencia de smbolos o elementos lxicos. Los elementos lxicos, a su vez, estn formados por secuencias de caracteres. Existen reglas de composicin que determinan cmo pueden generarse o producirse un smbolo a partir de caracteres; que en el caso de programas de alto nivel, se consideran smbolos terminales. El conjunto de smbolos terminales es el vocabulario del lenguaje (reglas lxicas). A1.3.1. Conjuntos de Caracteres. Los caracteres estn estandarizados y les corresponde un cdigo nico (de un cdigo de 7 bits, ISO estndar). Con 7 bits pueden codificarse 128 caracteres diferentes. Suele emplearse el cdigo ASCII (Cdigo Estndar Americano para el Intercambio de Informacin), que usa 8 bits por carcter, dejando un bit para controlar la paridad. La paridad consiste en dejar un nmero par o impar de unos en una palabra del cdigo, y se emplea con fines de deteccin de errores. Los elementos del cdigo que se representan (visualmente) mediante un smbolo grfico se denominan caracteres grficos. Entre ellos 26 letras maysculas, 26 minsculas, 10 dgitos decimales, 32 caracteres especiales (signos), y el espacio. Profesor Leopoldo Silva Bijit 20-01-2010

16

Estructuras de Datos y Algoritmos

El resto del cdigo (33 smbolos, no grficos) est formado por caracteres de control, que se emplean para dar efectos de formato y para controlar la comunicacin de caracteres entre un equipo y otro. Se denominan de formato a: tabulacin horizontal y vertical, retorno de carro, alimentacin de nueva lnea y alimentacin de nuevo formulario. En el texto de un programa slo se permiten caracteres grficos y de formato. A1.3.2. Elementos Lxicos (tokens). En lenguajes de alto nivel es usual definir las siguientes unidades: i) Delimitadores ii) Identificadores iii) Nmeros (literal numrico) iv) Carcter v) Strings vi) Comentarios vii) Separadores El efecto de un programa depende solamente de la particular secuencia de elementos lxicos que lo forman. Existen reglas que determinan como puede generarse una frase a partir de los elementos lxicos. El conjunto de reglas se denomina gramtica del lenguaje. La gramtica o estructura del lenguaje permite determinar si una secuencia de palabras (tokens) es una sentencia correcta o no. La estructura de las frases es esencial en el reconocimiento del significado de stas (semntica). A1.3.3. Separadores En algunos casos es necesario un separador explcito para separar elementos lxicos adyacentes. Se consideran separadores al espacio, a los caracteres con efecto de formato y el final de una lnea. Suele no definirse qu causa el fin de lnea, en algunos sistemas pueden ser uno o ms caracteres de control. Reglas para el uso de separadores: a) Se requiere a lo menos un separador entre un identificador o nmero y el identificador o nmero adyacente. b) Se permite uno o ms separadores entre dos elementos lxicos adyacentes. Tambin se acepta uno o ms separadores, antes del primer elemento lxico del programa y despus del ltimo. (Formato libre) Profesor Leopoldo Silva Bijit 20-01-2010

Apndice 1. Descripcin formal de lenguajes c) Los comentarios son considerados separadores. A1.3.4. Comentarios.

17

Los comentarios se emplean para mejorar la legibilidad del programa; y deben ocuparse con frecuencia para aclarar el significado de variables, o de acciones. Los comentarios pueden sacarse del texto sin alterar el significado del programa. Cualquier secuencia de caracteres encerrados entre los smbolos /* y */ se denomina comentario. Hay comentarios de fin de lnea, de lnea completa o de varias lneas. Alternativamente un comentario puede comenzar con el doble smbolo: //. A1.3.5. Carcter. Un carcter literal se forma encerrando uno de los 95 caracteres grficos (incluyendo el espacio) entre comillas simples. Ej: '*' '"' 'g' ' '

A1.3.6. Strings. ( tira, mensaje, texto, hileras, cadenas) Son secuencias de caracteres grficos entre comillas dobles. Para incluir una comilla doble, se la precede con \. O/Higgins. El largo del string es el nmero de caracteres que forman la secuencia. Se emplean para intercalar texto (legible) en la salida. Pueden usarse para alertar al operador que se requiere una entrada o una operacin de su parte (prompts); o bien para hacer ms comprensible la salida (mensajes). A1.3.7. Nmeros. Se habla de literal numrico cuando se quiere enfatizar que se est haciendo referencia a cmo se escribe un nmero como una secuencia de caracteres. Existen enteros y reales. Los reales incluyen un punto (la coma decimal). Entre los reales, se habla de punto fijo y punto flotante (o formato cientfico y exponencial; llevan la letra E). <signo> ::= ['+' | '-'] <constante entera sin signo> ::= { dgito* } <constante entera> ::= <signo> <constante entera sin signo> <real punto fijo> ::= {dgito*} '.' {dgito} <exponente> ::= ('e'|'E')<constante entera> <real punto flotante> ::= {dgito*} ['.'{dgito*}] <exponente> <constante real> ::= <real punto fijo> | <real punto flotante> Profesor Leopoldo Silva Bijit 20-01-2010

18 Un resumen de las producciones anteriores es:

Estructuras de Datos y Algoritmos

nmero

+ dgito -

+ dgito E dgito

Figura A1.18. Sintaxis de nmero La representacin anterior no considera aspectos prcticos como mximo nmero representable, exactitud de representacin, etc., que dependen de la instalacin. La sintaxis de nmero se abstrae de estos detalles y slo explica cmo se escriben. A1.3.8. Identificadores. Se usan como nombres y tambin como palabras reservadas. Comienzan con una letra, que puede ser seguida de cualquier combinacin de letras y nmeros. El espacio no se acepta dentro de un identificador. Sirven para dar nombre a: constantes, tipos de datos, variables, procedimientos, funciones.

letra identificador letra dgito


Figura A1.19. Sintaxis de identificador Las palabras reservadas tienen un significado especial en el lenguaje y no pueden emplearse como identificadores de objetos. Los siguientes smbolos son palabras reservadas: auto break case char const continue default double else enum extern float for goto int long register return short signed sizeof struct switch typedef union unsigned void volatile

do

if

static

while

Estos smbolos tambin pueden ser clasificados como delimitadores. Profesor Leopoldo Silva Bijit 20-01-2010

Apndice 1. Descripcin formal de lenguajes

19

Existen tambin identificadores estndares que el lenguaje predefine. Por ejemplo, el nombre de algunas funciones y constantes. Pueden usarse sin definirse previamente. Adems podran ser redefinidos dentro del programa; es decir, cambiar el significado estndar. A1.3.9. Delimitadores. Es uno de los siguientes caracteres especiales: ~ + ; ] % , < ^ & - = { ( . > | ) / ? } ! * : [ O uno de los siguientes delimitadores, compuestos de dos caracteres especiales adyacentes: ... && -= >= <<= &= -> >> >>= *= /= ^= != ++ << |= %= += <= || -- == Algunos delimitadores se usan como operadores. Otros para establecer mecanismos de acceso o seleccin de datos estructurados. A1.3.10. Resumen.

<texto de un programa> ::= { { <separador> } <token> } <separador> ::= <espacio> | <fin de lnea> | <comentario>

<token> ::= <palabra reservada> <delimitador> <nombre> <constante>

| | |

<constante> ::= <contante entera> | <constante real> | <constante caracter> | <string>


A1.3.11. Ejemplos. A1.3.11.1. Indicar mediante parntesis como se evalan las expresiones: a) 80/5/4 La expresin se evala ((80/5)/4) b) sqrt(sqr(3)+11*5) Profesor Leopoldo Silva Bijit 20-01-2010

20 Se evala: sqrt(sqr(3)+(11*5)) c) x =2*y-5.02 Se evala: x = ((2*y) - 5.02)

Estructuras de Datos y Algoritmos

A1.3.11.2. Escribir todas las secuencias que cumplen la sintaxis dada por: a) {'A'|'B'}'C' b) 'A'{'BA'} c) ('A'|'B')('C'|'D') d) 'A'['B']('C'|'D') Si el nmero de secuencias es mayor que 10, escribir por lo menos 5 de ellas. a) {'A'|'B'}'C' nmero de secuencias>10 1) C 2) AC 3) BC 4) ABC 5) AAC b) 'A'{'BA'} nmero de secuencias >10 1) A 2) ABA 3) ABABA 4) ABABABA 5) ABABABABA c) ('A'|'B')('C'|'D') nmero de secuencias = 4 1) AC 2) AD 3) BC 4) BD d) 'A'['B']('C'|'D') nmero de secuencias = 4 1) AC 2) AD 3) ABC 4) ABD

C A B

A AB

A B

C D

C A B D

Profesor Leopoldo Silva Bijit

20-01-2010

Apndice 1. Descripcin formal de lenguajes

21

ndice general.
APNDICE 1 .............................................................................................................................................. 1 DESCRIPCION FORMAL DE LENGUAJES ........................................................................................ 1 A1.1. LXICO, SINTAXIS, SEMNTICA. ..................................................................................................... 1 A1.2. METALENGUAJE BNF. .................................................................................................................... 2 A1.2.1. Produccin. ............................................................................................................................. 2 A1.2.2. Secuenciacin de smbolos. ..................................................................................................... 3
A1.2.2.1. Alternativa........................................................................................................................................ 3 A1.2.2.2. Concatenacin. ................................................................................................................................. 3 A1.2.2.3. Opcin. ............................................................................................................................................. 4 a) Opcin. Una o ninguna. .......................................................................................................................... 4 b) Repeticin. .............................................................................................................................................. 5 c) Repeticin de a lo menos una vez. .......................................................................................................... 6 d) Lista. ....................................................................................................................................................... 6 A1.2.2.4. Agrupaciones. .................................................................................................................................. 7 A1.2.2.5. Sintaxis de factor. ............................................................................................................................. 7

A1.2.3. Descripcin formal de BNF. ................................................................................................... 7 A1.2.4. Ejemplos.................................................................................................................................. 8 A1.2.5. rboles de Derivacin. ........................................................................................................... 8 A1.2.6. Recursividad en Producciones. ............................................................................................... 9 A1.2.7. Asociatividad en Producciones. ............................................................................................ 11 A1.2.8. Ambigedad en Producciones. .............................................................................................. 12 A1.2.9. Precedencia de operadores en expresiones aritmtico lgicas. ........................................... 13 A1.2.10. Reglas para construir Expresiones. .................................................................................... 13 A1.3. SMBOLOS DEL LENGUAJE. LXICO. .............................................................................................. 15 A1.3.1. Conjuntos de Caracteres. ...................................................................................................... 15 A1.3.2. Elementos Lxicos (tokens). .................................................................................................. 16 A1.3.3. Separadores .......................................................................................................................... 16 A1.3.4. Comentarios. ......................................................................................................................... 17 A1.3.5. Carcter. ............................................................................................................................... 17 A1.3.6. Strings. ( tira, mensaje, texto, hileras, cadenas) ................................................................... 17 A1.3.7. Nmeros. ............................................................................................................................... 17 A1.3.8. Identificadores. ..................................................................................................................... 18 A1.3.9. Delimitadores. ....................................................................................................................... 19 A1.3.10. Resumen. ............................................................................................................................. 19 A1.3.11. Ejemplos.............................................................................................................................. 19
A1.3.11.1. Indicar mediante parntesis como se evalan las expresiones:..................................................... 19 A1.3.11.2. Escribir todas las secuencias que cumplen la sintaxis dada por: .................................................. 20

NDICE GENERAL. ................................................................................................................................... 21 NDICE DE FIGURAS................................................................................................................................. 22

Profesor Leopoldo Silva Bijit

20-01-2010

22

Estructuras de Datos y Algoritmos

ndice de figuras.
FIGURA A1.1. PRODUCCIN ..........................................................................................................................2 FIGURA A1.2. ALTERNATIVA ........................................................................................................................3 FIGURA A1.3. CONCATENACIN....................................................................................................................4 FIGURA A1.4. OPCIN. ..................................................................................................................................4 FIGURA A1.5. SINTAXIS DE SIGNO.................................................................................................................5 FIGURA A1.6. REPETICIN ............................................................................................................................5 FIGURA A1.7. REPETICIN DE A LO MENOS UNA VEZ.....................................................................................6 FIGURA A1.8. SECUENCIA SIGNO ENTERO .....................................................................................................8 FIGURA A1.9. DGITO ENTERO.......................................................................................................................8 FIGURA A1.10. ENTERO CON SIGNO ..............................................................................................................9 FIGURA A1.11. REPETICIN (I) ......................................................................................................................9 FIGURA A1.12. REPETICIN RECURSIVA (II) ................................................................................................10 FIGURA A1.13. PRODUCCIN RECURSIVA....................................................................................................10 FIGURA A1.14. SIMPLIFICACIN A NO RECURSIVA. .....................................................................................11 FIGURA A1.15. DERIVACIN .......................................................................................................................11 FIGURA A1.16. DERIVACIN .......................................................................................................................12 FIGURA A1.17. REGLAS DE PRECEDENCIA Y ASOCIATIVIDAD. .....................................................................15 FIGURA A1.18. SINTAXIS DE NMERO .........................................................................................................18 FIGURA A1.19. SINTAXIS DE IDENTIFICADOR ..............................................................................................18

Profesor Leopoldo Silva Bijit

20-01-2010

Vous aimerez peut-être aussi