CRGreathouse's question on another board got me looking at this. I think it is a good idea to have a standard format guide, but the restrictive way it's implemented seems excessive.
For instance, should we restrict
string to a particular character set? Does that add something useful to the grammar? Sure, you need to keep out non-quoted delimiters, but why rule out, say, feat names like "Rock & Roll"? Another problem with the way this is done is that you haven't defined a character set. Very commonly, non-American platforms (even in English speaking countries) and even many older US computers will use different code pages from Latin-1 or alternative typefaces for localized encoding. If one of those is being used, you might be excluding half the alphabet and including any number of punctuation elements.
Also, if you do use UTF-8 (as someone recommended, and it's not a bad idea), restricting your characters the way you've done it will utterly hork with the encoding system. The only safe way to filter UTF-8 with single byte characters is to allow all 8-bit characters with the MSB set (see
http://czyborra.com/utf/).
Personally, as an ex-software internationalizer, I would be inclined to recommend against any restriction on the makeup of strings besides what you need to avoid delimiter conflicts, which as far as I can tell excludes only ',' and ';' (and perhaps '(' and ')'). Maybe creating a field to indicate the character encoding would be good, but I think it's best left to the applications programmers to decide what they want to their apps to do with like Latin-4. Pass it through, don't mess with it if you don't have to mess with it.
Similarly, the capitalization restriction is unnecessary and potentially interferes with localization of the format. Many languages don't even have letter cases, and virtually all of those that do have different capitalization rules from English. Plus you again run into the problem that Ï in Latin-1 may not correspond to the capital of ï in a random character set.
Also, should
type be restricted? If this is a general d20 format, I think it's safe to say there's a good chance that somebody with some d20 setting will want to use a different monster type someday. Same goes for Elemental subtypes. Dust, shadow, steam elemental, I've seen those in many contexts
It might be best not to wed the format to the 9-point alignment system either.
As a general rule with something like this, it's usually best not to restrict the options for the various fields any more than necessary.