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.