Sintaxis.pdf

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