]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/lexer.ll
Issue 5145/1: Lexer: factor out push_markup_predicates
[lilypond.git] / lily / lexer.ll
index 93184ebe085dc2d432274a06d4eeb887e565fe01..19f84616f36ca3d38179f397daddfb1291a1d9ab 100644 (file)
@@ -684,18 +684,8 @@ BOM_UTF8   \357\273\277
                // value (for token type MARKUP_FUNCTION or
                // MARKUP_LIST_FUNCTION).
 
-               push_extra_token (here_input (), EXPECT_NO_MORE_ARGS);
-               s = scm_cdr(s);
-               for (; scm_is_pair(s); s = scm_cdr(s)) {
-                 SCM predicate = scm_car(s);
-
-                 if (scm_is_eq (predicate, SCM (Lily::markup_list_p)))
-                   push_extra_token (here_input (), EXPECT_MARKUP_LIST);
-                 else if (scm_is_eq (predicate, SCM (Lily::markup_p)))
-                   push_extra_token (here_input (), EXPECT_MARKUP);
-                 else
-                   push_extra_token (here_input (), EXPECT_SCM, predicate);
-               }
+               push_markup_predicates (scm_cdr (s));
+
                return token_type;
        }
        [^$#{}\"\\ \t\n\r\f]+ {
@@ -892,6 +882,23 @@ Lily_lexer::pop_state ()
 
 }
 
+void
+Lily_lexer::push_markup_predicates (SCM sig)
+{
+       push_extra_token (here_input (), EXPECT_NO_MORE_ARGS);
+       for (SCM s = sig; scm_is_pair(s); s = scm_cdr(s)) {
+               SCM predicate = scm_car(s);
+
+               if (scm_is_eq (predicate, SCM (Lily::markup_list_p)))
+                       push_extra_token (here_input (), EXPECT_MARKUP_LIST);
+               else if (scm_is_eq (predicate, SCM (Lily::markup_p)))
+                       push_extra_token (here_input (), EXPECT_MARKUP);
+               else
+                       push_extra_token (here_input (), EXPECT_SCM, predicate);
+       }
+}
+
+
 int
 Lily_lexer::identifier_type (SCM sid)
 {