
- •Лекция 2
- •Базовые элементы языка программирования
- •Категории лексем
- •Идентификаторы
- •Ключевые слова
- •Зарезервированные идентификаторы
- •Стандартные идентификаторы
- •Идентификатор пользователя
- •Константы
- •Литералы
- •Целые константы
- •Вещественные константы
- •Булевские (логические) константы
- •Символьные константы
- •Строковые константы
- •Именованные типизированные константы
- •Перечислимые константы
- •Препроцессорные константы
- •Знаки операций
- •Знаки пунктуации
- •Разделители
- •Пробельные разделители
- •В результате изучения материала лекции необходимо знать
Разделители
Компилятор, выполняя лексический анализ программы на языке С++, для распознания начала и (или) конца лексем использует разделители.
Функции разделителей:
обозначение места начала и конца лексем;
исключение из компиляции всех избыточных символов, не входящих в состав лексем.
Разделители лексем:
пробельные разделители
знаки операций (они сами есть лексемы)
знаки пунктуации (они сами есть лексемы).
Пробельные разделители
К пробельным разделителям относятся неизображаемые символы и комментарии. Пробельные разделители игнорируются и не обрабатываются компилятором.
В общем случае пробельных разделителей может быть произвольное количество (даже ни одного). Однако хороший стиль предполагает наличие хотя бы одного такого символа после каждой лексемы.
Комментарий не является лексемой и трактуется компилятором как пробельный разделитель. Многострочный комментарий отмечается символами "/*" в начале и "*/" в конце выделяемого текста. Признаком однострочного комментария являются символы "//" в начале строки программы. Однострочный комментарий удобно использовать как пояснение к тексту оператора. Например:
int a; // текст, поясняющий назначение переменной
Комментарии можно использовать и при отладке программы: для исключения из компиляции некоторого фрагмента программы.
Символы комментария необходимо отделять от текста программы пробелом. В противном случае, текст программы может неправильно интерпретироваться компилятором.
Например, запись без пробелов:
int i = j //*деление на k*/k
+m;
будет распознана неправильно, как int i = j + m; (как имеющая однострочный комментарий), Запись с пробелами:
int i = j / /*деление на k*/ k
+m;
будет распознана правильно, как int i = j / j / k+m; (как имеющая многострочный комментарий).
Комментарии не могут быть вложенными, т.к. в тексте однострочного комментария символы многострочного комментария /* игнорируются (воспринимаются как обычные символы). Точно также игнорируются (воспринимаются как обычные) в тексте многострочного комментария символы однострочного комментария //.
Таблица 2.6.
ASCII-Коды (символы с кодами 0-127)
01111111
dec |
hex |
char |
dec |
hex |
char |
dec |
hex |
char |
0 |
0 |
|
46 |
2E |
. |
92 |
5C |
\ |
1 |
1 |
|
47 |
2F |
/ |
93 |
5D |
] |
2 |
2 |
|
48 |
30 |
0 |
94 |
5E |
^ |
3 |
3 |
|
49 |
31 |
1 |
95 |
5F |
_ |
4 |
4 |
|
50 |
32 |
2 |
96 |
60 |
' |
5 |
5 |
|
51 |
33 |
3 |
97 |
61 |
a |
6 |
6 |
|
52 |
34 |
4 |
98 |
62 |
b |
7 |
7 |
звонок |
53 |
35 |
5 |
99 |
63 |
c |
8 |
8 |
|
54 |
36 |
6 |
100 |
64 |
d |
9 |
9 |
|
55 |
37 |
7 |
101 |
65 |
e |
10 |
A |
перевод строки |
56 |
38 |
8 |
102 |
66 |
f |
11 |
B |
|
57 |
39 |
9 |
103 |
67 |
g |
12 |
C |
|
58 |
3A |
: |
104 |
68 |
h |
13 |
D |
возврат каретки |
59 |
3B |
; |
105 |
69 |
i |
14 |
E |
|
60 |
3C |
< |
106 |
6A |
j |
15 |
F |
|
61 |
3D |
= |
107 |
6B |
k |
16 |
10 |
|
62 |
3E |
> |
108 |
6C |
l |
17 |
11 |
|
63 |
3F |
? |
109 |
6D |
m |
18 |
12 |
|
64 |
40 |
@ |
110 |
6E |
n |
19 |
13 |
|
65 |
41 |
A |
111 |
6F |
o |
20 |
14 |
|
66 |
42 |
B |
112 |
70 |
p |
21 |
15 |
|
67 |
43 |
C |
113 |
71 |
q |
22 |
16 |
|
68 |
44 |
D |
114 |
72 |
r |
23 |
17 |
|
69 |
45 |
E |
115 |
73 |
s |
24 |
18 |
|
70 |
46 |
F |
116 |
74 |
t |
25 |
19 |
|
71 |
47 |
G |
117 |
75 |
u |
26 |
1A |
|
72 |
48 |
H |
118 |
76 |
v |
27 |
1B |
|
73 |
49 |
I |
119 |
77 |
w |
28 |
1C |
|
74 |
4A |
J |
120 |
78 |
x |
29 |
1D |
|
75 |
4B |
K |
121 |
79 |
y |
30 |
1E |
|
76 |
4C |
L |
122 |
7A |
z |
31 |
1F |
|
77 |
4D |
M |
123 |
7B |
{ |
32 |
20 |
пробел |
78 |
4E |
N |
124 |
7C |
¦ |
33 |
21 |
! |
79 |
4F |
O |
125 |
7D |
} |
34 |
22 |
'' |
80 |
50 |
P |
126 |
7E |
~ |
35 |
23 |
# |
81 |
51 |
Q |
127 |
7 |
del |
36 |
24 |
$ |
82 |
52 |
R |
|
|
|
37 |
25 |
% |
83 |
53 |
S |
|
|
|
38 |
26 |
& |
84 |
54 |
T |
|
|
|
39 |
27 |
' |
85 |
55 |
U |
|
|
|
40 |
28 |
( |
86 |
56 |
V |
|
|
|
41 |
29 |
) |
87 |
57 |
W |
|
|
|
42 |
2A |
* |
88 |
58 |
X |
|
|
|
43 |
2B |
+ |
89 |
59 |
Y |
|
|
|
44 |
2C |
, |
90 |
5A |
Z |
|
|
|
45 |
2D |
- |
91 |
5B |
[ |
|
|
|
01111111
Таблица 2.7.
Кодовая таблица 866 – MS-DOS
(символы с кодами 127-255)
dec |
hex |
char |
dec |
hex |
char |
dec |
hex |
char |
dec |
hex |
char |
dec |
hex |
char |
dec |
hex |
char |
128 |
80 |
А |
150 |
96 |
Ц |
172 |
AC |
м |
193 |
C1 |
┴ |
214 |
D6 |
╓ |
235 |
EB |
ы |
129 |
81 |
Б |
151 |
97 |
Ч |
173 |
AD |
н |
194 |
C2 |
┬ |
215 |
D7 |
╫ |
236 |
EC |
ь |
130 |
82 |
В |
152 |
98 |
Ш |
174 |
AE |
о |
195 |
C3 |
├ |
216 |
D8 |
╪ |
237 |
ED |
э |
131 |
83 |
Г |
153 |
99 |
Щ |
175 |
AF |
п |
196 |
C4 |
─ |
217 |
D9 |
┘ |
238 |
EE |
ю |
132 |
84 |
Д |
154 |
9A |
Ъ |
176 |
B0 |
- |
197 |
C5 |
┼ |
218 |
DA |
┌ |
239 |
EF |
я |
133 |
85 |
Е |
155 |
9B |
Ы |
177 |
B1 |
- |
198 |
C6 |
╞ |
219 |
DB |
█ |
240 |
F0 |
Ё |
134 |
86 |
Ж |
156 |
9C |
Ь |
178 |
B2 |
- |
199 |
C7 |
╟ |
220 |
DC |
▄ |
241 |
F1 |
ё |
135 |
87 |
З |
157 |
9D |
Э |
179 |
B3 |
│ |
200 |
C8 |
╚ |
221 |
DD |
▌ |
242 |
F2 |
≥ |
136 |
88 |
И |
158 |
9E |
Ю |
180 |
B4 |
┤ |
201 |
C9 |
╔ |
222 |
DE |
▐ |
243 |
F3 |
≤ |
137 |
89 |
Й |
159 |
9F |
Я |
181 |
B5 |
╡ |
202 |
CA |
╩ |
223 |
DF |
▀ |
244 |
F4 |
⌠ |
138 |
8A |
К |
160 |
A0 |
а |
182 |
B6 |
╢ |
203 |
CB |
╦ |
224 |
E0 |
р |
245 |
F5 |
⌡ |
139 |
8B |
Л |
161 |
A1 |
б |
183 |
B7 |
╖ |
204 |
CC |
╠ |
225 |
E1 |
с |
246 |
F6 |
+ |
140 |
8C |
М |
162 |
A2 |
в |
184 |
B8 |
╕ |
205 |
CD |
═ |
226 |
E2 |
т |
247 |
F7 |
≈ |
141 |
8D |
Н |
163 |
A3 |
г |
185 |
B9 |
╣ |
206 |
CE |
╬ |
227 |
E3 |
у |
248 |
F8 |
|
142 |
8E |
О |
164 |
A4 |
д |
186 |
BA |
║ |
207 |
CF |
╧ |
228 |
E4 |
ф |
249 |
F9 |
|
143 |
8F |
П |
165 |
A5 |
е |
187 |
BB |
╗ |
208 |
D0 |
╨ |
229 |
E5 |
х |
250 |
FA |
● |
144 |
90 |
Р |
166 |
A6 |
ж |
188 |
BC |
╝ |
209 |
D1 |
╤ |
230 |
E6 |
ц |
251 |
FB |
√ |
145 |
91 |
С |
167 |
A7 |
з |
189 |
BD |
╜ |
210 |
D2 |
╥ |
231 |
E7 |
ч |
252 |
FC |
n |
146 |
92 |
Т |
168 |
A8 |
и |
190 |
BE |
╛ |
211 |
D3 |
╙ |
232 |
E8 |
ш |
253 |
FD |
2 |
147 |
93 |
У |
169 |
A9 |
й |
191 |
BF |
┐ |
212 |
D4 |
╘ |
233 |
E9 |
щ |
254 |
FE |
■ |
148 |
94 |
Ф |
170 |
AA |
к |
192 |
C0 |
└ |
213 |
D5 |
╒ |
234 |
EA |
ъ |
255 |
FF |
|
149 |
95 |
Х |
171 |
AB |
л |
|
|
|
|
|
|
|
|
|
|
|
|
Таблица 2.8.
Кодовая таблица 1251 – MS Windows
(символы с кодами 127-255, даны выборочно)
dec |
hex |
char |
dec |
hex |
char |
dec |
hex |
char |
dec |
hex |
char |
dec |
hex |
char |
dec |
hex |
char |
|
|||
128 |
80 |
|
150 |
96 |
|
172 |
AC |
¬ |
193 |
C1 |
Б |
214 |
D6 |
Ц |
235 |
EB |
л |
|
|||
129 |
81 |
|
151 |
97 |
|
173 |
AD |
- |
194 |
C2 |
В |
215 |
D7 |
Ч |
236 |
EC |
м |
|
|||
130 |
82 |
|
152 |
98 |
|
174 |
AE |
® |
195 |
C3 |
Г |
216 |
D8 |
Ш |
237 |
ED |
н |
|
|||
131 |
83 |
|
153 |
99 |
|
175 |
AF |
Ï |
196 |
C4 |
Д |
217 |
D9 |
Щ |
238 |
EE |
о |
|
|||
132 |
84 |
|
154 |
9A |
|
176 |
B0 |
º |
197 |
C5 |
Е |
218 |
DA |
Ъ |
239 |
EF |
п |
|
|||
133 |
85 |
|
155 |
9B |
|
177 |
B1 |
± |
198 |
C6 |
Ж |
219 |
DB |
Ы |
240 |
F0 |
р |
|
|||
134 |
86 |
|
156 |
9C |
|
178 |
B2 |
|
199 |
C7 |
З |
220 |
DC |
Ь |
241 |
F1 |
с |
|
|||
135 |
87 |
|
157 |
9D |
|
179 |
B3 |
i |
200 |
C8 |
И |
221 |
DD |
Э |
242 |
F2 |
т |
|
|||
136 |
88 |
|
158 |
9E |
|
180 |
B4 |
r |
201 |
C9 |
Й |
222 |
DE |
Ю |
243 |
F3 |
у |
|
|||
137 |
89 |
|
159 |
9F |
|
181 |
B5 |
μ |
202 |
CA |
К |
223 |
DF |
Я |
244 |
F4 |
ф |
|
|||
138 |
8A |
|
160 |
A0 |
|
182 |
B6 |
¶ |
203 |
CB |
Л |
224 |
E0 |
а |
245 |
F5 |
х |
|
|||
139 |
8B |
|
161 |
A1 |
Ў |
183 |
B7 |
. |
204 |
CC |
М |
225 |
E1 |
б |
246 |
F6 |
ц |
|
|||
140 |
8C |
|
162 |
A2 |
ў |
184 |
B8 |
ë |
205 |
CD |
Н |
226 |
E2 |
в |
247 |
F7 |
ч |
|
|||
141 |
8D |
|
163 |
A3 |
J |
185 |
B9 |
№ |
206 |
CE |
О |
227 |
E3 |
г |
248 |
F8 |
ш |
|
|||
142 |
8E |
|
164 |
A4 |
|
186 |
BA |
ε |
207 |
CF |
П |
228 |
E4 |
д |
249 |
F9 |
щ |
|
|||
143 |
8F |
|
165 |
A5 |
¤ |
187 |
BB |
» |
208 |
D0 |
Р |
229 |
E5 |
е |
250 |
FA |
ъ |
|
|||
144 |
90 |
|
166 |
A6 |
¦ |
188 |
BC |
j |
209 |
D1 |
С |
230 |
E6 |
ж |
251 |
FB |
ы |
|
|||
145 |
91 |
|
167 |
A7 |
§ |
189 |
BD |
S |
210 |
D2 |
Т |
231 |
E7 |
з |
252 |
FC |
ь |
|
|||
146 |
92 |
|
168 |
A8 |
Ё |
190 |
BE |
s |
211 |
D3 |
У |
232 |
E8 |
и |
253 |
FD |
э |
|
|||
147 |
93 |
|
169 |
A9 |
© |
191 |
BF |
ï |
212 |
D4 |
Ф |
233 |
E9 |
й |
254 |
FE |
ю |
|
|||
148 |
94 |
|
170 |
AA |
Є |
192 |
C0 |
А |
213 |
D5 |
Х |
234 |
EA |
к |
255 |
FF |
я |
|
|||
149 |
95 |
|
171 |
AB |
« |
䦋㌌㏒ |
䦋㌌㏒㧀좈琰茞ᓀ㵂Ü |
|
|
|
|
|
|
|
䦋㌌㏒㧀좈琰茞ᓀ㵂Ü |
䦋㌌㏒㧀좈琰茞ᓀ㵂Ü |
䦋㌌㏒㧀좈琰茞ᓀ㵂Ü |