Dave Barton <*>
					dlb@averstar.com )0(
					http://www.averstar.com/~dlb
----------------------------------------------------------------
This is a definition of the DCDL syntax.  The syntactic conventions
are the same as those used for the VHDL syntax description:
1) Sequencing is shown by juxtaposition.
2) Alternation is shown by a bar "|"
3) Grouping is shown by parentheses.
4) Optional constructs are encased in brackets.
5) Constructs in braces are repeated zero or more times.
Since I cannot do bolding, keywords are identified by enclosing them
in quotation marks (with normal escaped characters as necessary).
   constraint ::= FUNCTION_identifier { parameter }
   parameter ::= named_parameter | positional parameter
   named_parameter ::= PARAMETER_iden positional_parameter
   positional_parameter ::= value | positional_parameter_list
   positional_parameter_list ::= "{" { value } "}"
   value ::= ARGUMENT_identifier | number | quoted_string
   number ::= ["-"] num [ "." num ]
   quoted_string ::= "\"" {symb} "\""
In the above, FUNCTION_identifier and ARGUMENT_identifier both
correspond to the following regular expression:
   identifier = [a-zA-Z][a-zA-Z0-9_]*
A PARAMETER_identifier corresponds to the following regular
expression:
   PARAMETER_iden = -[a-zA-Z][a-zA-Z0-9_]*
The num terminal corresponds to the following regular expression:
   num = [0-9]*
A symb can be any character, with normal escaped characters as
necessary: "\"" means a single quotation mark, "\\" is a single
backslash, "\n" for carriage return, and so on.
Whitespace consists of spaces, tab characters, vertical tabs, and
carriage returns.  Any adjacent non-operators (identifiers,
PARAMETER_idens, and numbers) must be separated by whitespace.