IEEE Std 1076.1-2017
IEEE Standard VHDL Analog and Mixed-Signal Extensions
16
Copyright © 2018 IEEE. All rights reserved.
Each subclause describing a specific construct begins with an introductory paragraph. Next, the syntax of
the construct is described using one or more grammatical productions.
A set of paragraphs describing the meaning and restrictions of the construct in narrative form then follow.
In this document, the word shall is used to indicate a mandatory requirement. The word should is used to
indicate a recommendation. The word may is used to indicate a permissible action. The word can is used for
statements of possibility and capability.
Finally, each clause may end with examples, notes, and references to other pertinent clauses.
1.3.2 Syntactic description
The form of a VHDL description is described by means of context-free syntax using a simple variant of the
Backus-Naur form (BNF); in particular:
a) Lowercase words in roman font, some containing embedded underlines, are used to denote syntactic
categories, for example:
formal_port_list
Whenever the name of a syntactic category is used, apart from the syntax rules themselves, spaces
take the place of underlines [thus, “formal port list” would appear in the narrative description when
referring to the syntactic category in item a)].
b) Boldface words are used to denote reserved words, for example:
array
Reserved words shall be used only in those places indicated by the syntax.
c) A production consists of a left-hand side, the symbol “::=” (which is read as “can be replaced by”),
and a right-hand side. The left-hand side of a production is always a syntactic category; the
right-hand side is a replacement rule. The meaning of a production is a textual-replacement rule: any
occurrence of the left-hand side may be replaced by an instance of the right-hand side.
d) A vertical bar (|) separates alternative items on the right-hand side of a production unless it occurs
immediately after an opening brace, in which case it stands for itself, as follows:
letter_or_digit ::= letter | digit
choices ::= choice { | choice }
In the first instance, an occurrence of “letter_or_digit” can be replaced by either “letter” or “digit.”
In the second case, “choices” can be replaced by a list of “choice,” separated by vertical bars [see
item f) for the meaning of braces].
e) Square brackets [ ] enclose optional items on the right-hand side of a production; thus, the following
two productions are equivalent:
return_statement ::= return [ expression ] ;
return_statement ::= return ; | return expression ;
Note, however, that the initial and terminal square brackets in the right-hand side of the production
for signatures (see 4.5.3) are part of the syntax of signatures and do not indicate that the entire
right-hand side is optional.
f) Braces { } enclose a repeated item or items on the right-hand side of a production. The items may
appear zero or more times; the repetitions occur from left to right as with an equivalent left-recursive
rule. Thus, the following two productions are equivalent:
term ::= factor { multiplying_operator factor }
term ::= factor | term multiplying_operator factor
g) If the name of any syntactic category starts with an italicized part, it is equivalent to the category
name without the italicized part. The italicized part is intended to convey some semantic
Authorized licensed use limited to: TUFTS UNIV. Downloaded on February 19,2018 at 15:00:10 UTC from IEEE Xplore. Restrictions apply.