lilypond-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: battle-plan for 2.5 development


From: Han-Wen Nienhuys
Subject: Re: battle-plan for 2.5 development
Date: Thu, 18 Nov 2004 00:08:16 +0100

address@hidden writes:
> >> address@hidden writes:
> >>> >     * Make {} represent real lists in markup, and transform \markup {
> >>> >       a b \bold { c d } e } in
> >>> >
> >>> >       \markup \formatline { a b \bold c \bold d e }
> >>> 
> >>> I'm starting to understand a couple of things about markups, I should
> >>> try that.
> >>
> >> Cool; don't hesitate to ask questions; do you need a more precise
> >> description than what's written here.  I already have some ideas of
> >> how it could be implemented.
> >
> > Yes, actually a description is welcome! There is a long week end
> > coming, and thus some time to work on that.
> 
> Hello Han-Wen,
> 
> Could you explain what is wanted in these markup changes?

The target is to change markup syntax, so

  << >>

can be dropped, and

  { }

represent actual lists, instead of a hack which expands to \line. Most
of the work will be in rewriting the parser syntax, and a little
scheme trickery to rearrange lists of markups.


The idea is



1. to define syntax like

Markup_list:
    '{' Markup_list_body '}'
    ;

Markup_list_body:
        /* empty */
        | Markup_list_body Markup
        ;

Markup_head_1_item
        MARKUP_HEAD_MARKUP0
        | MARKUP_HEAD_SCM0_MARKUP1 embedded_scm
        | MARKUP_HEAD_SCM0_SCM1_MARKUP2 embedded_scm embedded_scm 
        ;

Markup_head_1_list:
        Markup_head_1_item
        | Markup_head_1_list Markup_head_1_item
        ;

Markup:
    markup_head_1_list Markup_list
    | MARKUP_HEAD_MARKUP0 Markup
    | MARKUP_HEAD_SCM0_MARKUP1 embedded_scm Markup
    | <..etc, normal markup syntax follows..> 
    ;


2. Perform some trickery to convert


   \bold \italic { foo bar }

into

   { \bold \italic foo \bold \italic bar }

i.e. map the Markup_head_1_item  over the elements of a list,


3. To implicitly add

      \line

to a \markup { }  definition.


4. In the end,

  \markup { \bold \italic { foo bar } }

would be internally converted to

   \line { \bold \italic foo \bold \italic bar }

This makes it possible to drop << and >> from the markup syntax. 


5. If possible, it would be nice to flatten lists internally as well,
so

   \markup { \column { foo bar \bold { baz bla } }

gets translated to

   \column { \bold foo \bold bar \bold baz \bold bla }

-- 

 Han-Wen Nienhuys   |   address@hidden   |   http://www.xs4all.nl/~hanwen 





reply via email to

[Prev in Thread] Current Thread [Next in Thread]