]> git.donarmstrong.com Git - lilypond.git/commitdiff
Issue 5145/1: Lexer: factor out push_markup_predicates
authorDavid Kastrup <dak@gnu.org>
Mon, 12 Jun 2017 11:21:55 +0000 (13:21 +0200)
committerDavid Kastrup <dak@gnu.org>
Mon, 12 Jun 2017 15:17:37 +0000 (17:17 +0200)
lily/include/lily-lexer.hh
lily/lexer.ll

index eb26403b006d428ef96242893fc70e64c833bab1..ff2e8668c3615a349f26a50d23da3f756ac05399 100644 (file)
@@ -46,6 +46,7 @@ private:
   int scan_shorthand (const string&);
   int scan_scm_id (SCM);
   int identifier_type (SCM);
+  void push_markup_predicates (SCM sig);
   char escaped_char (char) const;
   const char *YYText_utf8 ();
 
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)
 {