Vous êtes sur la page 1sur 31

Sintxis y Semntica

Un lenguaje de programacin es una


notacin formal para describir
algoritmos a ser ejecutados en una
computadora
Lenguaje
de programacin

Sintaxis
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.
v: array [1..10] of integer;
y

-------- en Pascal

int v[10]; ----------------------------- en C

Sintxis y Semntica

Cul es la utilidad de definir y conocer 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

Sintxis
La 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

Sintxis

Alfabeto o conjunto de caracteres

Fortran A-Z 0-9


b = + - / ( ) , . $ ; : 36 caracteres ANSI y
13 especiales (este es el mas usado)
Algol-60
A-Z a-z 0-9 < < > > = ....... 28 caracteres especiales
Antes:
Tomar el alfabeto EBCDEIC 8 bits
Corrientes
Tomar el alfabeto ASCII 7 bits 93 caracteres
imprimibles
Hoy: Se tiende a caracteres de 16 bits, ya que no alcanzan con 256
configuraciones, por la aparicin de caracteres especiales, ej.: ~

Importante: Tener en cuenta el orden de los caracteres que


es lo que se utiliza en las comparaciones.
La secuencia de bits que compone cada carcter la
determina la implementacin.

Sintxis

Identificadores

Operadores

Eleccin ms ampliamente utilizada: Cadena de


letras y dgitos, que deben comenzar con una letra
Si se restringe la longitud se pierde legibilidad
Con los operadores de suma, resta, etc. la mayora
de los lenguajes utilizan +, -. En los otros
operadores no hay tanta uniformidad

Comentarios

Hacen los programas ms legibles

El cdigo es ledo muchas ms veces de lo que


es escrito. Guido Van Roussen.

Sintxis

Palabra clave y palabra reservada

Array
do
else
if
Palabra clave o keywords, son palabras claves que tienen
un significado dentro de un contexto.
Palabra reservada, son palabras claves que adems no
pueden ser usadas por el programador como identificador de
otra entidad.
Ventajas de su uso:

Permiten al compilador y al programador expresarse claramente


Hacen los programas ms legibles y permiten una rpida
traduccin

Soluciones para evitar confusin entre palabras claves e


identificadores

Usar palabras reservadas


Identificarlas de alguna manera (Ej. Algol) usa PROGRAM END
Libre uso y determinar de acuerdo al contexto.
Ej: if if=1 then if=0;

Sintxis

Estructura sintctica

Vocabulario o words
Conjunto de caracteres y palabras necesarias para construir
expresiones, sentencias y programas. Ej: identificadores,
operadores, palabras claves, etc.
Las words no son elementales se construyen a partir del alfabeto

Expresiones

Son funciones que a partir de un conjunto de datos


devuelven un resultado.
Son bloques sintcticos bsicos a partir de los cuales se
construyen las sentencias y programas

Sentencias

Componente sintctico ms importante.


Tiene un fuerte impacto en la facilidad de escritura y
legibilidad
Hay sentencias simples, estructuradas y anidadas.

Sintxis

Reglas lxicas y sintcticas.


Diferencias entre maysculas y minsculas
Smbolo de distinto. En C != en Pascal <>

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
El If en C no lleva then, en Pascal si

La diferencia entre lxico y sintctico es


arbitrario, dan la apariencia externa del
lenguaje

Sintxis

Tipos de Sintxis

ABSTRACTA

CONCRETA

Se refiere bsicamente a la estructura


Se refiere bsicamente a la parte lxica

PRAGMTICA

Se refiere bsicamente al uso prctico

Sintxis

Ejemplo de sintxis concreta y abstracta:.


while (x!= y)
Uso de parntesis {
----------Forma de
};
encerrar un
(En C)
bloque

while x<>y do
begin
-------Smbolo de distinto
end

(En Pascal)

Son diferentes respecto a la sintxis


concreta, porque existen diferencias lxicas
entre ellas
Son iguales respecto a la sintxis abstracta,
ya que ambas tienen la misma estructura
while condicin
bloque

Sintxis

Ejemplo de sintxis pragmtica:.

Ej1.
<>

es mas legible que !=

Ej2.
En C y Pascal {} o begin-end pueden omitirse si
el bloque esta compuesto por una sola
sentencia

while (x!=y) x=y+1


Pragmticamente puede conducir a error ya

que si se necesitara agregar una sentencia


debe agregarse el begin end o las {}.

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 Se define como Terminales


Metasmblo

Sintxis

Gramtica

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
producciones
Conjunto de
smbolos
terminales

Smbolo distinguido
de la gramtica que
pertenece a N

Sintxis

rboles sintcticos

Juan un canta manta


Es una oracin sintcticamente incorrecta
No todas las oraciones que se pueden armar
con los terminales son vlidas
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

Sintxis

rboles sintcticos
Dos maneras de construirlo:

Mtodo botton-up

De izquierda a derecha
De derecha a izquierda

Mtodo top-dow

De izquierda a derecha
De derecha a izquierda

Ejemplo: rbol sintctico de oracin. Top-down de


izquierda a derecha
<oracin>
<sujeto>
<predicado>
<verbo>
<objeto>
Juan

compra

<art>
un

<nombre>
perro

Sintxis

rbol de derivacin:
Ejemplo top-down de izquierda a derecha
<oracin>
=>
<sujeto><predicado>
=>
Juan <predicado>
=>
Juan <verbo><objeto>
=>
Juan compra <objeto>
=>
Juan compra art><sustan>
=>
Juan compra un <sustan>

=>
Juan compra un perro
Los compiladores utilizan el parse cannico
que es el bottom-up de izquierda a derecha

Otro ejemplo:

Expresiones simples de uno y dos trminos


Posibles operaciones: + / * y
Solo los operandos A, B y C
Ejemplo de expresiones vlidas:

A
A+B
A-C
etc.

Sintxis

Producciones recursivas:
Son las que hacen que el conjunto de
sentencias descripto sea infinito
Ejemplo de producciones recursivas:
<natural> ::= <digito> | <digito><digito>
| ....... | <digito>..............<digito>
Si lo planteamos recursivamente

GN = ( N, T, S, P)
N = { <natural>, <digito> }T = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }
S = <natural>
P = {<natural> ::= <digito> | <digito> <natural>,
<digito> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9}

Cualquier gramtica que tiene una produccin


recursiva describe un lenguaje infinito.

Sintxis

Producciones recursivas:

Regla recursiva por la izquierda

La asociatividad es por la izquierda


El smbolo no terminal de la parte izquierda de una
regla de produccin aparece al comienzo de la
parte derecha

Regla recursiva por la derecha

La asociatividad es por la derecha


El smbolo no terminal de la parte izquierda de una
regla de produccin aparece al final de la parte
derecha

Sintxis

Gramticas ambiguas:

Una gramtica es ambigua si una sentencia


puede derivarse de mas de una forma

G= ( N, T, S, P)
N = { <id>, <exp>, <asig>}
T = { A,B,C, +,*,-,/,:=}
S = <asig>
P1 = {
<asig> ::= <id> := <exp>
<exp> ::= <exp>+<exp>|<exp>*<exp>|<exp>- <exp>|
<exp>/ <exp>|<id>
<id> ::= A | B | C
recursin
}

Sintxis

Subgramticas:

Sea la gramtica para identificadores GI = ( N, T, S, P)

N = { <id>, <letra>, <digito>, <otro>}


T = { A, ................, Z, 0, ........, 1}
S = <id>
P = {
<id> ::= <letra> | <letra><otro>,
<otro> ::= <letra> | <digito> | <letra><otro> | <digito><otro>,
<letra> ::= A | B | C | .............| Z
<digito> ::= 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

Sintxis

Gramticas libres de contexto


sensibles al contexto :
int e;
a := b + c;

Segn nuestra gramtica son sentencias


sintcticamente vlidas, aunque puede suceder
que a veces no lo sea semnticamente.

El identificador est definido dos veces


No son del mismo tipo

Una gramtica libre de contexto es aquella en


la que no realiza un anlisis del contexto.
Una gramtica sensible al contexto analiza este
tipo de cosas. (Algol 68).

Sintxis

Otras formas de describir la sintaxis


libres de contexto:

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

Sintxis

Ejemplo con EBNF:


Definicin nmeros enteros en BNF y en EBNF
BNF
<enterosig> ::= + <entero> | - <entero> |
<entero>
<entero> ::= <digito>| <entero><digito>
Recursin

EBNF
<enterosig>::= [(+|-)] <digito>{<digito>}*

Elimin la recursin y es mas fcil de


entender

Sintxis

Diagramas sintcticos (CONWAY):

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

Sintxis

Diagramas sintcticos (CONWAY):


Terminales
Flujo
No terminales
Repeticin
Seleccin
Ej:

Programa

Sentencia

Sintxis

Diagramas sintcticos (CONWAY):


EBNF
<enterosig>::= [(+|-)] <digito>{<digito>}*
entero

+
-

1
2
3
4
5
6
7
8
9

Sintxis

Pensar:

Como definir una gramtica para una


expresin con operandos del tipo
identificador y nmeros y que refleje
el orden de prioridades de las
operaciones

Vous aimerez peut-être aussi