A. LilyPond grammar

This appendix contains a description of the LilyPond grammar, as output from the parser.

Grammar

    1 start_symbol: lilypond

    3 start_symbol: "#{"  embedded_lilypond

    4 lilypond: /* empty */
    5         | lilypond toplevel_expression
    6         | lilypond assignment
    7         | lilypond error
    8         | lilypond "\version-error"

    9 toplevel_expression: header_block
   10                    | book_block
   11                    | bookpart_block
   12                    | BOOK_IDENTIFIER
   13                    | score_block
   14                    | composite_music
   15                    | full_markup
   16                    | full_markup_list
   17                    | SCM_TOKEN
   18                    | embedded_scm_active
   19                    | output_def

   20 lookup: LOOKUP_IDENTIFIER
   21       | LOOKUP_IDENTIFIER '.' symbol_list_rev

   22 embedded_scm_bare: SCM_TOKEN
   23                  | SCM_IDENTIFIER

   24 embedded_scm_active: SCM_IDENTIFIER
   25                    | scm_function_call
   26                    | lookup

   27 embedded_scm_bare_arg: SCM_ARG
   28                      | SCM_TOKEN
   29                      | FRACTION
   30                      | partial_markup
   31                      | full_markup_list
   32                      | context_modification
   33                      | header_block
   34                      | score_block
   35                      | context_def_spec_block
   36                      | book_block
   37                      | bookpart_block
   38                      | output_def
   39                      | lookup

   40 embedded_scm: embedded_scm_bare
   41             | scm_function_call
   42             | lookup

   43 embedded_scm_arg: embedded_scm_bare_arg
   44                 | scm_function_call
   45                 | music_assign

   46 scm_function_call: SCM_FUNCTION function_arglist

   47 embedded_lilypond_number: '-' embedded_lilypond_number
   48                         | bare_number_common
   49                         | UNSIGNED NUMBER_IDENTIFIER

   50 embedded_lilypond: /* empty */
   51                  | identifier_init_nonumber
   52                  | embedded_lilypond_number
   53                  | post_event post_events
   54                  | multiplied_duration
   55                  | music_embedded music_embedded music_list
   56                  | error
   57                  | "\version-error" embedded_lilypond

   58 lilypond_header_body: /* empty */
   59                     | lilypond_header_body assignment
   60                     | lilypond_header_body SCM_TOKEN
   61                     | lilypond_header_body embedded_scm_active

   62 lilypond_header: "\header" '{' lilypond_header_body '}'

   64 header_block:  lilypond_header

   65 assignment_id: STRING
   66              | SYMBOL

   67 assignment: assignment_id '=' identifier_init
   68           | assignment_id '.' property_path '=' identifier_init
   69           | assignment_id ',' property_path '=' identifier_init
   70           | markup_mode_word '=' identifier_init

   71 identifier_init: identifier_init_nonumber
   72                | number_expression
   73                | symbol_list_part_bare '.' property_path
   74                | symbol_list_part_bare ',' property_path
   75                | post_event_nofinger post_events

   76 identifier_init_nonumber: header_block
   77                         | score_block
   78                         | book_block
   79                         | bookpart_block
   80                         | output_def
   81                         | context_def_spec_block
   82                         | music_assign
   83                         | pitch_or_music
   84                         | FRACTION
   85                         | string
   86                         | embedded_scm
   87                         | partial_markup
   88                         | full_markup_list
   89                         | context_modification
   90                         | partial_function "\etc"

   91 partial_function_scriptable: MUSIC_FUNCTION function_arglist_partial
   92                            | EVENT_FUNCTION function_arglist_partial
   93                            | SCM_FUNCTION function_arglist_partial
   94                            | MUSIC_FUNCTION 
                                     "scheme?" 
                                     function_arglist_optional 
                                     partial_function 
   95                            | EVENT_FUNCTION 
                                     "scheme?" 
                                     function_arglist_optional 
                                     partial_function 
   96                            | SCM_FUNCTION 
                                     "scheme?" 
                                     function_arglist_optional 
                                     partial_function 
   97                            | MUSIC_FUNCTION 
                                     "optional?" 
                                     "scheme?" 
                                     function_arglist_nonbackup 
                                     partial_function 
   98                            | EVENT_FUNCTION 
                                     "optional?" 
                                     "scheme?" 
                                     function_arglist_nonbackup 
                                     partial_function 
   99                            | SCM_FUNCTION 
                                     "optional?" 
                                     "scheme?" 
                                     function_arglist_nonbackup 
                                     partial_function 

  100 partial_function: partial_function_scriptable
  101                 | "\override" grob_prop_path '='
  102                 | "\set" context_prop_spec '='
  103                 | "\override" grob_prop_path '=' partial_function
  104                 | "\set" context_prop_spec '=' partial_function
  105                 | script_dir markup_mode markup_partial_function
  106                 | script_dir partial_function_scriptable
  107                 | script_dir

  108 context_def_spec_block: "\context" '{' context_def_spec_body '}'

  109 context_mod_arg: embedded_scm

  111 context_mod_arg:  composite_music

  112 context_def_spec_body: /* empty */
  113                      | context_def_spec_body context_mod
  114                      | context_def_spec_body context_modification
  115                      | context_def_spec_body context_mod_arg

  116 book_block: "\book" '{' book_body '}'

  117 book_body: /* empty */
  118          | BOOK_IDENTIFIER
  119          | book_body paper_block
  120          | book_body bookpart_block
  121          | book_body score_block
  122          | book_body composite_music
  123          | book_body full_markup
  124          | book_body full_markup_list
  125          | book_body SCM_TOKEN
  126          | book_body embedded_scm_active

  128 book_body: book_body  lilypond_header
  129          | book_body error

  130 bookpart_block: "\bookpart" '{' bookpart_body '}'

  131 bookpart_body: /* empty */
  132              | BOOK_IDENTIFIER
  133              | bookpart_body paper_block
  134              | bookpart_body score_block
  135              | bookpart_body composite_music
  136              | bookpart_body full_markup
  137              | bookpart_body full_markup_list
  138              | bookpart_body SCM_TOKEN
  139              | bookpart_body embedded_scm_active

  141 bookpart_body: bookpart_body  lilypond_header
  142              | bookpart_body error

  143 score_block: "\score" '{' score_body '}'

  144 score_body: score_items
  145           | score_body error

  146 score_item: embedded_scm
  147           | music
  148           | output_def

  149 score_items: /* empty */
  150            | score_items score_item

  152 score_items: score_items  lilypond_header

  153 paper_block: output_def

  154 output_def: output_def_body '}'

  155 output_def_head: "\paper"
  156                | "\midi"
  157                | "\layout"

  158 output_def_head_with_mode_switch: output_def_head

  159 music_or_context_def: music_assign
  160                     | context_def_spec_block

  161 output_def_body: output_def_head_with_mode_switch '{'
  162                | output_def_body assignment
  163                | output_def_body embedded_scm_active
  164                | output_def_body SCM_TOKEN

  166 output_def_body: output_def_body  music_or_context_def
  167                | output_def_body error

  168 tempo_event: "\tempo" steno_duration '=' tempo_range
  169            | "\tempo" text steno_duration '=' tempo_range
  170            | "\tempo" text

  171 music_list: /* empty */
  172           | music_list music_embedded
  173           | music_list error

  174 braced_music_list: '{' music_list '}'

  175 music: music_assign
  176      | lyric_element_music
  177      | pitch_as_music

  178 pitch_as_music: pitch_or_music

  179 music_embedded: music
  180               | music_embedded_backup
  181               | music_embedded_backup 
                        "(backed-up?)" 
                        lyric_element_music 
  182               | multiplied_duration post_events

  183 music_embedded_backup: embedded_scm

  184 music_assign: simple_music
  185             | composite_music

  186 repeated_music: "\repeat" simple_string unsigned_number music
  187               | "\repeat" 
                        simple_string 
                        unsigned_number 
                        music 
                        "\alternative" 
                        braced_music_list 

  188 sequential_music: "\sequential" braced_music_list
  189                 | braced_music_list

  190 simultaneous_music: "\simultaneous" braced_music_list
  191                   | "<<" music_list ">>"

  192 simple_music: event_chord
  193             | music_property_def
  194             | context_change

  196 context_modification: "\with"  '{' context_mod_list '}'
  197                     | "\with" context_modification_arg

  198 context_modification_arg: embedded_scm
  199                         | MUSIC_IDENTIFIER

  200 optional_context_mods: context_modification_mods_list

  201 context_modification_mods_list: /* empty */
  202                               | context_modification_mods_list 
                                        context_modification 

  203 context_mod_list: /* empty */
  204                 | context_mod_list context_mod
  205                 | context_mod_list context_mod_arg

  206 context_prefix: "\context" symbol optional_id optional_context_mods
  207               | "\new" symbol optional_id optional_context_mods

  208 new_lyrics: "\addlyrics" optional_context_mods lyric_mode_music
  209           | new_lyrics 
                    "\addlyrics" 
                    optional_context_mods 
                    lyric_mode_music 

  210 basic_music: music_function_call
  211            | repeated_music
  212            | music_bare
  213            | "\lyricsto" simple_string lyric_mode_music
  214            | "\lyricsto" symbol '=' simple_string lyric_mode_music

  215 contextable_music: basic_music
  216                  | pitch_as_music
  217                  | event_chord

  218 contexted_basic_music: context_prefix contextable_music new_lyrics
  219                      | context_prefix contextable_music
  220                      | context_prefix contexted_basic_music

  221 composite_music: basic_music
  222                | contexted_basic_music
  223                | basic_music new_lyrics

  224 music_bare: mode_changed_music
  225           | MUSIC_IDENTIFIER
  226           | grouped_music_list

  227 grouped_music_list: simultaneous_music
  228                   | sequential_music

  229 symbol_list_arg: SYMBOL_LIST
  230                | SYMBOL_LIST '.' symbol_list_rev
  231                | SYMBOL_LIST ',' symbol_list_rev

  232 symbol_list_rev: symbol_list_part
  233                | symbol_list_rev '.' symbol_list_part
  234                | symbol_list_rev ',' symbol_list_part

  235 symbol_list_part: symbol_list_part_bare
  236                 | embedded_scm_bare

  237 symbol_list_element: STRING
  238                    | UNSIGNED

  239 symbol_list_part_bare: SYMBOL
  240                      | symbol_list_element

  241 function_arglist_nonbackup: function_arglist_common
  242                           | "optional?" 
                                    "scheme?" 
                                    function_arglist_nonbackup 
                                    post_event_nofinger 
  243                           | "optional?" 
                                    "scheme?" 
                                    function_arglist_nonbackup 
                                    '-' 
                                    UNSIGNED 
  244                           | "optional?" 
                                    "scheme?" 
                                    function_arglist_nonbackup 
                                    '-' 
                                    REAL 
  245                           | "optional?" 
                                    "scheme?" 
                                    function_arglist_nonbackup 
                                    '-' 
                                    NUMBER_IDENTIFIER 
  246                           | "optional?" 
                                    "scheme?" 
                                    function_arglist_nonbackup 
                                    embedded_scm_arg 
  247                           | "optional?" 
                                    "scheme?" 
                                    function_arglist_nonbackup 
                                    bare_number_common 
  248                           | function_arglist_nonbackup_reparse 
                                    "(reparsed?)" 
                                    pitch_or_music 
  249                           | function_arglist_nonbackup_reparse 
                                    "(reparsed?)" 
                                    multiplied_duration 
  250                           | function_arglist_nonbackup_reparse 
                                    "(reparsed?)" 
                                    reparsed_rhythm 
  251                           | function_arglist_nonbackup_reparse 
                                    "(reparsed?)" 
                                    bare_number_common 
  252                           | function_arglist_nonbackup_reparse 
                                    "(reparsed?)" 
                                    SCM_ARG 
  253                           | function_arglist_nonbackup_reparse 
                                    "(reparsed?)" 
                                    lyric_element_music 
  254                           | function_arglist_nonbackup_reparse 
                                    "(reparsed?)" 
                                    symbol_list_arg 

  255 reparsed_rhythm: DURATION_ARG dots multipliers post_events

  256 function_arglist_nonbackup_reparse: "optional?" 
                                            "scheme?" 
                                            function_arglist_nonbackup 
                                            SCM_IDENTIFIER 
  257                                   | "optional?" 
                                            "scheme?" 
                                            function_arglist_nonbackup 
                                            pitch 
  258                                   | "optional?" 
                                            "scheme?" 
                                            function_arglist_nonbackup 
                                            steno_tonic_pitch 
  259                                   | "optional?" 
                                            "scheme?" 
                                            function_arglist_nonbackup 
                                            STRING 
  260                                   | "optional?" 
                                            "scheme?" 
                                            function_arglist_nonbackup 
                                            SYMBOL 
  261                                   | "optional?" 
                                            "scheme?" 
                                            function_arglist_nonbackup 
                                            full_markup 
  262                                   | "optional?" 
                                            "scheme?" 
                                            function_arglist_nonbackup 
                                            UNSIGNED 
  263                                   | "optional?" 
                                            "scheme?" 
                                            function_arglist_nonbackup 
                                            DURATION_IDENTIFIER 

  264 function_arglist_backup: function_arglist_common
  265                        | "optional?" 
                                 "scheme?" 
                                 function_arglist_backup 
                                 embedded_scm_arg 
  266                        | "optional?" 
                                 "scheme?" 
                                 function_arglist_backup 
                                 post_event_nofinger 
  267                        | "optional?" 
                                 "scheme?" 
                                 function_arglist_backup 
                                 pitch 
  268                        | "optional?" 
                                 "scheme?" 
                                 function_arglist_backup 
                                 steno_tonic_pitch 
  269                        | "optional?" 
                                 "scheme?" 
                                 function_arglist_backup 
                                 full_markup 
  270                        | "optional?" 
                                 "scheme?" 
                                 function_arglist_backup 
                                 UNSIGNED 
  271                        | "optional?" 
                                 "scheme?" 
                                 function_arglist_backup 
                                 REAL 
  272                        | "optional?" 
                                 "scheme?" 
                                 function_arglist_backup 
                                 NUMBER_IDENTIFIER 
  273                        | "optional?" 
                                 "scheme?" 
                                 function_arglist_backup 
                                 '-' 
                                 UNSIGNED 
  274                        | "optional?" 
                                 "scheme?" 
                                 function_arglist_backup 
                                 '-' 
                                 REAL 
  275                        | "optional?" 
                                 "scheme?" 
                                 function_arglist_backup 
                                 '-' 
                                 NUMBER_IDENTIFIER 
  276                        | "optional?" 
                                 "scheme?" 
                                 function_arglist_backup 
                                 DURATION_IDENTIFIER 
  277                        | "optional?" 
                                 "scheme?" 
                                 function_arglist_backup 
                                 SCM_IDENTIFIER 
  278                        | "optional?" 
                                 "scheme?" 
                                 function_arglist_backup 
                                 STRING 
  279                        | "optional?" 
                                 "scheme?" 
                                 function_arglist_backup 
                                 SYMBOL 
  280                        | function_arglist_backup 
                                 "(reparsed?)" 
                                 pitch_or_music 
  281                        | function_arglist_backup 
                                 "(reparsed?)" 
                                 bare_number_common 
  282                        | function_arglist_backup 
                                 "(reparsed?)" 
                                 multiplied_duration 
  283                        | function_arglist_backup 
                                 "(reparsed?)" 
                                 reparsed_rhythm 
  284                        | function_arglist_backup 
                                 "(reparsed?)" 
                                 symbol_list_arg 

  285 function_arglist: function_arglist_nonbackup
  286                 | "optional?" 
                          "scheme?" 
                          function_arglist_skip_nonbackup 
                          "\default" 

  287 function_arglist_skip_nonbackup: function_arglist_nonbackup
  288                                | "optional?" 
                                         "scheme?" 
                                         function_arglist_skip_nonbackup 

  289 function_arglist_partial: "scheme?" function_arglist_optional
  290                         | "scheme?" function_arglist_partial_optional
  291                         | "optional?" 
                                  "scheme?" 
                                  function_arglist_nonbackup 
  292                         | "optional?" 
                                  "scheme?" 
                                  function_arglist_partial 

  293 function_arglist_partial_optional: "scheme?" function_arglist_optional
  294                                  | "scheme?" 
                                           function_arglist_partial_optional 
  295                                  | "optional?" 
                                           "scheme?" 
                                           function_arglist_backup 
  296                                  | "optional?" 
                                           "scheme?" 
                                           function_arglist_partial_optional 

  297 function_arglist_common: EXPECT_NO_MORE_ARGS
  298                        | "scheme?" 
                                 function_arglist_optional 
                                 embedded_scm_arg 
  299                        | "scheme?" 
                                 function_arglist_optional 
                                 bare_number_common 
  300                        | "scheme?" 
                                 function_arglist_optional 
                                 post_event_nofinger 
  301                        | "scheme?" 
                                 function_arglist_optional 
                                 '-' 
                                 NUMBER_IDENTIFIER 
  302                        | function_arglist_common_reparse 
                                 "(reparsed?)" 
                                 SCM_ARG 
  303                        | function_arglist_common_reparse 
                                 "(reparsed?)" 
                                 lyric_element_music 
  304                        | function_arglist_common_reparse 
                                 "(reparsed?)" 
                                 pitch_or_music 
  305                        | function_arglist_common_reparse 
                                 "(reparsed?)" 
                                 bare_number_common 
  306                        | function_arglist_common_reparse 
                                 "(reparsed?)" 
                                 multiplied_duration 
  307                        | function_arglist_common_reparse 
                                 "(reparsed?)" 
                                 reparsed_rhythm 
  308                        | function_arglist_common_reparse 
                                 "(reparsed?)" 
                                 symbol_list_arg 

  309 function_arglist_common_reparse: "scheme?" 
                                         function_arglist_optional 
                                         SCM_IDENTIFIER 
  310                                | "scheme?" 
                                         function_arglist_optional 
                                         pitch 
  311                                | "scheme?" 
                                         function_arglist_optional 
                                         steno_tonic_pitch 
  312                                | "scheme?" 
                                         function_arglist_optional 
                                         STRING 
  313                                | "scheme?" 
                                         function_arglist_optional 
                                         SYMBOL 
  314                                | "scheme?" 
                                         function_arglist_optional 
                                         full_markup 
  315                                | "scheme?" 
                                         function_arglist_optional 
                                         UNSIGNED 
  316                                | "scheme?" 
                                         function_arglist_optional 
                                         DURATION_IDENTIFIER 
  317                                | "scheme?" 
                                         function_arglist_optional 
                                         '-' 
                                         UNSIGNED 
  318                                | "scheme?" 
                                         function_arglist_optional 
                                         '-' 
                                         REAL 

  319 function_arglist_optional: function_arglist_backup
  320                          | "optional?" 
                                   "scheme?" 
                                   function_arglist_skip_backup 
                                   "\default" 
  321                          | function_arglist_skip_backup "(backed-up?)"

  322 function_arglist_skip_backup: function_arglist_backup
  323                             | "optional?" 
                                      "scheme?" 
                                      function_arglist_skip_backup 

  324 music_function_call: MUSIC_FUNCTION function_arglist

  325 optional_id: /* empty */
  326            | '=' simple_string

  328 lyric_mode_music:  grouped_music_list
  329                 | MUSIC_IDENTIFIER

  330 mode_changed_music: mode_changing_head grouped_music_list
  331                   | mode_changing_head_with_context 
                            optional_context_mods 
                            grouped_music_list 

  332 mode_changing_head: "\notemode"
  333                   | "\drummode"
  334                   | "\figuremode"
  335                   | "\chordmode"
  336                   | "\lyricmode"

  337 mode_changing_head_with_context: "\drums"
  338                                | "\figures"
  339                                | "\chords"
  340                                | "\lyrics"

  341 context_change: "\change" symbol '=' simple_string

  342 property_path: symbol_list_rev

  343 property_operation: symbol '=' scalar
  344                   | "\unset" symbol
  345                   | "\override" revert_arg '=' scalar
  346                   | "\revert" revert_arg

  347 revert_arg: revert_arg_backup "(backed-up?)" symbol_list_arg

  348 revert_arg_backup: revert_arg_part

  349 revert_arg_part: symbol_list_part
  350                | revert_arg_backup 
                         "(backed-up?)" 
                         SCM_ARG 
                         '.' 
                         symbol_list_part 
  351                | revert_arg_backup 
                         "(backed-up?)" 
                         SCM_ARG 
                         ',' 
                         symbol_list_part 
  352                | revert_arg_backup 
                         "(backed-up?)" 
                         SCM_ARG 
                         symbol_list_part 

  353 context_def_mod: "\consists"
  354                | "\remove"
  355                | "\accepts"
  356                | "\defaultchild"
  357                | "\denies"
  358                | "\alias"
  359                | "\type"
  360                | "\description"
  361                | "\name"

  362 context_mod: property_operation
  363            | context_def_mod STRING
  364            | context_def_mod SYMBOL
  365            | context_def_mod embedded_scm

  366 grob_prop_spec: symbol_list_rev

  367 grob_prop_path: grob_prop_spec
  368               | grob_prop_spec property_path

  369 context_prop_spec: symbol_list_rev

  370 simple_revert_context: symbol_list_part

  371 music_property_def: "\override" grob_prop_path '=' scalar
  372                   | "\revert" simple_revert_context revert_arg
  373                   | "\set" context_prop_spec '=' scalar
  374                   | "\unset" context_prop_spec

  375 string: STRING
  376       | SYMBOL
  377       | full_markup

  378 text: STRING
  379     | SYMBOL
  380     | full_markup
  381     | embedded_scm_bare

  382 simple_string: STRING
  383              | SYMBOL
  384              | embedded_scm_bare

  385 symbol: STRING
  386       | SYMBOL
  387       | embedded_scm_bare

  388 scalar: embedded_scm_arg
  389       | pitch_or_music
  390       | SCM_IDENTIFIER
  391       | bare_number
  392       | '-' bare_number
  393       | string
  394       | symbol_list_part_bare '.' property_path
  395       | symbol_list_part_bare ',' property_path

  396 event_chord: simple_element post_events
  397            | CHORD_REPETITION optional_notemode_duration post_events
  398            | MULTI_MEASURE_REST optional_notemode_duration post_events
  399            | tempo_event
  400            | note_chord_element

  401 note_chord_element: chord_body optional_notemode_duration post_events

  402 chord_body: "<" chord_body_elements ">"
  403           | FIGURE_OPEN figure_list FIGURE_CLOSE

  404 chord_body_elements: /* empty */
  405                    | chord_body_elements chord_body_element

  406 chord_body_element: pitch_or_tonic_pitch 
                            exclamations 
                            questions 
                            octave_check 
                            post_events 
  407                   | DRUM_PITCH post_events
  408                   | music_function_chord_body

  409 music_function_chord_body: music_function_call
  410                          | MUSIC_IDENTIFIER
  411                          | embedded_scm

  412 event_function_event: EVENT_FUNCTION function_arglist

  413 post_events: /* empty */
  414            | post_events post_event

  415 post_event_nofinger: direction_less_event
  416                    | script_dir music_function_call
  417                    | "--"
  418                    | "__"
  419                    | script_dir direction_reqd_event
  420                    | script_dir direction_less_event
  421                    | '^' fingering
  422                    | '_' fingering

  423 post_event: post_event_nofinger
  424           | '-' fingering

  425 string_number_event: E_UNSIGNED

  426 direction_less_event: string_number_event
  427                     | EVENT_IDENTIFIER
  428                     | tremolo_type
  429                     | event_function_event

  430 direction_reqd_event: gen_text_def
  431                     | script_abbreviation

  432 octave_check: /* empty */
  433             | '=' quotes

  434 quotes: /* empty */
  435       | sub_quotes
  436       | sup_quotes

  437 sup_quotes: '''
  438           | sup_quotes '''

  439 sub_quotes: ','
  440           | sub_quotes ','

  441 steno_pitch: NOTENAME_PITCH quotes

  442 steno_tonic_pitch: TONICNAME_PITCH quotes

  443 pitch: steno_pitch
  444      | PITCH_IDENTIFIER quotes

  445 pitch_or_tonic_pitch: pitch
  446                     | steno_tonic_pitch

  447 gen_text_def: full_markup
  448             | STRING
  449             | SYMBOL
  450             | embedded_scm

  451 fingering: UNSIGNED

  452 script_abbreviation: '^'
  453                    | '+'
  454                    | '-'
  455                    | '!'
  456                    | ">"
  457                    | '.'
  458                    | '_'

  459 script_dir: '_'
  460           | '^'
  461           | '-'

  462 maybe_notemode_duration: /* empty */
  463                        | multiplied_duration

  464 optional_notemode_duration: maybe_notemode_duration

  465 steno_duration: UNSIGNED dots
  466               | DURATION_IDENTIFIER dots

  467 multiplied_duration: steno_duration multipliers

  468 dots: /* empty */
  469     | dots '.'

  470 multipliers: /* empty */
  471            | multipliers '*' UNSIGNED
  472            | multipliers '*' FRACTION

  473 tremolo_type: ':'
  474             | ':' UNSIGNED

  475 bass_number: UNSIGNED
  476            | STRING
  477            | SYMBOL
  478            | full_markup
  479            | embedded_scm_bare

  480 figured_bass_alteration: '-'
  481                        | '+'
  482                        | '!'

  483 bass_figure: "_"
  484            | bass_number
  485            | bass_figure ']'
  486            | bass_figure figured_bass_alteration
  487            | bass_figure figured_bass_modification

  488 figured_bass_modification: "\+"
  489                          | "\!"
  490                          | '/'
  491                          | "\"

  492 br_bass_figure: bass_figure
  493               | '[' bass_figure

  494 figure_list: /* empty */
  495            | figure_list br_bass_figure

  496 optional_rest: /* empty */
  497              | "\rest"

  498 pitch_or_music: pitch 
                        exclamations 
                        questions 
                        octave_check 
                        maybe_notemode_duration 
                        optional_rest 
                        post_events 
  499               | new_chord post_events

  500 simple_element: DRUM_PITCH optional_notemode_duration
  501               | RESTNAME optional_notemode_duration

  502 lyric_element: full_markup
  503              | SYMBOL
  504              | STRING
  505              | LYRIC_ELEMENT

  506 lyric_element_music: lyric_element 
                             optional_notemode_duration 
                             post_events 

  507 new_chord: steno_tonic_pitch maybe_notemode_duration
  508          | steno_tonic_pitch 
                   optional_notemode_duration 
                   chord_separator 
                   chord_items 

  509 chord_items: /* empty */
  510            | chord_items chord_item

  511 chord_separator: ":"
  512                | "^"
  513                | "/" steno_tonic_pitch
  514                | "/+" steno_tonic_pitch

  515 chord_item: chord_separator
  516           | step_numbers
  517           | CHORD_MODIFIER

  518 step_numbers: step_number
  519             | step_numbers '.' step_number

  520 step_number: UNSIGNED
  521            | UNSIGNED '+'
  522            | UNSIGNED "-"

  523 tempo_range: unsigned_number
  524            | unsigned_number '-' unsigned_number

  525 number_expression: number_expression '+' number_term
  526                  | number_expression '-' number_term
  527                  | number_term

  528 number_term: number_factor
  529            | number_factor '*' number_factor
  530            | number_factor '/' number_factor

  531 number_factor: '-' number_factor
  532              | bare_number

  533 bare_number_common: REAL
  534                   | NUMBER_IDENTIFIER
  535                   | REAL NUMBER_IDENTIFIER

  536 bare_number: bare_number_common
  537            | UNSIGNED
  538            | UNSIGNED NUMBER_IDENTIFIER

  539 unsigned_number: UNSIGNED
  540                | NUMBER_IDENTIFIER
  541                | embedded_scm

  542 exclamations: /* empty */
  543             | exclamations '!'

  544 questions: /* empty */
  545          | questions '?'

  547 full_markup_list: "\markuplist" 0 markup_list

  548 markup_mode: "\markup"

  549 markup_mode_word: markup_mode markup_word

  550 full_markup: markup_mode markup_top
  551            | markup_mode_word

  552 partial_markup: markup_mode markup_partial_function "\etc"

  553 markup_top: markup_list
  554           | markup_head_1_list simple_markup
  555           | simple_markup_noword

  557 markup_scm: embedded_scm 1 "(backed-up?)"

  558 markup_list: markup_composed_list
  559            | markup_uncomposed_list

  560 markup_uncomposed_list: markup_braced_list
  561                       | markup_command_list
  562                       | markup_scm MARKUPLIST_IDENTIFIER

  564 markup_uncomposed_list: "\score-lines" 2 '{' score_body '}'

  565 markup_composed_list: markup_head_1_list markup_uncomposed_list

  566 markup_braced_list: '{' markup_braced_list_body '}'

  567 markup_braced_list_body: /* empty */
  568                        | markup_braced_list_body markup
  569                        | markup_braced_list_body markup_list

  570 markup_command_list: MARKUP_LIST_FUNCTION markup_command_list_arguments

  571 markup_command_basic_arguments: "markup-list?" 
                                        markup_command_list_arguments 
                                        markup_list 
  572                               | "scheme?" 
                                        markup_command_list_arguments 
                                        embedded_scm 
  573                               | "scheme?" 
                                        markup_command_list_arguments 
                                        STRING 
  574                               | EXPECT_NO_MORE_ARGS

  575 markup_command_list_arguments: markup_command_basic_arguments
  576                              | "markup?" 
                                       markup_command_list_arguments 
                                       markup 

  577 markup_partial_function: MARKUP_FUNCTION markup_arglist_partial
  578                        | markup_head_1_list 
                                 MARKUP_FUNCTION 
                                 markup_arglist_partial 

  579 markup_arglist_partial: "markup?" markup_arglist_partial
  580                       | "scheme?" markup_arglist_partial
  581                       | "markup?" markup_command_list_arguments
  582                       | "scheme?" markup_command_list_arguments

  583 markup_head_1_item: MARKUP_FUNCTION 
                            "markup?" 
                            markup_command_list_arguments 

  584 markup_head_1_list: markup_head_1_item
  585                   | markup_head_1_list markup_head_1_item

  586 markup_word: STRING
  587            | SYMBOL

  588 simple_markup: markup_word
  589              | simple_markup_noword

  591 simple_markup_noword: "\score" 3 '{' score_body '}'
  592                     | MARKUP_FUNCTION markup_command_basic_arguments
  593                     | markup_scm MARKUP_IDENTIFIER

  594 markup: markup_head_1_list simple_markup
  595       | simple_markup


Terminals, with rules where they appear



    259 260 261 262 263 265 266 267 268 269 270 271 272 273 274 275
    260 261 262 263 265 266 267 268 269 270 271 272 273 274 275 276
    276 277 278 279 286 288 289 290 291 292 293 294 295 296 298 299
    277 278 279 286 288 291 292 295 296 320 323
    300 301 309 310 311 312 313 314 315 316 317 318 320 323 572 573
    302 303 304 305 306 307 308
    373 433
    521 522 537 538 539
    524 526 531
    580 582
    586
"#{" (340) 3
"(backed-up?)" (335) 181 321 347 350 351 352 557
"(reparsed?)" (336) 248 249 250 251 252 253 254 280 281 282 283 284
"-" (320) 522
"--" (265) 417
"/" (321) 513
"/+" (317) 514
":" (319) 511
"<" (322) 402
"<<" (324) 191
">" (323) 402 456
">>" (325) 191
"\!" (327) 489
"\" (326) 491
"\+" (328) 488
"\accepts" (273) 355
"\addlyrics" (262) 208 209
"\alias" (274) 358
"\alternative" (260) 187
"\book" (275) 116
"\bookpart" (276) 130
"\change" (277) 341
"\chordmode" (278) 335
"\chords" (279) 339
"\consists" (280) 353
"\context" (281) 108 206
"\default" (282) 286 320
"\defaultchild" (283) 356
"\denies" (284) 357
"\description" (285) 360
"\drummode" (286) 333
"\drums" (287) 337
"\etc" (288) 90 552
"\figuremode" (289) 334
"\figures" (290) 338
"\header" (291) 62
"\layout" (293) 157
"\lyricmode" (294) 336
"\lyrics" (295) 340
"\lyricsto" (296) 213 214
"\markup" (297) 548
"\markuplist" (298) 547
"\midi" (299) 156
"\name" (300) 361
"\new" (316) 207
"\notemode" (301) 332
"\override" (302) 101 103 345 371
"\paper" (303) 155
"\remove" (304) 354
"\repeat" (259) 186 187
"\rest" (305) 497
"\revert" (306) 346 372
"\score" (307) 143 591
"\score-lines" (308) 564
"\sequential" (309) 188
"\set" (310) 102 104 373
"\simultaneous" (311) 190
"\tempo" (312) 168 169 170
"\type" (313) 359
"\unset" (314) 344 374
"\version-error" (292) 8 57
"\with" (315) 196 197
"^" (318) 512
"_" (331) 483
"__" (264) 418
"end of input" (0) 0
"markup-list?" (337) 571
"markup?" (333) 576 579 581 583
"optional?" (338) 97 98 99 242 243 244 245 246 247 256 257 258 259
"scheme?" (334) 94 95 96 97 98 99 242 243 244 245 246 247 256 257 258
'!' (33) 455 482 543
''' (39) 437 438
'*' (42) 471 472 529
'+' (43) 453 481 521 525
',' (44) 69 74 231 234 351 395 439 440
'-' (45) 47 243 244 245 273 274 275 301 317 318 392 424 454 461 480
'.' (46) 21 68 73 230 233 350 394 457 469 519
'/' (47) 490 530
':' (58) 473 474
'=' (61) 67 68 69 70 101 102 103 104 168 169 214 326 341 343 345 371
'?' (63) 545
'[' (91) 493
']' (93) 485
'^' (94) 421 452 460
'_' (95) 422 458 459
'{' (123) 62 108 116 130 143 161 174 196 564 566 591
'}' (125) 62 108 116 130 143 154 174 196 564 566 591
BOOK_IDENTIFIER (341) 12 118 132
CHORD_MODIFIER (342) 517
CHORD_REPETITION (343) 397
COMPOSITE (261)
DRUM_PITCH (344) 407 500
DURATION_ARG (345) 255
DURATION_IDENTIFIER (263) 263 276 316 466
E_UNSIGNED (268) 425
error (256) 7 56 129 142 145 167 173
EVENT_FUNCTION (266) 92 95 98 412
EVENT_IDENTIFIER (267) 427
EXPECT_NO_MORE_ARGS (339) 297 574
FIGURE_CLOSE (329) 403
FIGURE_OPEN (330) 403
FRACTION (346) 29 84 472
LOOKUP_IDENTIFIER (347) 20 21
LYRIC_ELEMENT (348) 505
MARKUP_FUNCTION (349) 577 578 583 592
MARKUP_IDENTIFIER (351) 593
MARKUP_LIST_FUNCTION (350) 570
MARKUPLIST_IDENTIFIER (352) 562
MULTI_MEASURE_REST (332) 398
MUSIC_FUNCTION (353) 91 94 97 324
MUSIC_IDENTIFIER (354) 199 225 329 410
NOTENAME_PITCH (355) 441
NUMBER_IDENTIFIER (271) 49 245 272 275 301 534 535 538 540
PITCH_IDENTIFIER (356) 444
PREC_BOT (258)
PREC_TOP (272)
REAL (269) 244 271 274 318 533 535
RESTNAME (357) 501
SCM_ARG (358) 27 252 302 350 351 352
SCM_FUNCTION (359) 46 93 96 99
SCM_IDENTIFIER (360) 23 24 256 277 309 390
SCM_TOKEN (361) 17 22 28 60 125 138 164
STRING (362) 65 237 259 278 312 363 375 378 382 385 448 476 504 573
SYMBOL (365) 66 239 260 279 313 364 376 379 383 386 449 477 503 587
SYMBOL_LIST (363) 229 230 231
TONICNAME_PITCH (364) 442
UNARY_MINUS (366)
UNSIGNED (270) 49 238 243 262 270 273 315 317 451 465 471 474 475 520

Nonterminals, with rules where they appear


   , on right: 97 
                 98 
                 99 
                 242 
                 243 
                 244 
                 245 
                 246 
                 247 
                 256 
                 257 
                 258 
                 259 
                 260 
                 261 
                 262 
                 263 
                 285 
                 287 
                 291 
assignment (148)
    on left: 67 68 69 70, on right: 6 59 162
assignment_id (147)
    on left: 65 66, on right: 67 68 69
bare_number (297)
    on left: 536 537 538, on right: 391 392 532
basic_music (195)
    on left: 210 211 212 213 214, on right: 215 221 223
bass_number (275)
    on left: 475 476 477 478 479, on right: 484
book_block (157)
    on left: 116, on right: 10 36 78
bookpart_block (160)
    on left: 130, on right: 11 37 79 120
br_bass_figure (279)
    on left: 492 493, on right: 495
braced_music_list (177)
    on left: 174, on right: 187 188 189 190
chord_body (245)
    on left: 402 403, on right: 401
chord_body_element (247)
    on left: 406 407 408, on right: 405
chord_body_elements (246)
    on left: 404 405, on right: 402 405
chord_item (289)
    on left: 515 516 517, on right: 510
chord_items (287)
    on left: 509 510, on right: 508 510
chord_separator (288)
    on left: 511 512 513 514, on right: 508 515
composite_music (198)
    on left: 221 222 223, on right: 14 111 122 135 185
context_change (225)
    on left: 341, on right: 194
context_def_spec_block (153)
    on left: 108, on right: 35 81 160
context_mod (232)
    on left: 362 363 364 365, on right: 113 204
context_mod_arg (154)
    on left: 109 111, on right: 115 205
context_mod_list (192)
    on left: 203 204 205, on right: 196 204 205
context_modification (187)
    on left: 196 197, on right: 32 89 114 202
context_modification_arg (189)
    on left: 198 199, on right: 197
context_modification_mods_list (191)
    on left: 201 202, on right: 200 202
context_prefix (193)
    on left: 206 207, on right: 218 219 220
context_prop_spec (235)
    on left: 369, on right: 102 104 373 374
contextable_music (196)
    on left: 215 216 217, on right: 218 219
contexted_basic_music (197)
    on left: 218 219 220, on right: 220 222
direction_less_event (254)
    on left: 426 427 428 429, on right: 415 420
direction_reqd_event (255)
    on left: 430 431, on right: 419
dots (272)
    on left: 468 469, on right: 255 465 466 469
embedded_lilypond (142)
    on left: 50 51 52 53 54 55 56 57, on right: 3 57
embedded_lilypond_number (141)
    on left: 47 48 49, on right: 47 52
embedded_scm_active (136)
    on left: 24 25 26, on right: 18 61 126 139 163
embedded_scm_arg (139)
    on left: 43 44 45, on right: 246 265 298 388
embedded_scm_bare (135)
    on left: 22 23, on right: 40 236 381 384 387 479
event_chord (243)
    on left: 396 397 398 399 400, on right: 192 217
event_function_event (249)
    on left: 412, on right: 429
exclamations (299)
    on left: 542 543, on right: 406 498 543
figure_list (280)
    on left: 494 495, on right: 403 495
figured_bass_alteration (276)
    on left: 480 481 482, on right: 486
figured_bass_modification (278)
    on left: 488 489 490 491, on right: 487
fingering (265)
    on left: 451, on right: 421 422 424
full_markup_list (301)
    on left: 547, on right: 16 31 88 124 137
function_arglist (210)
    on left: 285 286, on right: 46 324 412
function_arglist_skip_nonbackup (211)
    on left: 287 288, on right: 286 288
gen_text_def (264)
    on left: 447 448 449 450, on right: 430
grob_prop_path (234)
    on left: 367 368, on right: 101 103 371
grob_prop_spec (233)
    on left: 366, on right: 367 368
grouped_music_list (200)
    on left: 227 228, on right: 226 328 330 331
header_block (145)
    on left: 64, on right: 9 33 76
identifier_init (149)
    on left: 71 72 73 74 75, on right: 67 68 69 70
lilypond (132)
    on left: 4 5 6 7 8, on right: 1 5 6 7 8
lilypond_header (144)
    on left: 62, on right: 64 128 141 152
lilypond_header_body (143)
    on left: 58 59 60 61, on right: 59 60 61 62
lookup (134)
    on left: 20 21, on right: 26 39 42
lyric_element (284)
    on left: 502 503 504 505, on right: 506
lyric_element_music (285)
    on left: 506, on right: 176 181 253 303
lyric_mode_music (220)
    on left: 328 329, on right: 208 209 213 214
markup (327)
    on left: 594 595, on right: 568 576
markup_braced_list (314)
    on left: 566, on right: 560
markup_braced_list_body (315)
    on left: 567 568 569, on right: 566 568 569
markup_command_list (316)
    on left: 570, on right: 561
markup_composed_list (313)
    on left: 565, on right: 558
markup_head_1_item (321)
    on left: 583, on right: 584 585
markup_head_1_list (322)
    on left: 584 585, on right: 554 565 578 585 594
markup_list (310)
    on left: 558 559, on right: 547 553 569 571
markup_mode (303)
    on left: 548, on right: 105 549 550 552
markup_mode_word (304)
    on left: 549, on right: 70 551
markup_partial_function (319)
    on left: 577 578, on right: 105 552
markup_scm (308)
    on left: 557, on right: 562 593
markup_top (307)
    on left: 553 554 555, on right: 550
markup_uncomposed_list (311)
    on left: 560 561 562 564, on right: 559 565
markup_word (323)
    on left: 586 587, on right: 549 588
maybe_notemode_duration (268)
    on left: 462 463, on right: 464 498 507
mode_changed_music (222)
    on left: 330 331, on right: 224
mode_changing_head (223)
    on left: 332 333 334 335 336, on right: 330
multiplied_duration (271)
    on left: 467, on right: 54 182 249 282 306 463
multipliers (273)
    on left: 470 471 472, on right: 255 467 471 472
music (178)
    on left: 175 176 177, on right: 147 179 186 187
music_assign (182)
    on left: 184 185, on right: 45 82 159 175
music_bare (199)
    on left: 224 225 226, on right: 212
music_embedded (180)
    on left: 179 180 181 182, on right: 55 172
music_embedded_backup (181)
    on left: 183, on right: 180 181
music_function_call (218)
    on left: 324, on right: 210 409 416
music_function_chord_body (248)
    on left: 409 410 411, on right: 408
music_list (176)
    on left: 171 172 173, on right: 55 172 173 174 191
music_or_context_def (172)
    on left: 159 160, on right: 166
music_property_def (237)
    on left: 371 372 373 374, on right: 193
new_chord (286)
    on left: 507 508, on right: 499
new_lyrics (194)
    on left: 208 209, on right: 209 218 223
note_chord_element (244)
    on left: 401, on right: 400
number_expression (293)
    on left: 525 526 527, on right: 72 525 526
number_factor (295)
    on left: 531 532, on right: 528 529 530 531
number_term (294)
    on left: 528 529 530, on right: 525 526 527
octave_check (256)
    on left: 432 433, on right: 406 498
optional_context_mods (190)
    on left: 200, on right: 206 207 208 209 331
optional_id (219)
    on left: 325 326, on right: 206 207
optional_rest (281)
    on left: 496 497, on right: 498
output_def (169)
    on left: 154, on right: 19 38 80 148 153
output_def_head (170)
    on left: 155 156 157, on right: 158
output_def_head_with_mode_switch (171)
    on left: 158, on right: 161
paper_block (168)
    on left: 153, on right: 119 133
partial_markup (306)
    on left: 552, on right: 30 87
pitch (262)
    on left: 443 444, on right: 257 267 310 445 498
pitch_as_music (179)
    on left: 178, on right: 177 216
pitch_or_music (282)
    on left: 498 499, on right: 83 178 248 280 304 389
pitch_or_tonic_pitch (263)
    on left: 445 446, on right: 406
post_event (252)
    on left: 423 424, on right: 53 414
property_operation (227)
    on left: 343 344 345 346, on right: 362
property_path (226)
    on left: 342, on right: 68 69 73 74 368 394 395
questions (300)
    on left: 544 545, on right: 406 498 545
quotes (257)
    on left: 434 435 436, on right: 433 441 442 444
reparsed_rhythm (207)
    on left: 255, on right: 250 283 307
repeated_music (183)
    on left: 186 187, on right: 211
revert_arg (228)
    on left: 347, on right: 345 346 372
revert_arg_backup (229)
    on left: 348, on right: 347 350 351 352
revert_arg_part (230)
    on left: 349 350 351 352, on right: 348
scm_function_call (140)
    on left: 46, on right: 25 41 44
score_block (163)
    on left: 143, on right: 13 34 77 121 134
score_body (164)
    on left: 144 145, on right: 143 145 564 591
score_item (165)
    on left: 146 147 148, on right: 150
score_items (166)
    on left: 149 150 152, on right: 144 150 152
script_dir (267)
    on left: 459 460 461, on right: 105 106 107 416 419 420
sequential_music (184)
    on left: 188 189, on right: 228
simple_element (283)
    on left: 500 501, on right: 396
simple_markup (324)
    on left: 588 589, on right: 554 594 595
simple_markup_noword (325)
    on left: 591 592 593, on right: 555 589
simple_music (186)
    on left: 192 193 194, on right: 184
simple_revert_context (236)
    on left: 370, on right: 372
simultaneous_music (185)
    on left: 190 191, on right: 227
start_symbol (130)
    on left: 1 3, on right: 0
steno_duration (270)
    on left: 465 466, on right: 168 169 467
steno_pitch (260)
    on left: 441, on right: 443
step_number (291)
    on left: 520 521 522, on right: 518 519
step_numbers (290)
    on left: 518 519, on right: 516 519
string (238)
    on left: 375 376 377, on right: 85 393
string_number_event (253)
    on left: 425, on right: 426
sub_quotes (259)
    on left: 439 440, on right: 435 440
sup_quotes (258)
    on left: 437 438, on right: 436 438
symbol (241)
    on left: 385 386 387, on right: 206 207 214 341 343 344
symbol_list_arg (201)
    on left: 229 230 231, on right: 254 284 308 347
symbol_list_element (204)
    on left: 237 238, on right: 240
symbol_list_part_bare (205)
    on left: 239 240, on right: 73 74 235 394 395
tempo_event (175)
    on left: 168 169 170, on right: 399
tempo_range (292)
    on left: 523 524, on right: 168 169
text (239)
    on left: 378 379 380 381, on right: 169 170
tremolo_type (274)
    on left: 473 474, on right: 428
unsigned_number (298)
    on left: 539 540 541, on right: 186 187 523 524

LilyPond — Contributor’s Guide v2.19.82 (development-branch).