lilypond-devel
[Top][All Lists]
Advanced

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

Re: Parser error with self-defined predicate symbol-or-markup? in markup


From: David Kastrup
Subject: Re: Parser error with self-defined predicate symbol-or-markup? in markup function
Date: Wed, 26 Jan 2011 20:00:31 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux)

Reinhold Kainhofer <address@hidden> writes:

> I'm defining my own predicate symbol-or-markup? for the argument of a markup 
> function. 
>
>     #(define-public (symbol-or-markup? x)
>       (or (symbol? x) (markup? x)))
>
>     #(define-markup-command (mytest layout props label arg)
>       (symbol-or-markup? markup?)
>       (let* ((s (if (symbol? label) (symbol->string label) (label))))
>         (interpret-markup layout props 
>                           (markup #:concat ("Label: " s " arg: " arg)))))
>
> If I pass a symbol, then everything works fine
>     \markup \mytest #'test \bold "f"
>
> but, as soon as I try to pass a markup, the parser complains that it expects 
> an SCM_IDENTIFIER or SCM_TOKEN:
>
>     \markup \mytest "test" \bold "f"
>     \markup \mytest \bold "test" \bold "f"
>     \markup \mytest \markup { "test" } \bold "f"
>
> markup-or-symbol.ly:15:21: Fehler: syntax error, unexpected STRING, expecting 
> SCM_IDENTIFIER or SCM_TOKEN
> \markup \mytest "test
>                      " \bold "f"
> markup-or-symbol.ly:16:16: Fehler: syntax error, unexpected MARKUP_FUNCTION, 
> expecting SCM_IDENTIFIER or SCM_TOKEN
> \markup \mytest 
>                 \bold "test" \bold "f"
> markup-or-symbol.ly:17:16: Fehler: syntax error, unexpected \markup, 
> expecting 
> SCM_IDENTIFIER or SCM_TOKEN
> \markup \mytest 
>                 \markup { "test" } \bold "f"
>
>
> Simple test case attached. Any idea what might be wrong?

markup? is specially detected and implemented in the parser.  It is
never actually called but rather used as a switch.

markup-or-symbol? isn't.  All predicates not recognized as markup? or
markup-list? expect a Scheme expression that will then be checked for
validity using the respective predicate.

-- 
David Kastrup




reply via email to

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