I'm trying to get a better understanding of LilyPond the "programming language". Can someone look this over? Am I on the right track? As an example of some of the confusion I'm having, it seems to me that there are 3 categories of datatypes. That seems wrong, but I don't know how to resolve it. Can anyone suggest better terminology or clarify any misconceptions that I seem to have based on this?
Thanks! - Mark Operators: ---------- * the first line is indexed with double-quotes in the grammar appendix, and the second line with single-quotes. Does this imply any categorical difference? * is "operator" the right term for this category? - -- / /+ : < << > >> \! \ \( \) \+ \< \> \[ \] ! ' ( ) * + , - . / : = ? [ ] ^ _ { | } ~ Datatypes(1): ------------- (datatypes whose type-check predicates are defined in C++) * using the method discussed here: http://lists.gnu.org/archive/html/lilypond-devel/2009-06/msg00631.html box context dimension dir dispatcher duration font-metric grob grob-array input-location item iterator lily-lexer lily-parser listener moment music music-function music-list music-output otf-font output-def page-marker pango-font paper-book paper-system pitch prob score simple-closure skyline skyline-pair source-file spanner stencil stream-event translator translator-group Datatypes(2): ------------- (datatypes whose type-check predicates are defined in scheme) * I don't know how to determine if there are others in this category. Is there a way? markup markup-list Datatypes(3): ------------- (datatypes derived from the grammar appendix) * these are clearly of a different sort than the previous two. Can someone explain? * why is "error" uncapitalized? should it be ALL-CAPS, or does it not belong in this category? BOOK_IDENTIFIER CHORD_MODIFIER CHORDMODIFIER_PITCH CHORDMODIFIERS CONTEXT_DEF_IDENTIFIER DIGIT DRUM_PITCH DURATION_IDENTIFIER E_UNSIGNED error EVENT_IDENTIFIER EXPECT_MARKUP EXPECT_MUSIC EXPECT_NO_MORE_ARGS EXPECT_SCM FIGURE_CLOSE FIGURE_OPEN FRACTION LYRIC_MARKUP LYRIC_MARKUP_IDENTIFIER LYRICS_STRING MARKUP_HEAD_EMPTY MARKUP_HEAD_LIST0 MARKUP_HEAD_MARKUP0 MARKUP_HEAD_MARKUP0_MARKUP1 MARKUP_HEAD_SCM0 MARKUP_HEAD_SCM0_MARKUP1 MARKUP_HEAD_SCM0_MARKUP1_MARKUP2 MARKUP_HEAD_SCM0_SCM1 MARKUP_HEAD_SCM0_SCM1_MARKUP2 MARKUP_HEAD_SCM0_SCM1_MARKUP2_MARKUP3 MARKUP_HEAD_SCM0_SCM1_SCM2 MARKUP_IDENTIFIER MARKUP_LIST_HEAD_EMPTY MARKUP_LIST_HEAD_LIST0 MARKUP_LIST_HEAD_SCM0 MARKUP_LIST_HEAD_SCM0_LIST1 MARKUP_LIST_HEAD_SCM0_SCM1_LIST2 MULTI_MEASURE_REST MUSIC_FUNCTION MUSIC_IDENTIFIER NOTENAME_PITCH NUMBER_IDENTIFIER OUTPUT_DEF_IDENTIFIER PREC_BOT PREC_TOP REAL RESTNAME SCM_IDENTIFIER SCM_TOKEN SCORE_IDENTIFIER STRING STRING_IDENTIFIER TONICNAME_PITCH UNARY_MINUS UNSIGNED Keywords: --------- * a list of the names of all the commands listed in the index of the grammar appendix should be equivalent to a list of all the LilyPond "keywords", I think. Let me know if this is wrong. * is there a proper name for the associated command-set? I would call them "core commands"; is there a better term? accepts addlyrics alias alternative book bookpart C[haracter] change chordmode chords consists context default defaultchild denies description drummode drums figuremode figures grobdescriptions header invalid key layout lyricmode lyrics lyricsto mark markup markuplines midi name new notemode objectid octave once override paper partial relative remove repeat rest revert score sequential set simultaneous skip tempo time times transpose type unset with _______________________________________________ lilypond-devel mailing list lilypond-devel@gnu.org http://lists.gnu.org/mailman/listinfo/lilypond-devel