N'oubliez pas les espaces

Est-ce un bug, je n'en sais rien mais ça y ressemble.

L'instruction suivante :
\tag #'globalScore{
...
}

générait un "unexpected }" sur la dernière ligne du fichier, et une
désynchronisation des parties dans la directrice.

Il a suffit de rajouter un espace :
\tag #'partScore {
...
}

et tout est rentré dans l'ordre.

Un tag (ou une variable ?) non suivi d'un espace ignorerait donc le
caractère qui suit.

À vérifier ...

Jean-François

···

--
View this message in context: http://n2.nabble.com/N-oubliez-pas-les-espaces-tp4885116p4885116.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

Est-ce un bug, je n'en sais rien mais ça y ressemble.

L'instruction suivante :
\tag #'globalScore{
...
}

générait un "unexpected }" sur la dernière ligne du fichier, et une
désynchronisation des parties dans la directrice.

Il a suffit de rajouter un espace :
\tag #'partScore {
...
}

et tout est rentré dans l'ordre.

Un tag (ou une variable ?) non suivi d'un espace ignorerait donc le
caractère qui suit.

Ce n'est pas le caractère suivant le nom du tag qui est ignoré, c'est
plus simplement que ce caractère est incorporé au nom du tag.

Ce qui suit un dièse est parsé comme étant du Scheme, et
'globalScore{ (accolade comprise) est interprété par guile comme
étant un symbole.

Autrement dit, le fichier tel que tu l'avais écrit était équivalent
à :

\tag #'symbole
...
}

et finalement le parseur trouve une accolade fermante esseulée sur la
dernière ligne.

(On peut s'arrêter de lire ici)

A la question "est-ce un bug ?"
D'après R5RS :

<identifier> --> <initial> <subsequent>*
     > <peculiar identifier>

<initial> --> <letter> | <special initial>

<letter> --> a | b | c | ... | z
<special initial> --> ! | $ | % | & | * | / | : | < | =
     > > > ? | ^ | _ | ~

<subsequent> --> <initial> | <digit>
     > <special subsequent>

<digit> --> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

<special subsequent> --> + | - | . | @

<peculiar identifier> --> + | - | ...
<syntactic keyword> --> <expression keyword>

     > else | => | define
     > unquote | unquote-splicing
<expression keyword> --> quote | lambda | if
     > set! | begin | cond | and | or | case
     > let | let* | letrec | do | delay
     > quasiquote

Avec le commentaire suivant :

  The following five characters are reserved for future extensions to the
  language: { } |

Il semble que guile ne devrait pas incorporer l'accolade dans le symbole.
Il s'agirait donc, AFAICT, d'un bug dans guile.

Nicolas

···

Le 11 avr. 2010 à 12:44, Seventies a écrit :

== En réponse au message du 11-04-2010, 13:44:24 ==

Ce n'est pas le caractère suivant le nom du tag qui est ignoré, c'est
plus simplement que ce caractère est incorporé au nom du tag.

Ce qui suit un dièse est parsé comme étant du Scheme, et
'globalScore{ (accolade comprise) est interprété par guile comme
étant un symbole.

Autrement dit, le fichier tel que tu l'avais écrit était équivalent
à :

\tag #'symbole
...
}

et finalement le parseur trouve une accolade fermante esseulée sur la
dernière ligne.

(On peut s'arrêter de lire ici)

A la question "est-ce un bug ?"
D'après R5RS :

<identifier> --> <initial> <subsequent>*
    > <peculiar identifier>

<initial> --> <letter> | <special initial>

<letter> --> a | b | c | ... | z
<special initial> --> ! | $ | % | & | * | / | : | < | =
    > > > ? | ^ | _ | ~

<subsequent> --> <initial> | <digit>
    > <special subsequent>

<digit> --> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

<special subsequent> --> + | - | . | @

<peculiar identifier> --> + | - | ...
<syntactic keyword> --> <expression keyword>

    > else | => | define
    > unquote | unquote-splicing
<expression keyword> --> quote | lambda | if
    > set! | begin | cond | and | or | case
    > let | let* | letrec | do | delay
    > quasiquote

Avec le commentaire suivant :

The following five characters are reserved for future extensions to the
language: { } |

Il semble que guile ne devrait pas incorporer l'accolade dans le symbole.
Il s'agirait donc, AFAICT, d'un bug dans guile.

Nicolas

Ok, merci pour cette explication tout à fait satisfaisante. Et bonne à savoir, car une distraction dans la frappe est vite arrivée.
Heureusement, Lilypond signale une accolade excédentaire, mais au mauvais endroit (c'est normal, guile a avalé l'accolade ouvrante), et continue sa compilation avec un décalage toujours aussi logique.

Amicalement,

Jean-François