General format of a construct:

	BLOCKNAME {  <info to go with this block>   }

Some types allow declarations:

	IDENTIFIER = BLOCKNAME {
		<info to go with this block>
	}

	..

	BLOCKNAME {
		IDENTIFIER
		...
	}


In musicmode, eg,

	''!c8.-"text"_v

a lot of characters parse differently
than in "command" mode, eg,

	identifier = score { .. }

So you have to signal that to the tokenizer. This is done with
'$'. '$' is a delimiter, which used by the tokenizer only.

* musicmode: The brace still is used to group grammatical groups.
* musicmode: "word" are preceded by a '\' (backslash)

This means you can write some stuff in a zillion ways:

1.	$\var = \blockname { ... } $

2.	var = blockname { $ ... $ } 

3.	var = $ $ $\blockname {  ... $ } 

COMMENTS

not really crystallized; you can use '#' or '%' as line comment

OTHER

A correctly parsed .ly does not guarantuee output. A lot (most) of the
checking is done *after* parsing (some checks even are done after the
break calc!);  I'm sorry.

The parser's job is to construct appropriate objects. It will *only*
detect parse errors.

LilyPond first reads 'symbol.ini', which contains declarations crucial
to proper operation of LilyPond (symbol tables, note names)

This language looks a lot like Rayce's which in turn owes a lot to the
POVRay raytracer. Now, I know, musictypesetting and Raytracing do not
necessarily require the same input format, but I was just to lazy to
make up a new/better input format. Suggestions welcome.
