Logo Studenta

GRAMÃ_TICA LENG HIPOT

¡Estudia con miles de materiales!

Vista previa del material en texto

ING. JORGE BUABUD
LINGÜÍSTICA MATEMÁTICA
U.T.N. – F.R.T. 
S. y S. de los L. 
Consideremos un lenguaje de programación sencillo, con un mínimo de 
complejidad en su sintaxis.
Supongamos los siguientes componentes léxicos, que en total constituyen el 
alfabeto del lenguaje o sea el alfabeto de símbolos terminales de la gramática:
 Palabras claves: if, while, break, else , then , do
 Identificadores estándar de tipo: int, float, boolean, char
 Identificador de variable: id
 Números: entero, real
 Caracteres: literal
 Booleanos: falso, cierto
 Delimitadores: { , } , ; , [ , ]
 Operadores: = , + ,  , or
Ejemplo de gramática para un lenguaje 
de programación hipotético:
ING. JORGE BUABUD
LINGÜÍSTICA MATEMÁTICA
U.T.N. – F.R.T. 
S. y S. de los L. 
Por simplicidad se ha supuesto un solo valor de identificador {id}, solo dos 
números válidos {entero, real} y un solo carácter {literal}.
Por otro lado supongamos el siguiente alfabeto de símbolos No_terminales:
Σ = { P, D, T, A, E, N, B, S, W, I, R } donde P es el axioma de la gramática.
Podemos interpretar estos símbolos como nemotécnicos que representan los 
componentes sintácticos: Programa, Declaración, Tipo, Arreglo, Expresión, 
valor Numérico, valor Booleano, Sentencia, estructura While, estructura If, 
Resto de la estructura if.
Por último, el conjunto de Reglas de Producción que permitirá generar las 
palabras de este lenguaje formal, es decir los “programas” escritos en este 
lenguaje de programación hipotético, es: 
N
Ejemplo de gramática para un lenguaje 
de programación hipotético:
ING. JORGE BUABUD
LINGÜÍSTICA MATEMÁTICA
U.T.N. – F.R.T. 
S. y S. de los L. 
Ejemplo de gramática para un lenguaje 
de programación hipotético:
1) P  D ; { S }
2) D  D ; D | T id A
3) T  int | float | boolean | char
4) A  [ entero ] | λ
5) E  entero | real | falso | cierto | literal | id | id[E] | E + E | E  E | E or E
6) S  S ; S | W | break | I | id = E | id[E] = E 
7) W  while E do { S }
8) I  if E then { S } R
9) R  else { S } | λ
ING. JORGE BUABUD
LINGÜÍSTICA MATEMÁTICA
U.T.N. – F.R.T. 
S. y S. de los L. 
Aplicando estas reglas podemos generar los siguientes “programas”:
P  D ; { S }  T id A ; { S }  int id A ; { S }  int id ; { S } 
int id ; { id = E }  int id ; { id = entero }
P  D ; { S }  T id A ; { S }  float id A ; { S }  float id[entero] ; { S } 
float id[entero] ; { id[E] = E }  float id[entero] ; { id[entero] = E } 
float id[entero] ; { id[entero] = real }
También se puede generar los siguientes “programas” de dudosa coherencia: 
P * boolean id ; { id = entero } 
P * char id[entero] ; { id[real] = literal }
Ejemplo de gramática para un lenguaje 
de programación hipotético:
ING. JORGE BUABUD
LINGÜÍSTICA MATEMÁTICA
U.T.N. – F.R.T. 
S. y S. de los L. 
Otros ejemplos de secuencias obtenidas con esta gramática son:
 int id ; { id = entero ; id = entero + entero ; id = id + id }
 float id ; { id = real ; if id  entero + entero then { id = id + entero } }
 int id ; { id = entero ; while id  real do { id = id + entero } }
char id ; { id = falso ; if id[literal] or entero then { id = literal } }
boolean id[entero] ; { id = cierto }
float id ; { if real then { id = literal } }
Podemos concluir que esta gramática es capaz de representar 
la sintaxis del lenguaje de programación pero no su semántica.
Ejemplo de gramática para un lenguaje 
de programación hipotético:

Continuar navegando