You are on page 1of 2

25/03/13

49

50

Expresiones sintcticamente distintas, semnticamente iguales


Dos expresiones con la misma semntica pueden escribirse distinto gracias al syntactic sugar (azcar sintctico) Puede haber muchas razones para implementar un syntactic sugar:

Reexiones sobre Sintaxis

Las expresiones generadas a partir de syntactic sugar no forman parte del lenguaje de kernel, sino que hay que traducirlas

facilidad y rapidez de escritura analoga con otros lenguajes ya existentes evitar errores de programacin comunes

51

52

Cmo se procesa el syntactic sugar

Cmo se procesa el syntactic sugar

gramtica programador

gramtica programador

programa

parser

rbol sintctico

rbol sintctico

mquina virtual

programa

parser

traduccin rbol sintctico en lenguaje de programacin

mquina virtual rbol sintctico en lenguaje de kernel

53

Syntactic sugar sobre procedimientos: funciones


En el lenguaje de ncleo slo hay procedimientos, NO funciones Una extensin que nos resulta til incorporar a nuestro lenguaje son las funciones, por analoga con otros lenguajes ya existentes Una funcin se traduce a un procedimiento con un argumento extra:
fun {Inc X} X+1 end se traduce proc {Inc X Y} Y=X+1 end A={Inc 10} se traduce a {Inc 10 A}

54

Syntactic sugar en declaracin de mltiples variables


Declaracin de mltiples variables local X Y in statement end Se transforma en local X in local Y in statement end end

<s>::= fun { <var>+ } <s> end

25/03/13

55

56

Syntactic sugar en anidado de expresiones

Syntactic sugar en inicializacin de variables


Inicializacin de Variables local X = value in statement end

Anidado de expresiones if basicExpr then s else s end Se transforma en: local T in T = basicExpr if T then statement1 else statement2 end end T es una nueva variable

Se transforma en: local X in X = value statement end

57

58

Asignacin de Tipo a Variables


Los valores claramente tiene un tipo, e.g., enteros, strings. Qu pasa con las variables?

Asignacin de Tipo a Variables


Los valores claramente tiene un tipo, e.g., enteros, strings. Qu pasa con las variables? Los lenguajes de programacin tienen diferentes comportamientos respecto al tipo de las variables: Fuertemente Tipado: La variables pueden tener asociado un tipo, que restringe el tipo de valor que pueden acomodar. Cmo se determina ese tipo?
Esttico: todos los tipos de las variables se saben en tiempo de compilacin. Puede ser declarado por el usuario. Dinmico: una variable adquiere un tipo en cuando se le asocia un valor. En cualquier caso, ese tipo no cambia a lo largo de la ejecucin. El tipo es nico y jo. Dbilmente Tipado: Las variables no tienen tipos asociados. Eg. Los argumentos de una funcin pueden variar de tipo.

You might also like