After
x.y = { c d e f }
this allows using
\x.y
instead of #(assoc-ref x 'y) in most places where the latter would work.
using namespace std;
#include "book.hh"
using namespace std;
#include "book.hh"
#include "context-def.hh"
#include "context-mod.hh"
#include "dimensions.hh"
#include "context-def.hh"
#include "context-mod.hh"
#include "dimensions.hh"
%token EVENT_IDENTIFIER
%token EVENT_FUNCTION
%token FRACTION
%token EVENT_IDENTIFIER
%token EVENT_FUNCTION
%token FRACTION
+%token LOOKUP_IDENTIFIER
%token LYRIC_ELEMENT
%token MARKUP_FUNCTION
%token MARKUP_LIST_FUNCTION
%token LYRIC_ELEMENT
%token MARKUP_FUNCTION
%token MARKUP_LIST_FUNCTION
+lookup:
+ LOOKUP_IDENTIFIER
+ | LOOKUP_IDENTIFIER '.' symbol_list_rev
+ {
+ $$ = loc_on_music (parser, @$,
+ nested_property ($1, scm_reverse_x ($3, SCM_EOL)));
+ }
+ ;
+
embedded_scm_bare:
SCM_TOKEN
{
embedded_scm_bare:
SCM_TOKEN
{
embedded_scm_active:
SCM_IDENTIFIER
| scm_function_call
embedded_scm_active:
SCM_IDENTIFIER
| scm_function_call
| book_block
| bookpart_block
| output_def
| book_block
| bookpart_block
| output_def
;
/* The generic version may end in music, or not */
;
/* The generic version may end in music, or not */
embedded_scm:
embedded_scm_bare
| scm_function_call
embedded_scm:
embedded_scm_bare
| scm_function_call
;
/* embedded_scm_arg is _not_ casting pitches to music by default, this
;
/* embedded_scm_arg is _not_ casting pitches to music by default, this
} else if (unsmob<Score> (sid)) {
*destination = unsmob<Score> (sid)->clone ()->unprotect ();
return SCM_IDENTIFIER;
} else if (unsmob<Score> (sid)) {
*destination = unsmob<Score> (sid)->clone ()->unprotect ();
return SCM_IDENTIFIER;
+ } else if (scm_is_pair (sid)
+ && scm_is_pair (scm_car (sid))
+ && scm_is_symbol (scm_caar (sid))) {
+ *destination = sid;
+ return LOOKUP_IDENTIFIER;