+<markup>{
+ \\score {
+ return SCORE;
+ }
+ {MARKUPCOMMAND} {
+ string str (YYText () + 1);
+ SCM s = lookup_markup_command (str);
+ SCM s2 = lookup_markup_list_command (str);
+ if (scm_is_pair (s) && scm_is_symbol (scm_cdr (s)) ) {
+ yylval.scm = scm_car(s);
+ SCM tag = scm_cdr(s);
+ if (tag == ly_symbol2scm("markup0"))
+ return MARKUP_HEAD_MARKUP0;
+ if (tag == ly_symbol2scm("empty"))
+ return MARKUP_HEAD_EMPTY;
+ else if (tag == ly_symbol2scm ("markup0-markup1"))
+ return MARKUP_HEAD_MARKUP0_MARKUP1;
+ else if (tag == ly_symbol2scm ("markup-list0"))
+ return MARKUP_HEAD_LIST0;
+ else if (tag == ly_symbol2scm ("scheme0"))
+ return MARKUP_HEAD_SCM0;
+ else if (tag == ly_symbol2scm ("scheme0-scheme1"))
+ return MARKUP_HEAD_SCM0_SCM1;
+ else if (tag == ly_symbol2scm ("scheme0-markup1"))
+ return MARKUP_HEAD_SCM0_MARKUP1;
+ else if (tag == ly_symbol2scm ("scheme0-scheme1-markup2"))
+ return MARKUP_HEAD_SCM0_SCM1_MARKUP2;
+ else if (tag == ly_symbol2scm ("scheme0-markup1-markup2"))
+ return MARKUP_HEAD_SCM0_MARKUP1_MARKUP2;
+ else if (tag == ly_symbol2scm ("scheme0-scheme1-scheme2"))
+ return MARKUP_HEAD_SCM0_SCM1_SCM2;
+ else {
+ programming_error ("no parser tag defined for this markup signature");
+ ly_display_scm (s);
+ assert(false);
+ }
+ } else if (scm_is_pair (s2) && scm_is_symbol (scm_cdr (s2))) {
+ yylval.scm = scm_car(s2);
+ SCM tag = scm_cdr(s2);
+ if (tag == ly_symbol2scm("empty"))
+ return MARKUP_LIST_HEAD_EMPTY;
+ else if (tag == ly_symbol2scm ("scheme0"))
+ return MARKUP_LIST_HEAD_SCM0;
+ else if (tag == ly_symbol2scm ("markup-list0"))
+ return MARKUP_LIST_HEAD_LIST0;
+ else if (tag == ly_symbol2scm ("scheme0-markup-list1"))
+ return MARKUP_LIST_HEAD_SCM0_LIST1;
+ else if (tag == ly_symbol2scm ("scheme0-scheme1-markup-list2"))
+ return MARKUP_LIST_HEAD_SCM0_SCM1_LIST2;
+ else {
+ programming_error ("no parser tag defined for this markup list signature");
+ ly_display_scm (s);
+ assert(false);
+ }
+ } else
+ return scan_escaped_word (str);
+ }
+ [{}] {
+ return YYText ()[0];
+ }
+ [^#{}"\\ \t\n\r\f]+ {
+ string s (YYText ());