Upload
melanie-hughes
View
794
Download
0
Embed Size (px)
Citation preview
Sintxis y SemnticaUn lenguaje de programacin es una notacin formal para describir algoritmos a ser ejecutados en una computadora Lenguaje Sintaxis de programacin Semntica
Sintxis y Semntica
Definiciones.
Sintxis: Conjunto de reglas que definen como componer letras, dgitos y otros caracteres para formar los programas Semntica: Conjunto de reglas para dar significado a los programas sintcticamente vlidos.
Sintxis y Semntica
Cul es la utilidad de definir la sintxis y la semntica de un lenguaje? Quines se benefician?
Programadores Implementador (Compilador)
La definicin de la sintxis y la semntica de un lenguaje de programacin proporcionan mecanismos para que una persona o una computadora pueda decir:
Si el programa es vlido y Si lo es, qu significa
Sintxis
Caractersticas de la sintxis
La sintxis debe ayudar al programador a escribir programas correctos sintcticamente La sintxis establecen reglas que sirven para que el programador se comunique con el procesador La sintxis debe contemplar soluciones a caractersitcas tales como:
Legibilidad Verificabilidad Traduccin Falta de ambigedad
SintxisLa sintxis establece reglas que definen cmo deben combinarse las componentes bsicas, llamadas word, para formar sentencias y programas.
Elementos de la sintxis
Alfabeto o conjunto de caracteres identificadores Operadores Palabra clave y palabra reservada Comentarios y uso de blancos
Estructura sintctica Vocabulario o words Expresiones Sentencias
Reglas lxicas y sintcticas.
Sintxis
Reglas lxicas: Conjunto de reglas para formar las word, a partir de los caracteres del alfabeto Reglas sintcticas: Conjunto de reglas que definen como formar las expresiones y sentencias
La diferencia entre lxico y sintctico es arbitrario, dan la apariencia externa del lenguaje
Tipos de Sintxis
Sintxis
ABSTRACTA
Se refiere bsicamente a la estructura Se refiere bsicamente a la parte lxica Se refiere bsicamente al uso prctico
CONCRETA
PRAGMTICA
Sintxis
Cmo definir la sintxis
Se necesita una descripcin finita para definir un conjunto infinito (conjunto de todos los programas bien escritos) Formas para definir la sintaxis:
Lenguaje natural. Ej.: Fortran Utilizando la gramtica libre de contexto, definida por Backus y Naun: BNF. Ej: Algol Diagramas sintcticos son equivalentes a BNF pero mucho mas intuitivos
Sintxis
BNF (Backus Naun Form)
Es una notacin formal para describir la sintaxis Es un metalenguaje Utiliza metasmbolos
::=
|
Define las reglas por medio de producciones
Ejemplo: < digito > ::= 0|1|2|3|4|5|6|7|8|9 No terminal Terminales MetasmbloSe define como
Gramtica
Sintxis
Conjunto de reglas finita que define un conjunto infinito de posibles sentencias vlidas en el lenguaje. Una gramtica esta formada por una 4-tupla
G = ( N, T, S, P)Conjunto de smbolos no terminales Conjunto de smbolos terminales Conjunto de producciones Smbolo distinguido de la gramtica que pertenece a N
Sintxis
rboles sintcticos derivacin
y
rboles
de
Se necesita de un Mtodo de anlisis (reconocimiento) que permita determinar si un string dado es valido o no en el lenguaje: Parsing. El parse, para cada sentencia construye un rbol sintctico o rbol de derivacin
Producciones recursivas:
Sintxis
Son las que hacen que el conjunto de sentencias descripto sea infinito Ejemplo de producciones recursivas:
::= | | ....... | ..............
Si lo planteamos recursivamente
GN = ( N, T, S, P) N = { , }T = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 } S = P = { ::= | , ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9}
Cualquier gramtica que tiene una produccin recursiva describe un lenguaje infinito.
Gramticas ambiguas:
Sintxis
Una gramtica es ambigua si una sentencia puede derivarse de mas de una forma
G= ( N, T, S, P) N = { , , } T = { A,B,C, +,*,-,/,:=} S = P1 = { ::= := ::= +|*|- | / | ::= A | B | C recursin }
Subgramticas:
Sintxis
Sea la gramtica para identificadores GI = ( N, T, S, P)
N = { , , , } T = { A, ................, Z, 0, ........, 1} S = P = { ::= | , ::= | | | , ::= A | B | C | .............| Z ::= 0 | 1 | 2 | |9 }
Para definir la gramtica GE, de expresiones, se puede utilizar la gramtica de nmeros y de identificadores. GE se defira utilizando las subgramticas GN y GI
La filosofa de composicin es la forma en que trabajan los compiladores
Gramticas libres de sensibles al contexto :
Sintxis
contexto
y
Una gramtica libre de contexto es aquella en la que no realiza un anlisis del contexto y no se invo Una gramtica sensible al contexto se involucra con la Semntica esttica
Otras formas de describir la sintaxis libres de contexto:
Sintxis
EBNF. Esta gramtica es la BNF extendida Los metasimbolos que incorporados son:
[ ] elemento optativo puede o no estar (|) seleccin de una alternativa {} repeticin * 0 o mas veces + una o mas veces
Ejemplo con EBNF:
Sintxis
Definicin nmeros enteros en BNF y en EBNF BNF ::= + | - | ::= | EBNF ::= [(+|-)] {}*Recursin
Elimin la recursin y es mas fcil de entender
Diagramas sintcticos (CONWAY):
Sintxis
Es un grafo sintctico o carta sintctica Cada diagrama tiene una entrada y una salida, y el camino determina el anlisis. Cada diagrama representa una regla o produccin Para que una sentencia sea vlida, debe haber una camino desde la entrada hasta la salida que la describa. Se visualiza y entiende mejor que BNF o EBNF
Diagramas sintcticos (CONWAY):Terminales Flujo No terminales Repeticin Seleccin Ej:Programa { Sentencia }
Sintxis