Lenguajes
Slides in this set (22)
-
-
- Un lenguaje (del provenzal lenguatge y del latín lingua) es un sistema de comunicación estructurado para el que existe un contexto de uso y ciertos principios combinatorios formales. Existen contextos tanto naturales como artificiales.
-
- Cada lenguaje muestra una estructura llamada su gramática o sintaxis. Por ejemplo, una oración correcta siempre consiste en un sujeto seguido de un predicado, correcto aquí significa bien formado. Este hecho puede ser descrito por la siguiente fórmula: oración = predicado del sujeto.

-
- Si añadimos a la formula algunos elementos...
- sujecto-->>Juan|Mary
- predicado-->>come|habla
- ...entonces podemos definir aqui exactamente 4 posibles oraciones:
- Juan come Mary come
- Juan habla Mary habla
-
- Llamamos a estas fórmulas reglas de sintaxis, producciones o simplemente ecuaciones sintácticas. El sujeto y el predicado son clases sintácticas. Una notación más corta para lo anterior omitiendo identificadores significativos:
- O=SP
- S="a"|"b" L={ac,ad,bc,bd}
- P="c"|"d"
- El conjunto L de oraciones que puede generarse de esta manera, es decir, mediante la sustitución repetida de los lados izquierdos por los lados derechos de las ecuaciones, se llama el lenguaje.
-
- El ejemplo anterior evidentemente define un lenguaje que consta de solo cuatro oraciones, sin embargo, un el lenguaje contiene infinitas oraciones. El siguiente ejemplo muestra que un conjunto infinito puede muy bien definido con un número finito de ecuaciones. El símbolo ∅ representa la secuencia vacía.
- O=A L={∅,a,aa,aaa,aaa,...}
- A="a"A|∅
- El medio para hacerlo es la recursión que permite que una sustitución (aquí de A por "a" A) se repita arbitrariamente a menudo.
-
- Nuestro tercer ejemplo se basa nuevamente en el uso de la recursividad. Pero genera no solo frases consistentes de una secuencia arbitraria del mismo símbolo, pero también oraciones anidadas:
- O = A L = {b, abc, aabcc, aaabccc, ... }
- A = "a" A "c" | "b".
- Está claro que se pueden expresar anidamientos arbitrariamente profundos (aquí de As), una propiedad particularmente importante en la definición de lenguajes estructurados.
-
- Nuestro cuarto y último ejemplo exhibe la estructura de expresiones. Los símbolos E, T, F y V representan expresión, término, factor y variable.
- E = T | A "+" T.
- T = F | T "*" F.
- F = V | "(" E ")".
- V = "a" | "b" | "c" | "d".
- A partir de este ejemplo, es evidente que una sintaxis no solo define el conjunto de oraciones de un idioma, sino también les proporciona una estructura.
-
- La sintaxis descompone oraciones en sus componentes.
- Las representaciones gráficas se llaman árboles estructurales o árboles sintácticos.

-
- 1. El conjunto de símbolos de terminal. Estos son los símbolos que ocurren en sus oraciones. Se dice que son terminal, porque no pueden ser sustituidos por ningún otro símbolo. El proceso de sustitución se detiene con símbolos terminales.
- 2. El conjunto de símbolos no terminales. Denotan clases sintácticas y pueden ser sustituidas.
-
- 3. El conjunto de ecuaciones sintácticas (también llamadas producciones). Estos definen las posibles sustituciones de símbolos no terminales Se especifica una ecuación para cada símbolo no terminal.
- 4. El símbolo de inicio. Es un símbolo no terminal.
-
- Un lenguaje es, por lo tanto, el conjunto de secuencias de símbolos terminales que, comenzando con el símbolo de inicio, puede generarse mediante la aplicación repetida de ecuaciones sintácticas, es decir, sustituciones.
- También deseamos definir rigurosa y precisamente la notación en la que se especifican las ecuaciones sintácticas. Deje que los símbolos no terminales sean identificadores como los conocemos de los lenguajes de programación, es decir, como secuencias de letras (y posiblemente dígitos), por ejemplo, expresión, término. Deje que los símbolos terminales sean secuencias de caracteres entre comillas (cadenas), por ejemplo, "=", "|".
-
- Para la definición de la estructura de estas ecuaciones es conveniente usar la herramienta que acaba de definirse:
- syntax = production syntax | ∅.
- production = identifier "=" expression "." .
- expression = term | expression "|" term.
- term = factor | term factor.
- factor = identifier | string.
- identifier = letter | identifier letter | identifier digit.
- string = stringhead """.
- stringhead = """ | stringhead character.
- letter = "A" | ... | "Z".
- digit = "0" | ... | "9".
-
- Esta notación fue introducida en 1960 por J. Backus y P. Naur en forma casi idéntica para el descripción de la sintaxis del lenguaje Algol 60. Por lo tanto se llama Forma Backus Naur (BNF) (Naur, 1960).
- Utilizar la recursión para expresar repeticiones simples es bastante perjudicial para legibilidad. Por lo tanto, ampliamos esta notación por dos constructos para expresar repetición y opcionalidad. Además, permitimos que las expresiones se encierren entre paréntesis. Por lo tanto, una extensión de BNF llamado EBNF (Wirth, 1977) se postula, que de nuevo usamos inmediatamente para su propia definición precisa:
-
-
- syntax = {production}.
- production = identifier "=" expression "." .
- expression = term {"|" term}.
- term = factor {factor}.
- factor = identifier | string | "(" expression ")" | "[" expression "]" | "{" expression "}".
- identifier = letter {letter | digit}.
- string = """ {character} """.
- letter = "A" | ... | "Z".
- digit = "0" | ... | "9".
-
- Uno se pregunta por qué una definición exacta de las oraciones pertenecientes a un idioma debe ser de gran importancia. De hecho, no es realmente. Sin embargo, es importante saber si una oración está bien o no formado. Pero incluso aquí uno puede pedir una justificación. En definitiva, la estructura de un (bien formado) la oración es relevante, porque es instrumental para establecer el significado de la oración. Debido a la estructura sintáctica, las partes individuales de la oración y su significado pueden ser reconocidas independientemente, y juntos producen el significado del todo.
-
- Vamos a ilustrar este punto usando el siguiente ejemplo trivial de una expresión con el símbolo de suma. Deje que E represente la expresión y N el número:
- E = N | E "+" E.
- N = "1" | "2" | "3" | "4" .
-
- Evidentemente, "4 + 2 + 1" es una expresión bien formada. Incluso se puede derivar de varias maneras, cada correspondiente a una estructura diferente, como se muestra en la Figura:

-
- Las dos estructuras diferentes también se pueden expresar con paréntesis apropiados, a saber, como (4 + 2) + 1 y como 4 + (2 + 1), respectivamente. Afortunadamente, gracias a la asociatividad de la suma, ambos producen el mismo valor 7. Pero esto no siempre es necesario. El mero uso de la resta en lugar de la suma produce un ejemplo contrario que muestra que las dos estructuras diferentes también producen una interpretación diferente y resultado: (4 - 2) - 1 = 1, 4 - (2 - 1) = 3.
-
- El ejemplo ilustra dos hechos:
- 1. La interpretación de las oraciones siempre descansa en el reconocimiento de su estructura sintáctica.
- 2. Cada oración debe tener una estructura única para ser inequívoca. Si no se cumple el segundo requisito, surgen oraciones ambiguas
-
- Los lenguajes cuentan con normas y reglas las cuales dan un significado a la oración si estas se cumplen, de no ser así, se podrían interpretar otros significados produciendo la ambigüedad, que, en los lenguajes de programación, ocasionaría un problema.
- Ademas, cabe destacar, que un lenguaje ambiguo puede llegar a ser inútil.
Information
- Description
- Informática Slide Set on Lenguajes, created by Jafet A. R. on 07/09/2018.
- Created by
- Jafet A. R.
- Views
- 18
- Tags
- Rating


