Descarga la aplicación para disfrutar aún más
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:
Compartir