2429

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

Шпаргалка

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

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

Украинкский

2013-01-06

121 KB

5 чел.

Алфавіт мови

Алфавіт будь-якої мови програмування є підмножиною символів (літер), представлених у спеціальній таблиці 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


 

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

31290. Дослідження схем синхронних та асинхронних цифрових автоматів з пам’яттю в пакеті Electronics Workbench 2.88 MB
  При моделюванні роботи синхронного автомата синхросерію слід подавати з генератора коливань обравши прямокутну форму імпульсів з параметрами близькими до вказаних на рис. Побудування логічних вентилів при синтезі синхронного автомата Якщо потрібно сформувати память автомата на Ттригерах не слід шукати їх в бібліотеці елементів так як їх фізично не існує необхідно побудувати Т тригер з JK тригера походячи з таблиці переходів. Часові діаграми роботи автомата слід скопіювати через буфер до редактора Paint або іншого графічного...
31291. Вивчення структури контролера КРВМ-2 та його засобів вводу-виводу 677.5 KB
  ЯПВВ - комірка програмованого вводу-виводу. Забезпечує зв’язок з зовнішніми об’єктами за будь-яким напрямком. До складу комірки входить мікросхема КР580ВВ55, порти якої з’єднані із зовнішніми приладами через шинні підсилювачі К589АП16, 2 шинних формувача КР580ВА86, мікросхеми К555ИД4 (здвоєний дешифратор 2 входи – 4 виходи), мікросхеми К155ТМ8 (4 D-тригери), К155ЛА3 (4 елементи 2І-НІ).
31292. Розрахунок генераторів пилкоподібної напруги 408 KB
  широко використовуються генератори пилкоподібної лінійнозмінної напруги. Часову діаграму пилкоподібної напруги наведено на рис.1 Часова діаграма пилкоподібної напруги Основними параметрами такої напруги є: тривалість робочого і зворотного ходу пилкоподібної напруги; період проходження імпульсів ; амплітуда імпульсів ; коефіцієнт нелінійності і коефіцієнт використання напруги джерела живлення .
31293. Розрахунок схем активних фільтрів 778 KB
  Апроксимація характеристик активних фільтрів зводиться до вибору таких коефіцієнтів цих поліномів що забезпечують найкраще в тому чи іншому значенні наближення до бажаних амплітудночастотної АЧХ чи фазочастотної характеристик фільтра.1 де відносна частота; частота зрізу; порядок фільтра. В фільтрі Чебишева апроксимуюча функція вибирається так щоб в смузі пропускання фільтра отримати відхилення його характеристики від ідеальної що не перевищує деякої заданої величини.2 де постійний коефіцієнт що визначає нерівномірність АЧХ...
31294. Мінімізація логічних функцій 449.5 KB
  Основна задача при побудові систем керування дискретними обєктами і процесами на основі логічних функцій: приведення логічних функцій керування до найбільш простого виду при якому система керування буде виконувати свої задачі. Для ручної мінімізації логічних функцій використовуються карти Карно і діаграми Вейча причому останні будують як розгорнення кубів на площині карти Карно.
31295. Тема: Синтез комбінаційних схем на мікросхемах середнього ступеня інтеграції Мета заняття:Закріпити отр. 1.08 MB
  Традиційно ця назва застосовується до вузлів робота яких не описується досить простим алгоритмом а задається таблицею відповідності входів і виходів.1 Якщо декодер має входів виходів і використовує всі можливі набори вхідних змінних то . Число входів і виходів декодера вказують таким чином: декодер 38 читається €œтри на вісім€ 416 410 неповний декодер. Мультиплексор це функціональний вузол що здійснює підключення комутацію одного з декількох входів даних до виходу.
31298. Синтез схем синхронних автоматів з памяттю 3.18 MB
  Закріпити отримані теоретичні знання зі знань теорії дискретних автоматів, навчитися визначати бульові функції і будувати функціональні схеми простих синхронних автоматів, заданих словесним описом