- •0. Overview of this standard
- •0.1 Intent and scope of this standard
- •0.2 Structure and terminology of this standard
- •1.1 Entity declarations
- •1.2 Architecture bodies
- •2. Subprograms and packages
- •2.1 Subprogram declarations
- •2.2 Subprogram bodies
- •2.3 Subprogram overloading
- •2.4 Resolution functions
- •2.5 Package declarations
- •2.6 Package bodies
- •2.7 Conformance rules
- •3. Types
- •3.1 Scalar types
- •3.2 Composite types
- •3.3 Access types
- •3.4 File types
- •3.5 Protected types
- •4. Declarations
- •4.1 Type declarations
- •4.2 Subtype declarations
- •4.3 Objects
- •4.4 Attribute declarations
- •4.5 Component declarations
- •4.6 Group template declarations
- •4.7 Group declarations
- •6. Names
- •6.1 Names
- •6.2 Simple names
- •6.3 Selected names
- •6.4 Indexed names
- •6.5 Slice names
- •6.6 Attribute names
- •7. Expressions
- •7.1 Expressions
- •7.2 Operators
- •7.3 Operands
- •7.4 Static expressions
- •7.5 Universal expressions
- •8. Sequential statements
- •8.1 Wait statement
- •8.2 Assertion statement
- •8.3 Report statement
- •8.4 Signal assignment statement
- •8.5 Variable assignment statement
- •8.6 Procedure call statement
- •8.7 If statement
- •8.8 Case statement
- •8.9 Loop statement
- •8.10 Next statement
- •8.11 Exit statement
- •8.12 Return statement
- •8.13 Null statement
- •9. Concurrent statements
- •9.1 Block statement
- •9.2 Process statement
- •9.3 Concurrent procedure call statements
- •9.4 Concurrent assertion statements
- •9.5 Concurrent signal assignment statements
- •9.6 Component instantiation statements
- •9.7 Generate statements
- •10. Scope and visibility
- •10.1 Declarative region
- •10.2 Scope of declarations
- •10.3 Visibility
- •10.4 Use clauses
- •10.5 The context of overload resolution
- •11. Design units and their analysis
- •11.1 Design units
- •11.2 Design libraries
- •11.3 Context clauses
- •11.4 Order of analysis
- •12. Elaboration and execution
- •12.1 Elaboration of a design hierarchy
- •12.2 Elaboration of a block header
- •12.3 Elaboration of a declarative part
- •12.4 Elaboration of a statement part
- •12.5 Dynamic elaboration
- •12.6 Execution of a model
- •13. Lexical elements
- •13.1 Character set
- •13.2 Lexical elements, separators, and delimiters
- •13.4 Abstract literals
- •13.5 Character literals
- •13.6 String literals
- •13.7 Bit string literals
- •13.8 Comments
- •13.9 Reserved words
- •13.10 Allowable replacements of characters
- •14.2 Package STANDARD
- •14.3 Package TEXTIO
IEEE
LANGUAGE REFERENCE MANUAL |
Std 1076-2002 |
13. Lexical elements
The text of a description consists of one or more design files. The text of a design file is a sequence of lexical elements, each composed of characters; the rules of composition are given in this clause.
13.1 Character set
The only characters allowed in the text of a VHDL description (except within comments—see 13.8) are the graphic characters and format effectors. Each graphic character corresponds to a unique code of the ISO
eight-bit coded character set (ISO 8859-1: 1987 [B11]) and is represented (visually) by a graphical symbol.
basic_graphic_character ::=
upper_case_letter | digit | special_character | space_character
graphic_character ::=
basic_graphic_character | lower_case_letter | other_special_character
basic_character ::=
basic_graphic_character | format_effector
The basic character set is sufficient for writing any description. The characters included in each of the categories of basic graphic characters are defined as follows:
a)Uppercase letters
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î
. |
´ ' |
Ï D Ñ Ò Ó Ô Õ Ö Ø Ù Ú Û Ü |
Y P |
b)Digits
0 1 2 3 4 5 6 7 8 9
c)Special characters
"# & ' () * + , - . / : ; < = > [ ] _ |
d)The space characters
SPACE 2 NBSP 3
Format effectors are the ISO (and ASCII) characters called horizontal tabulation, vertical tabulation, carriage return, line feed, and form feed.
The characters included in each of the remaining categories of graphic characters are defined as follows:
e)Lowercase letters
a b c d e f g h i j k l m n o p q r s t u v w x y z ß à á â ã ä å æ ç è é ê ë ì í î ï |
∂´ñ ò ó ô |
|
õ ö ø ù ú û ü |
y´ p' ÿ |
|
f)Other special characters
|
|
|
! $ % @ ? \ ^ ` { } ~ ¡ ¢ £ |
€ ¥ ||§ ¨ © ª « ¬ -® ¯ ° ± 2 3 ´ µ ¶ • ¸1 º »1/4 1/2 3/4¿ × |
÷ - (soft hyphen) |
|
|
|
|
|
|
||
2The |
visual representation of the space is the absence of a graphic symbol. It may be interpreted as a graphic character, a cont |
rol |
||||
character, or both. |
|
|
||||
3The |
visual |
representation of the nonbreaking space is the absence of a graphic symbol. It is used when a line break is to be pr |
evented |
|||
in the text |
as presented. |
|
|
Copyright © 2002 IEEE. All rights reserved. |
179 |
IEEE |
|
Std 1076-2002 |
IEEE STANDARD VHDL |
Allowable replacements for the special characters vertical line (|), number sign (#), and quotation mark (") are defined in 13.10.
NOTES
1—The font design of graphical symbols (for example, whether they are in italic or bold typeface) is not part of ISO 8859-1:1987 [B11].
2—The meanings of the acronyms used in this clause are as follows: ASCII stands for American Standard Code for Information Interchange, ISO stands for International Organization for Standardization.
3—There are no uppercase equivalents for the characters ß and ÿ. 4—The following names are used when referring to special characters:
Character |
Name |
|
|
" |
Quotation mark |
|
|
# |
Number sign |
|
|
& |
Ampersand |
|
|
' |
Apostrophe, tick |
|
|
( |
Left parenthesis |
|
|
) |
Right parenthesis |
|
|
* |
Asterisk, multiply |
|
|
+ |
Plus sign |
|
|
, |
Comma |
|
|
- |
Hyphen, minus sign |
|
|
. |
Dot, point, period, full stop |
|
|
/ |
Slash, divide, solidus |
|
|
: |
Colon |
|
|
; |
Semicolon |
|
|
< |
Less-than sign |
|
|
= |
Equals sign |
|
|
> |
Greater-than sign |
|
|
_ |
Underline, low line |
|
|
| |
Vertical line, vertical bar |
|
|
! |
Exclamation mark |
|
|
$ |
Dollar sign |
|
|
% |
Percent sign |
|
|
? |
Question mark |
|
|
@ |
Commercial at |
|
|
[ |
Left square bracket |
|
|
\ |
Backslash, reverse solidus |
|
|
] |
Right square bracket |
|
|
^ |
Circumflex accent |
|
|
` |
Grave accent |
|
|
180 |
Copyright © 2002 IEEE. All rights reserved. |
IEEE
LANGUAGE REFERENCE MANUAL |
Std 1076-2002 |
Character |
Name |
|
|
|
|
{ |
Left curly bracket |
|
|
|
|
} |
Right curly bracket |
|
|
|
|
~ |
Tilde |
|
|
|
|
¡ |
Inverted exclamation mark |
|
|
|
|
¢ |
Cent sign |
|
|
|
|
£ |
Pound sign |
|
|
|
|
€ |
Currency sign |
|
|
|
|
¥ |
Yen sign |
|
|
|
|
| |
Broken bar |
|
| |
|
|
|
|
|
|
|
|
§ |
Paragraph sign, clause sign |
|
|
|
|
¨ |
Diaeresis |
|
|
|
|
© |
Copyright sign |
|
|
|
|
ª |
Feminine ordinal indicator |
|
|
|
|
« |
Left angle quotation mark |
|
|
|
|
¬ |
Not sign |
|
|
|
|
- |
Soft hyphen |
* |
|
||
|
|
|
® |
Registered trade mark sign |
|
|
|
|
¯ |
Macron |
|
|
|
|
° |
Ring above, degree sign |
|
|
|
|
± |
Plus-minus sign |
|
|
|
|
2 |
Superscript two |
|
|
|
|
|
|
|
3 |
Superscript three |
|
|
|
|
|
|
|
´ |
Acute accent |
|
|
|
|
|
Micro sign |
|
|
|
|
¶ |
Pilcrow sign |
|
|
|
|
• |
Middle dot |
|
|
|
|
¸ |
Cedilla |
|
|
|
|
1 |
Superscript one |
|
|
|
|
|
|
|
º |
Masculine ordinal indicator |
|
|
|
|
» |
Right angle quotation mark |
|
|
|
|
1 /4 |
Vulgar fraction one quarter |
|
1 /2 |
Vulgar fraction one half |
|
3/4 |
Vulgar fraction three quarters |
|
¿ |
Inverted question mark |
|
|
|
|
× |
Multiplication sign |
|
|
|
|
÷ |
Division sign |
|
|
|
|
*The soft hyphen is a graphic character that is represented by a graphic symbol identical with, or similar to, that representing a hyphen, for use when a line break has been established within a word.
Copyright © 2002 IEEE. All rights reserved. |
181 |
IEEE |
|
Std 1076-2002 |
IEEE STANDARD VHDL |
13.2 Lexical elements, separators, and delimiters
The text of each design unit is a sequence of separate lexical elements. Each lexical element is either a delimiter, an identifier (which may be a reserved word), an abstract literal, a character literal, a string literal, a bit string literal, or a comment.
In some cases an explicit separator is required to separate adjacent lexical elements (namely when, without separation, interpretation as a single lexical element is possible). A separator is either a space character (SPACE or NBSP), a format effector, or the end of a line. A space character (SPACE or NBSP) is a separator except within an extended identifier, a comment, a string literal, or a space character literal.
The end of a line is always a separator. The language does not define what causes the end of a line. However if, for a given implementation, the end of a line is signified by one or more characters, then these characters must be format effectors other than horizontal tabulation. In any case, a sequence of one or more format effectors other than horizontal tabulation must cause at least one end-of-line.
One or more separators are allowed between any two adjacent lexical elements, before the first of each design unit or after the last lexical element of a design file. At least one separator is required between an identifier or an abstract literal and an adjacent identifier or abstract literal.
A delimiter is either one of the following special characters (in the basic character set):
& ' ( ) * + , - . / : ; < = > | [ ]
or one of the following compound delimiters, each composed of two adjacent special characters:
=> ** := /= >= <= <>
Each of the special characters listed for single character delimiters is a single delimiter except if this character is used as a character of a compound delimiter or as a character of a an extended identifier, comment, string literal, character literal, or abstract literal.
The remaining forms of lexical elements are described in subclauses of this clause.
NOTES
1—Each lexical element must fit on one line, since the end of a line is a separator. The quotation mark, number sign, and underline characters, likewise two adjacent hyphens, are not delimiters, but may form part of other lexical elements.
2—The following names are used when referring to compound delimiters:
Delimiter |
Name |
=> |
Arrow |
** |
Double star, exponentiate |
:= |
Variable assignment |
/= |
Inequality (pronounced “not equal”) |
>= |
Greater than or equal |
<= |
Less than or equal; signal assignment |
<> |
Box |
182 |
Copyright © 2002 IEEE. All rights reserved. |