Por Que Ami

Páginas: 16 (3839 palabras) Publicado: 24 de septiembre de 2012
Aplicación e Interpretación de Lenguajes de Programación

Lenguajes de Programación se imparte en universidades como las estadounidenses desde el tercer semestre, pero más en el sexto y en el octavo, y aún más en el posgrado.

Una forma de aprender Lenguajes de Programación es con base en intérpretes, la otra mediante surveys de lenguajes.

La primera escribe programas para aprenderconceptos, si se enseña a la computadora un concepto, se aprende mejor. Sin embargo, no se valoran suficientemente las consecuencias, lo cual se aprecia mejor mediante un survey de lenguajes.

1 Modelaje de lenguajes

Centrarse en el comportamiento asociado a la sintaxis de un lenguaje, es centrarse en su semántica. Para modelar significado, existen varias técnicas, inicialmente se emplea lasemántica de intérpretes. La que considera que para explicar un lenguaje, se apoya en escribirle un intérprete.

Dependiendo del lenguaje concreto manejado se pueden representar Expresiones Aritméticas, AEs:

• (3−4)+ 7 (infija),
• 3 4 - 7 + (postfija), o
• (+ (- 3 4) 7) (prefija parentisada)

Cuya esencia es ser un árbol con la operación suma en la raíz y dos hojas, laizquierda y la derecha.

Lo que en Racket puede escribirse

(add (sub (num 3) (num 4))
(num 7))

Una definición que maneja la expresión anterior es:

(define-type AE
[num (n number?)]
[add (izq AE?)(der AE?)]
[sub (izq AE?)(der AE?)])

1.3 Un parser (analizador sintáctico) inicial

Si se desea construir un intérprete de AEs, sin entrar en detalles sintácticosde un lenguaje fuente particular, se requiere un programa que traduzca términos de sintaxis concreta en valores tipo AE, para lo cual se requiere un parser.

En términos formales, un parser es un programa que convierte sintaxis concreta en sintaxis abstracta, la que que en el caso de la aritmética, puede ser una parecida a la de Racket.

1. 3
2. {+ 3 4}
3.{+ {- 3 4} 7}

aprovechando la primitiva read, la cual si recibe una secuencia de caracteres que obedecen a la de un número, la convierte a su equivalente en Racket. Si la sintaxis es la de un símbolo, read lo devuelve. Si la entrada está envuelta en una pareja de delimitadores, o paréntesis, corchetes, o llaves – read devuelve una lista de valores Racket, cada uno como resultado de invocarread recursivamente.

(1 a)

devuelve ’ (1 a),

{+ 3 4}

devuelve '(+ 3 4), y

{+ {- 3 4} 7}

devuelve '(+ (- 3 4) 7)

La primitiva read es la joya de la corona de Lisp, Scheme y Racket, reduce dos fases laboriosas, denominadas tokenizing (o scanning) y parsing, en otras tres más accesibles: tokenizing, lectura y parsing; aún más proporciona en una sola primitiva la primera y lasegunda, requiriendo desarrollar sólo la tercera.

read devuelve un valor conocido como s-expresión.

El parser requiere identificar qué tipo de programa está analizando, y convertirlo en sintaxis abstracta apropiada, para ello requiere una clara especificación de la sintaxis concreta del lenguaje, una descripción BNF de una aritmética rudimentaria es:

<AE> ::= <num>| {+ <AE> <AE>}
| {- <AE> <AE>}

en el que <AE> es una expresión no terminal lo que significa que puede
reescribirse como algo a la izquierda, ::= significando "puede reescribirse".
Cada | presenta una o más opciones, denominadas una producción; que no esté encerrada en <...> representa sintaxis literal, si bien debeexistir una definición de <num>, ésta se deja a la imaginación de cada quien.

Las <AE>s en las producciones son referencias a <AE>s no terminales.

Suponiéndose que los programas alimentados al parser son sintácticamente válidos, el resultado de leer debe ser un número, o una lista cuyo primer valor es un símbolo (específicamente, ‘+ o ‘–), requiriendo parsing adicional...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • ¿Por Que Ami?
  • Por que ami
  • Por que ami
  • Por Que Ami
  • AMIA
  • por que ami
  • Por Que Ami
  • Por Que Ami

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS