您的位置:首页 > 电脑网络 > 笔记本 > Microsoft C++完整词法分析(三)

Microsoft C++完整词法分析(三)

luyued 发布于 2011-02-03 07:35   浏览 N 次  

5常量

在C++语言中,常量主要有4种:整数、字符、浮点和字符串常量。下面分别加以介绍。

5.1整数常量

整数常量显然有4种情况。十进制、八进制和十六进制这3种整数我们已经很熟悉了。除了这3种整数以外,在C++中也可以把一个普通的字符来当整数用。比如:int a=’a’;整数由整数体和整数后缀构成。比如:int a = 128ul。

整数常量的文法如下:

integer-constant :

decimal-constant integer-suffixopt
octal-constantinteger-suffixopt
hexadecimal-constantinteger-suffixopt
'c-char-sequence'

decimal-constant :

nonzero-digit
decimal-constantdigit

octal-constant :

0
octal-constantoctal-digit

hexadecimal-constant :

0x hexadecimal-digit
0Xhexadecimal-digit
hexadecimal-constanthexadecimal-digit

nonzero-digit : one of

1 23456789

octal-digit : one of

0 1234567

hexadecimal-digit : one of

0 123456789
abcdef
ABCDEF

integer-suffix :

unsigned-suffix long-suffixopt
long-suffixunsigned-suffixopt

unsigned-suffix : one of

u U

long-suffix : one of

l L

64-bit integer-suffix :

i64

64位的后缀一般不需要,编译器会自动识别出来的。其对应的正则表达式为:

unsigned_suffix : u|U

long_suffix : l|L

integer_suffix : {unsigned_suffix}{long_suffix}?|{long_suffix}{unsigned_suffix}?

nonzero_digit : [1-9]

octal_digit : [0-7]

hex_digit : [0-9a-fA-F]

dec_constant : {nonzero_digit}{digit}*

octal_constant : 0{octal_digit}*

hex_constant : 0(x|X){hex_digit}*

integer_constant : ({dec_constant}|{octal_constant}|{hex_constant}){integer_suffix}?|\’{c_char_sequence}\’

5.2字符常量

普通字符常量只有一个字符,但是,Mircosoft C++支持宽字符。总体来说,它支持3种类型的字符常量:普通字符常量、多字符常量和宽字符常量。下面是几个例子:

1int a = ’b’; 2int a = ‘ab’; 3wchar_t c = L‘ab’; wchar_t类型定义在文件stdlib.h中。

字符常量的文法如下:

character-constant :

'c-char-sequence'
L'c-char-sequence'

c-char-sequence :

c-char
c-char-sequencec-char

c-char :

any member of the source character set except the single quotation mark ('), backslash (\), or newline character
escape-sequence

escape-sequence :

simple-escape-sequence
octal-escape-sequence
hexadecimal-escape-sequence

simple-escape-sequence : one of

\' \"\?\\
\a\b\f\n\r\t\v

octal-escape-sequence :

\octal-digit
\octal-digitoctal-digit
\octal-digitoctal-digitoctal-digit

hexadecimal-escape-sequence :

\x

广告赞助商