2429

Лексичні одиниці в програмуванні

Шпаргалка

Информатика, кибернетика и программирование

Лексичний устрій тексту програм. Напередвизначені позначення. Класифікація напередвизначених типів. Алфавіт будь-якої мови програмування є підмножиною символів (літер), представлених у спеціальній таблиці ASCII.

Украинкский

2013-01-06

121 KB

4 чел.

Алфавіт мови

Алфавіт будь-якої мови програмування є підмножиною символів (літер), представлених у спеціальній таблиці ASCII.

Зазвичай алфавіт складається з 52 великих і малих літер, 10 десяткових цифр та спеціальних символів, таких, скажімо як +, -, *, >. Алфавіт мови входить до стандартного (напередвизначеного) оточення мови (standard language environment), для того щоб різні реалізації одної мови (транслятори) були однаковими з точки зору обміну текстами мови.

Лексичний устрій тексту програм

На лексичному рівні інкапсуляції текст програми складається з наступних конструкцій:

- пробільні символи;

- коментарі;

  •  лексеми.

Пробільні символи - це символи, які використовуються для відділення лексем і поліпшення читання програми. До пробільних належать такі символи: пробіл, табуляція, новий рядок. Коментарі - це послідовності символів, які не належать тексту програми (мові) і виконують опис пояснень у програмі. Наприклад, коментар у мові С – /*це коментар у мові С*/ чи – // це коментар у мові С.


Лексеми

Лексеми - це простіші програмні конструкції, що складають словниковий запас мови. Також лексеми – це капсули, що інкапсулюють символи алфавіту.

 

Капсула-лексема представляється розміченим ланцюжком наступного виду:

......S1*l1[l2...ln]*Sj...,

де Si, Sj, lk V,а, Si, Sj - пробільні символи чи символи інших лексем;

lk, де k = 1, ..., n - символи капсули-лексеми, при цьому l1 - перший символ, а ln - останній символ лексеми.

ASCII - American Standard Codes Information Interchange

DEC

HEX

CHAR

DEC

HEX

CHAR

DEC

HEX

CHAR

DEC

HEX

СНАЯ

DEC

HEX

СНАЯ

0

0

20

14

40

28

(

60

3C

<

80

50

Р

1

1

21

15

41

29

)

61

3D

=

81

51

Q

2

2

22

16

42

2A

*

62

3E

>

82

52

R

3

3

23

17

43

2B

+

63

3F

?

83

53

S

4

4

24

18

44

2C

,

64

40

@

84

54

Т

5

5

25

19

45

2D

65

41

A

85

55

U

6

6

26

1A

46

2E

.

66

42

В

86

56

V

7

7

27

1B

47

2F

/

67

43

С

87

57

W

8

8

28

1C

48

30

0

68

44

D

88

58

X

9

9

29

ID

49

31

1

69

45

Е

89

59

Y

10

A

30

1E

50

32

2

70

46

F

90

5A

Z

11

В

31

IF

51

33

3

71

47

G

91

5B

[

12

С

32

20

52

34

4

72

48

Н

92

5C

\

13

D

33

21

!

53

35

5

73

49

I

93

5D

]

14

E

34

22

"

54

36

6

74

4A

J

94

5E

^

15

F

35

23

#

55

37

7

75

4B

К

95

5F

_

16

10

36

24

$

56

38

8

76

4C

L

96

60

'

17

11

37

25

%

57

39

9

77

4D

М

97

61

a

18

12

38

26

&

58

ЗА

:

78

4E

N

98

62

b

19

13

39

27

'

59

3B

;

79

4F

О

99

63

с

100

64

d

106

6A

j

112

70

p

119

77

w

125

7D

}

101

65

e

107

68

k

113

71

q

120

78

x

126

7E

~

102

66

f

108

6C

l

114

72

r

121

79

y

127

7F

103

67

g

109

6D

m

115

73

s

122

7A

z

104

68

h

110

6E

n

117

75

u

123

7B

{

105

69

i

111

6F

o

118

76

v

124

7C

|

Примітка. 0 - 32-символи, що не відображуються

Лексичний аналіз

Програма транслятора, яка аналізує лексеми, перевіряючи правильність їх написання, виконує лексичний аналіз (lexical analisys), і називається лексичним аналізатором (lexical analiser), або сканером (scanner). Крім аналізу сканер виконує кодування лексем, і вилучає пробільні символи та символи, що належать до коментарів, внесених у програму. Текст програми, що складається з кодів лексем, використовується у процесі синтаксичного аналізу, що виконується слідом за лексичним аналізом, який також здійснює відповідна програма трансляторa.

Позначення

Всі лексеми в тексті програми є позначеннями. Це означає, що лексеми позначають інші конструкції мови, які будуються і використовуються в процесах трансляції і виконання програми. У загальному випадку, конструкції, які позначають лексеми, називаються значеннями. Всі позначення діляться на напередвизначені та такі, що визначаються.

Класифікація позначень

Напередвизначені позначення

 Напередвизначені позначення – це такі, котрі задані стандартним оточенням мови, отже їх необхідно знати. Поділяються на зарезервовані, стандартні ті зображення.

Зарезервовані позначення - це такі позначення, у яких зв'язок зі значеннями встановлюється стандартним оточенням, наприклад, if, virtual, const, static.

 

Стандартні позначення - це такі, у яких зв'язок зі значенням також установлюється стандартним оточенням, однак у граматиці мови передбачені правила для перевизначення цих позначень, наприклад, позначення integer, +, -.

Індикатори напередвизначених типів - це позначення напередвизначених типів, наприклад, int, integer, char.

Позначення напередвизначених операцій - це символи, пари символів і рідше більш довгі ланцюжки символів, яким стандартним оточенням поставлена у відповідність деяка напередвизначена інтерпретація.

Розрізняються наступні групи позначень:

- позначення операцій напередвизначених типів, звичайно скалярних, наприклад, -, +, *, /;

- позначення операцій відносин (порівняння, більше, менше і т.д.), наприклад, ==, !=, <, >, >=, <=;

- позначення логічних операцій (логічне И, ЧИ, НЕМАЄ і т.д.), наприклад, !, &&, ||;

- позначення операцій маніпулювання бітами (зрушення, побітові И, ЧИ, і т.д.), наприклад, &, ^ , <<, >>, ||.

Позначення напередвизначених розподільників - це такі позначення, значення яких полягає в тому, що вони входять як допоміжні позначення в конструкції більш високих рівнів, наприклад, позначення “(“, “)”, “,” .

Напередвизначені зображення - це такі позначення, у яких зв'язок зі значенням установлюється стандартним оточенням.

Позначення, що визначаються

Позначення, що визначаються - це такі позначення, що складає програміст, керуючись правилами граматики мови. До них належать ідентифікатори та зображення.

Ідентифікатори - це позначення, що відповідають напередвизначеним синтаксичним і прагматичним правилам. Сутність правил є така, що ідентифікатор – це послідовність з символів букв, цифр і символу підкреслення, яка починається тільки з букви (інколи з символу підкреслення). Наприклад, nVal, cChar.

Зображення, що визначаються - це такі позначення, яким відповідають усюди відомі значення. Наприклад, 13, 5.2, ‘А’, “Си”.

Типи

Тип (вид) - це множина значень і множина операцій (дій), які можна виконувати над цими значеннями.

Будь-який тип характеризується наступним:

- позначенням типу (індикатор - задається стандартним оточенням чи обирається програмістом;

- множиною значень і відповідних зображень позначень, що задаються за визначеними правилами;

- множиною операцій, кожна має цілком визначений зміст;

  •  розміром пам'яті, котру буде займати значення даного типу при виконанні програми.

Операції, що описуються явно - це операції, що описуються і реалізуються програмістом явно, як правило при описі типу, що визначається. До них відносяться операції абстрактних типів даних.

Напередвизначені типи - це типи, для яких позначення, множини значень, множина і устрій значень напередвизначені стандартним оточенням і не можуть змінюватися.

Типи, що визначаються - це типи, для яких зазначені властивості визначаються програмістом.


Класифікація типів

Класифікація напередвизначених типів


Скалярні типи

Скалярні типи подаються монолітними значеннями без компонентів. До них належать дискретні та дійсні типи.

Множини значень кожного скалярного типу впорядковані, наперед визначено всі їх відношення, вони мають нижню та верхню межі значень.

Цілі, фіксовані та плаваючі типи утворюють групу числових типів.

Дискретні типи базуються на понятті: дискретного діапазону.

Упорядкована множина значень із максимальним і мінімальним значеннями та функціями визначення попереднього і наступного значення називається дискретним діапазоном (discrete range).

Дискретні типи

Типи в яких множини значень утворюють дискретний діапазон, називаються дискретними типами (discrete type). Ці типи мають множину значень із мінімальним і максимальним значеннями. У кожного відмінного від останнього значення є наступне значення, а в кожного відмінного від першого значення є попереднє значення. Для визначення попереднього і наступного значень передбачаються відповідні функції.

Наприклад, якщо є упорядкована послідовність значень

Т= < 3, 4, 5, 6, 7, 8 >,

Vmin = 3, Vmax = 8 значення, функція визначення наступного значення – це додавання одиниці до даного значення, функція визначення попереднього – це віднімання одиниці від даного значення.

Цілий тип

Цілий тип (integer type) утворюють значення, які називають цілими числами. Тип зазвичай включає в себе значення певного дискретного діапазону. Зображення значень цілого типу це - загальновідомі зображення цілих чисел. Наприклад, 1, 8, 65, 3458.

Для цілих типів визначено позначення в мові С int, арифметичні стандартні операції, операції відношень і основні базові операції.

Перелічуваний тип

Перелічуваний тип (enumeration type) утворюють значення, що задаються явним перелічуванням. До перелічуваних типів належать символьний і логічний типи.

Символьний тип

Символьний тип (charаcter type) – це тип, значення якого задаються (перелічуються) у стандартному оточенні мови, у таблиці ASCII (впорядкованої множини зі 128 значень).

Зображення значень символьного типу - це зображення загально відомих символів, які на письмі беруться в лапки для того, щоб відрізняти зображення від позначень інших об’єктів та зображень цифр цілого типу. Наприклад, „А”, „+”, „5”- це зображення значень символьного типу, а А, +, 5 - це позначення: ідентифікатор - А, позначення дії додавання - + та 5 – зображення значення цілого типу - 5.

Для значень символьного типу напередвизначено позначення типу – char, стандартні операції відношень і базові операції.

Логічний тип

Логічний тип (boolean type) подається (перелічується) двома значеннями, зображеними як 0(FALSE) і 1(TRUE). Ці значення впорядковано так, що FALSE < TRUE.

Для логічного типу наперед визначено позначення – bool, відношення і стандартні логічні та базові операції.

Дійсні типи

Дійсні типи утворюють значення, що є наближеними поданнями відомих у математиці дійсних чисел. Значення подаються десятковим дробом такого виду:

n + 0. d1, d2, ... dk,

де n – ціле число; di {0, 1, ... 9}.

Таке подання означає, що для деякого дійсного значення х, при будь-якому додатному k виконується нерівність:

n + d1/10 + d2/100 + ... + dk/10k  x < n + d1/10 + d2/100 + ... + dk/10k + 1/10k...

Для зображення значень дійсного типу використовують два способи.

1) значення t зображають розбиваючи його дві частини: r – до коми та l – після коми, тобто

t = k, l.

2) значення зображують у вигляді:

х = m.bp,

де m - мантиса (дробове число зі знаком); b – основа системи числення, взята для зображення значення (двійкова, вісімкова, десяткова, шістнадцяткова); p - порядок (ціле число, змінюване у відповідному діапазоні). При цьому, коли значення х розташовується в пам’яті, більша частина значення х відводиться під мантису, а решта під порядок.

1) 23.0045 1) 0.0230045

2) 2.300450Е+001 2) 2.30045Е-002


 

А также другие работы, которые могут Вас заинтересовать

15143. Иван александрович Хлестаков в комедии Ревизор 29.41 KB
  Иван Александрович Хлестаков в комедии Ревизор И.А.Хлестаков появляется в городке в тот момент когда там все ждут появления ревизора. Чиновники испуганы городничему от страха видятся во сне крысы. Степень боязни и страха чиновников пря...
15144. Иван Сергеевич Шмелёв 71.83 KB
  Иван Сергеевич Шмелёв Иван Сергеевич Шмелев родился в Кадашевской слободе Замоскворечья 21 сентября 1873 года. Дед Ивана Сергеевича государственный крестьянин из Гуслиц Богородского уезда Московской губернии поселился в Москве после пожара 1812 г. Отец писателя прин
15145. Наполеон Бонапарт 24.62 KB
  Наполеон Бонапарт Свою профессиональную военную службу начал в 1785 в чине младшего лейтенанта артиллерии; выдвинулся в период Великой французской революции достигнув при Директории чина бригадного после взятия Тулона 17 декабря 1793...
15146. Никита Сергевич Хрущёв 16.63 KB
  Никита Сергевич Хрущёв Первый секретарь ЦК КПСС с 1953 по 1964 годы Председатель Совета Министров СССР с 1958 по 1964 годы. Герой Советского Союза Трижды Герой Социалистического Труда. Первый лауреат Шевченковской премии. Краткая биография Никита Сергеевич Хрущёв родился в ...
15147. Тургенев Иван Сергеевич 22.47 KB
  Иван Сергеевич Тургенев Иван Тургенев родился 28 октября 1818 года в Орле. Отец Сергей Николаевич отставной полковн
15148. Сергей Юльевич Витте 181.49 KB
  Сергей Юльевич Витте Происходит из голландской семьи переселившейся в Прибалтику ещё во времена владычества шведов и получившей потомственное дворянство в 1856. Православный. Родился 17 июня 1849 в Тифлисе. Его отец Юлий Федорович Витте 1814 1867 член совета к
15149. Петр I и русская культура 94.4 KB
  Петр I и русская Культура 1. Культура России накануне вступления Петра на престол В конце ХVII века когда на русском престоле оказался молодой царь Петр I наша страна переживала переломный момент своей истории. В России в отличие от западноевропейск...
15150. Внешняя политика СССР в 30 годы 259.99 KB
  Внешняя политика СССР в 30 года. После прихода Гитлера к власти Сталин резко изменил традиционную советскую политику: если раньше она была направлена на союз с Германией против версальской системы а по линии Коминтерна на борьбу с социалдемок...
15151. Герой нашего времени. Женские образы в романе 17.26 KB
  Женские образы в романе М.Ю. Лермонтова Герой нашего времени. Роман М.Ю. Лермонтова недаром назван Герой нашего времени весь строй произведения его композиция образная система подчинены раскрытию образа Печорина.