[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Syntax change proposal:
From: |
David Kastrup |
Subject: |
Re: Syntax change proposal: |
Date: |
Wed, 25 Jul 2012 08:01:44 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.1.50 (gnu/linux) |
Keith OHara <address@hidden> writes:
> David Kastrup <dak <at> gnu.org> writes:
>
>> >>>> One really ugly problem is interpreting things like "4.". Looks like a
>> >>>> duration, but then we have
>> >>>> input/regression/dynamics-broken-hairpin.ly: line-width = 4.\cm
>
> The parser chooses among (too) many different modes ("start conditions")
> telling the lexer what kind of input to expect in the current context.
> Floating-point numbers and note-durations appear in rather different
> situations. If both are valid in the same lexer modes, then maybe you can
> adjust the modes toward a smarter design.
The flexibility of #{ ... #} depends on not having too many modes. It
would be nice if #{ 4 #} could be used for a duration, and #{ 4.0 \cm #}
for a dimension. Of course, not being able to write #{ \text-width #}
because in music mode identifiers don't take hyphens does not exactly
help, but one could likely permit #{ \"text-width" #} or similar
contraptions.
Music/Scheme functions that process their arguments for the sake of
achieving some output can't switch modes nilly-willy. In particular,
the parser's lookahead token needs to be scanned in the correct mode, so
mode-switching decisions can't rely on lookahead. The more diverse the
variety of interpretations thrown at the lexer becomes, the harder it
becomes for humans and convert-ly to reliably interpret input. If you
want to write a music function that can shift a note 2\mm to the
right...
>> Well, let's see what the parser currently delivers in INITIAL mode.
>>
>> . character .
>> -. REAL 0.0
>> -.0 REAL -0.0
>> -0.0 character - followed by 0.0
>>
>
>> The semantics of -., for example, were introduced in 2.15.9 with
>> commit da949cdcede0ffb559e9e5e2adbae2088ba1f6d6
>
> I needed to interpret "\layout {indent = -.\mm}" without backing up in
> order to obey the instructions for changing lexer.ll while fixing issue 804.
>
> I tested both interpretations, "staccato" or "0.0" (should have been -0.0)
> http://codereview.appspot.com/4871041/diff2/3001:8001/lily/lexer.ll
> At the time, I did not foresee staccatos being valid in a \layout block.
>
> If you expect to restrict REAL to -?[0-9]+(\.[0.9]+)? then I suggest you
> switch back to interpreting \layout {indent = -.\mm } as a staccato before
> the next stable release, or raise a bug and I'll do so.
With the \mm, this would become a syntax error anyway. Without it,
indeed likely a staccato. Which does not make a lot of sense. But
neither does -. as a shorthand for +0.0 when . is not a shorthand for
any number.
--
David Kastrup
- Re: Syntax change proposal:, (continued)
- Re: Syntax change proposal:, David Kastrup, 2012/07/18
- Re: Syntax change proposal:, Trevor Daniels, 2012/07/19
- Re: Syntax change proposal:, David Kastrup, 2012/07/19
- Re: Syntax change proposal:, Trevor Daniels, 2012/07/19
- Re: Syntax change proposal:, David Kastrup, 2012/07/19
- Re: Syntax change proposal:, Trevor Daniels, 2012/07/19
- Re: Syntax change proposal:, David Kastrup, 2012/07/19
- Re: Syntax change proposal:, Trevor Daniels, 2012/07/19
- Re: Syntax change proposal:, Benkő Pál, 2012/07/19
- Re: Syntax change proposal:, Keith OHara, 2012/07/25
- Re: Syntax change proposal:,
David Kastrup <=
- Re: Syntax change proposal:, Keith OHara, 2012/07/25
- Re: Syntax change proposal:, David Kastrup, 2012/07/25
- Re: Syntax change proposal:, David Kastrup, 2012/07/25
- Re: Syntax change proposal:, Keith OHara, 2012/07/25
- Re: Syntax change proposal:, David Kastrup, 2012/07/26
- Re: Syntax change proposal:, Keith OHara, 2012/07/26
- Re: Syntax change proposal:, David Kastrup, 2012/07/26
- Re: Syntax change proposal:, Trevor Daniels, 2012/07/26
- Re: Syntax change proposal:, David Kastrup, 2012/07/26
- Re: Syntax change proposal:, David Kastrup, 2012/07/26