Referencia de la notación de GNU LilyPond: A.13 Glosario técnico

## A.13 Glosario técnico

Glosario de los términos técnicos y conceptos que se utilizan internamente en LilyPond. Estos términos pueden aparecer en los manuales, en las listas de distribución de correo o en el código fuente.

### alist (lista-A)

Una lista asociativa o abreviadamente una lista-A (alist en inglés) es una pareja de Scheme que asocia un valor con una clave: `(clave . valor)`. Por ejemplo, en ‘`scm/lily.scm`’, la lista-A “type-p-name-alist” asocia ciertos predicadps de tipo (p.ej. `ly:music?`) con nombres (p.ej. “music”) de forma que se pueda informar de los fallos de comprobación de tipo con un mensaje de consola que incluye el nombre del predicado de tipo esperado.

### callback

Una callback es una rutina, función o método cuya referencia se pasa como argumento en una llamada a otra rutina, permitiendo así que la runtina llamada invoque a aquélla. La técnica permite que una capa de software de nivel más bajo llame a una función definida en una capa de nivel más alto. Las funciones de callback se usan ampliamente en LilyPond para permitir al código de Scheme del nivel de usuario definir cuántas acciones de bajo nivel se llevan a cabo.

### closure (cerradura)

En Scheme, se crea una cerradura cuando una función, por lo general una expresión lambda, se pasa como variable. La cerradura contiene el codigo de la función y referencias a las ligaduras léxicas de las variables libres de la función (es decir, las variables que se usan en la expresión pero se definen fuera de ella). Cuando más tarde se aplica esta función a diferentes argumentos, las ligaduras de variables libres que se capturaron dentro de la cerradura se utilizan para obtener los valores de las variables libres que se usarán en el cálculo. Una propiedad útil de las cerraduras es la retención de los valores internos de las variables de una invocación a otra, permitiendo así que se pueda mantener un estado.

Una cerradura simple es una cerradura cuya expresión no tiene variables libres y por ello no tiene ligaduras de variables libres.

Una cerradura simple se representa en LilyPond mediante un ‘smob’ que contiene la expresión y un método para aplicar la expresión a la lista de argumentos que se le pasa.

### glifo

Un glifo es una representación gráfica particular de un carácter tipográfico, o una combinación de dos caracteres que forman una ligadura. Un conjunto de glifos con un estilo y forma uniformes forman una fuente tipográfica, y un conjunto de fuentes tipográficas que abarcan varios estilos forman un tipo.

#### Véase también

Referencia de la notación: Tipografías, Codificación del texto.

### grob (objeto gráfico)

Los objetos de LilyPond que representan elementos de la notación en la salida impresa tales como la cabeza y la plica de las notas, ligaduras de unión y de expresión, digitaciones, claves, et. se denominan ‘objetos de presentación’, a menudo conocidos como ‘OBjetos GRáficos’, o abreviadamente grobs. Se representan mediante instancias de la clase `Grob`.

#### Véase también

Manual de aprendizaje: Objetos e interfaces, Convenciones de nombres de objetos y propiedades, Propiedades de los objetos de presentación.

Referencia de funcionamiento interno: grob-interface, All layout objects.

### inmutable

Un objeto inmutable es aquél cuyo estado no se puede modificar después de su creación, en contraste con los objetos mutables, que se pueden modificar después de su creación.

En LilyPond, las propiedades inmutables o compartidas definen el estilo y comportamiento predeterminados de los grobs. Se comparten por parte de muchos objetos. En aparente contradicción con su nombre, se pueden cambiar utilizando `\override` y `\revert`.

#### Véase también

Referencia de la notación: mutable.

### interfaz

Las acciones y propiedades comunes a un conjunto de grobs se agrupan en un objeto denominado `interfaz de grob (grob-inerface)`, o abreviadamente ‘interfaz’.

#### Véase también

Manual de aprendizaje: Objetos e interfaces, Convenciones de nombres de objetos y propiedades, Propiedades de los interfaces.

Referencia de la notación: Interfaces de la presentación.

Referencia de funcionamiento interno: Graphical Object Interfaces.

### lexer (analizador léxico)

Un lexer o analizador léxico es un programa que convierte una secuencia de caracteres en una secuencia de elementos o tokens, en un proceso que se llama análisis léxico. El analizador léxico de LilyPond convierte el flujo obtenido a partir de un archivo de entrada ‘`.ly`’ en un flujo descompuesto en tokens más apto para la siguiente fase del procesado: el análisis sintáctico, véase parser (analizador sintáctico). El analizador léxico de LilyPond lexer está construido con la herramienta Flex a partir del archivo de lexer ‘`lily/lexer.ll`’ que contiene las reglas léxicas. Este archivo es parte del código fuente y no se incluye dentro de la instalación binaria de LilyPond.

### mutable

Un objeto mutable es aquél cuyo estado se puede modificar después de su creación, en contraste con un objeto inmutable, cuyo estado se fija en el momento de la creación.

En LilyPond, las propiedades mutables contienen valores específicos de un grob. Por lo general, las listas de otros objetos o los resultados de los cálculos se almacenan en propiedades mutables.

#### Véase también

Referencia de la notación: inmutable.

### output-def (definición de salida)

Una instancia de la clase `Output-def` contiene los métodos y estructuras de datos asociados con un bloque de salida. Se crean instancias parra los bloques midi, layout y paper.

### parser (analizador sintáctico)

Un parser o analizador sintáctico analiza la secuencia de tokens o elementos léxicos producida por un analizador léxico para determinar su estructura gramatical, agrupando los elementos léxicos en conjuntos mayores según las reglas de la gramática. Si la secuencia de elementos léxicos es válida, el producto final es un árbol de tokens cuya raíz es el símbolo inicial de la gramática. Si no se puede conseguir esto, el archivo es inválido y se produce un mensaje de error adecuado. Las agrupaciones sintácticas y las reglas para construir estas agrupaciones a partir de sus elementos constituyentes para la sintaxis de LilyPond están definidas en ‘`lily/parser.yy`’ y se muestran en la forma normal de Backus (BNF) dentro de Gramática de LilyPond. Este archivo se usa para construir el analizador sintáctico durante la compilación del programa por parte del generador de analizadores sintácticos, Bison. Es parte del código fuente y no se incluye dentro de la instalación binaria de LilyPond.

### variable del analizador sintáctico

Son variables definidas directamente dentro de Scheme. Su uso directo por parte de los usuarios está fuertemente desaconsejado, porque su semántica de ámbito puede ser confusa.

Cuando el valor de una de estas variables se modifica dentro de un archivo ‘`.ly`’, el cambio es global, y a no ser que se revierta explícitamente, el nuevo valor persistirá hasta el final del archivo, afectando a todos los bloques `\score` así como a los archivos externos añadidos con la instrucción `\include`. Esto puede conducir a consecuencias imprevistas y en proyectos de composición tipográfica complejos puede ser difícil de rastrear.

LilyPond utiliza las siguientes variables del analizador sintáctico:

- afterGraceFraction
- musicQuotes
- mode
- output-count
- output-suffix
- parseStringResult
- partCombineListener
- pitchnames
- toplevel-bookparts
- toplevel-scores
- showLastLength
- showFirstLength

### prob (objeto de propiedades)

Los OBjetos de PRopiedades, o abreviadamente probs, son instancias de la clase `Prob`, que es una sencilla clase básica que tiene listas-A de propiedades mutables e inmutables y los métodos para manipularlas. Las clases `Music` y `Stream_event` derivan de `Prob`. También se crean instancias de la clase `Prob` para almacenar el contenido formateado de los grobs del sistema y los bloques de títulos durante el proceso de disposición de la página.

### cerradura simple

Véase closure (cerradura).

### smob (objeto de Scheme)

Los Smobs, u OBjetos de ScheMe, forman parte del mecanismo utilizado por Guile para exportar objetos de C y de C++ al código de Scheme. En LilyPond, se crean smobs a partir de objetos de C++ por medio de macros. Hay dos tipos de objetos smob: los smobs simples, orientados a objetos inmutables simples como números, y los smobs complejos, usados para objetos con identidades. Si tiene acceso a las fuentes de LilyPond sources, encontrará más información en ‘`lily/includes/smob.hh`’.

### stencil (sello)

Las instancias de la clase stencil contienen la información necesaria para imprimir un objeto tipográfico. Es un smob simple que contiene una caja de confinamiento, que a su vez define las dimensiones vertical y horizontal del objeto, y una expresión de Scheme que imprime el objeto cuendo se evalúa. Los stencils o sellos se pueden combinar para formar sellos más complejos definidos por un árbol de expresiones de Scheme formado a partir de las expresiones de Scheme de los sellos que lo componen.

La propiedad `stencil`, que conecta a un grob con su sello, se define dentro del interfaz `grob-interface`.

#### Véase también

Referencia de funcionamiento interno: grob-interface.

Otros idiomas: English, deutsch, 日本語.

#### LilyPond — Referencia de la notación