[Top][All Lists]
[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