-
Notifications
You must be signed in to change notification settings - Fork 0
/
bnf.txt
185 lines (95 loc) · 8.88 KB
/
bnf.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
;=============================================================================
;
; Общий вид выражения языка
;
;=============================================================================
<выражение языка> :== <многострочный комментарий> <символы перевода строки> |
<многострочный комментарий> <однострочный комментарий> |
<многострочный комментарий> <объявление переменной> <однострочный комментарий> |
<многострочный комментарий> <условный оператор> <однострочный комментарий>
;=============================================================================
;
; Строки и символы
;
;=============================================================================
<строка программы> :== <символы> <конец строки> | <пустая строка> <конец строки>
<конец строки> :== <символы перевода строки> | <EOF>
<EOF> :== конец файла
<символы> :== <пробел> | <символ> | <символ> <символы>
<символ> :== символ юникода с кодом больше 32
<спецсимвол> :== не буква
<буква> :== буква
<пустая строка> :== пусто
<символы перевода строки> :== символ с кодом 13 | символ с кодом 10 | символ с кодом 13 и символ с кодом 10
<пробел> :== <пробельный символ> | <пробельный символ> <пробел>
<пробельный символ> :== символ с кодом 32 | символ с кодом 9
;=============================================================================
;
; Литералы — это числовые и строковые константы в тексте
;
;=============================================================================
<литерал> :== <числовой литерал> | <булевый литерал> | <строковый литерал>
<числовой литерал> :== <десятичный литерал> | <16‐ричный литерал> | <двоичный литерал>
<десятичный литерал> :== <десятичная цифра> | <десятичная цифра> <десятичный литерал>
<16‐ричный литерал> :== 0x <набор 16‐ричных цифр>
<набор 16‐ричных цифр> :== <16-ричная цифра> | <16-ричная цифра> <набор 16‐ричных цифр>
<двоичный литерал> :== 0b <набор двоичных цифр>
<набор двоичных цифр> :== <2‐ичная цифра> | <2‐ичная цифра> <набор двоичных цифр>
<булевый литерал> :== вин | фэйл
<строковый литерал> :== « <пустая строка> » | « <символы> »
<2‐ичная цифра> :== 0 | 1
<десятичная цифра> :== <2‐ичная цифра> | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
<16-ричная цифра> :== <десятичная цифра> | A | B | C | D | E | F
;=============================================================================
;
; Комментарии в тексте
;
;=============================================================================
<комментарий> :== <однострочный комментарий> | <многострочный комментарий>
<однострочный комментарий> :== тлдр <пробел> <строка программы>
<многострочный комментарий> :== спойлер <пробел> <символы> <пробел> десу | спойлер <пробел> десу
;=============================================================================
;
; Имена переменных, структур, перечислений, функций
;
;=============================================================================
<имя переменной> :== <идентификатор>
<идентификатор> :== <буква> | <буква> <идентификатор>
;=============================================================================
;
; Базовые типы данных
;
;=============================================================================
<тип данных> :== <базовый тип данных> | <новый тип данных>
<базовый тип данных> :== <простой тип данных> | <указательный тип данных>
<простой тип данных> :== нигра | овощи | гуро | расчленёнка | тентакли | параграф | паста | копипаста | нигры | овощей | гуро | расчленёнки | тентаклей | параграфа | пасты | копипасты
<указательный тип данных> :== соус <простой тип данных>
;=============================================================================
;
; Объявление переменных
;
;=============================================================================
<объявление переменной> :== есть <пробел> <1слово‐связка определения> <пробел> <тип данных> , <пробел> <2слово‐связка определения> <пробел> <имя переменной> | есть <пробел> <тип данных> , <пробел> <2слово‐связка определения> <пробел> <имя переменной>
<1слово‐связка определения> :== один | одна | одно | одни
<2слово‐связка определения> :== его зовут | её зовут | их зовут | зовут
<определение структуры> :== есть одна коробочка фотонов, её зовут <пробел> <имя переменной> , состоит из <символы перевода строки> <объявление полей> <символы перевода строки> десу
<объявление полей> :== <объявление поля> | <объявление поля> <символы перевода строки> <объявление полей>
;=============================================================================
;
; Условные операторы
;
;=============================================================================
<условный оператор> :== <подготовка к условию> <символы перевода строки> обязательно сделай <символы перевода строки> <истинная часть> <символы перевода строки> ни в коем случае не делай <символы перевода строки> <ложная часть> <символы перевода строки> десу
<подготовка к условию> :== зой, <пробел> сделай <логическое выражение>
;=============================================================================
;
; Циклы
;
;=============================================================================
<объявление итерационного цикла> :== двачую <имя переменной>, от <начальное значение> до <конечное значение> <символы перевода строки> <тело цикла> <символы перевода строки> десу | двачую, <пробел> что <объявление переменной>, от <начальное значение> до <конечное значение> <символы перевода строки> <тело цикла> <символы перевода строки> десу
<объявление условного цикла> :== семён это <логическое выражение> <символы перевода строки> <тело цикла> <символы перевода строки> десу | это <символы перевода строки> <тело цикла> <символы перевода строки> семён <логическое выражение> десу
;=============================================================================
;
; Определение функций
;
;=============================================================================