Thank you David, this explains me what I didn't understand. It turned out that somehow I was looking at a bad parser.yy.
Actually I'm not running/debugging the C code, but instead only reading it (and porting some of the parsing code to Java). Bertalan On Wed, Oct 26, 2011 at 7:26 AM, David Kastrup <d...@gnu.org> wrote: > "Bertalan Fodor (LilyPondTool)" <lilypondt...@organum.hu> writes: > > > Dear LilyPond devs, > > > > I have a problem with the LilyPond markup parsing, which prevents me > > to finish my new release of LilyPondTool. > > Could you help me a bit on that? > > > > I have this ly file > > ------------------ > > dot = \markup { > > "q" \musicglyph #"accordion.dot" > > } > > > > { c^\dot } > > ------------------ > > > > When the markup is parsed, it will become: > > ( "q" (musicglyph "accordion.dot")) > > through the rules: markup_braced_list -> markup_list -> markup_top -> > > full_markup -> identifier_init > > > > This really makes sense, but please correct me if I'm wrong. > > You are wrong. \markuplines (soon to become \markuplist) takes this > markup list verbatim. \markup, however, wraps it in a line-markup. Put > the following after your assignment: > > #(begin) > #(display dot) > > This produces: > > (#<procedure line-markup (layout props args)> ( q (#<procedure > musicglyph-markup (layout props glyph-name)> accordion.dot))) > > > Now when I'm referring to it in c^\dot, the following code is run: > > > > if (Text_interface::is_markup (sid)) { > > .... > > return MARKUP_IDENTIFIER; > > } else if (Text_interface::is_markup_list (sid)) { > > .... > > return MARKUPLINES_IDENTIFIER; > > } > > > > The result of this must be MARKUP_IDENTIFIER (as only those can be > > used as direction_reqd_event -> gen_text_def -> full_markup > > > > But if I look in Text_interface.isMarkup, it will just do the > > following: > > > > return (scm_is_string (x) > > || (scm_is_pair (x) > > && SCM_BOOL_F > > != scm_object_property (scm_car (x), > > ly_symbol2scm ("markup-signature")))); > > } > > So my value, ( "q" (musicglyph "accordion.dot")) will not be > > considered as a markup, but instead a markup list, so I'm getting a > > parse error. > > > > Can you help me where I misunderstand the code? > > Have you actually tried your code? Works fine here. > > -- > David Kastrup > > > _______________________________________________ > lilypond-devel mailing list > lilypond-devel@gnu.org > https://lists.gnu.org/mailman/listinfo/lilypond-devel >
_______________________________________________ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel