@artel/ru-compiler 0.6.26001 → 0.6.26002
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package//320/230/321/201/321/205/320/276/320/264/320/275/320/270/320/272/320/270//320/224/320/265/320/273/320/270/321/202/320/265/320/273/321/214./320/260/321/200/321/202 +60 -60
- package//320/230/321/201/321/205/320/276/320/264/320/275/320/270/320/272/320/270//320/241/320/273/320/276/320/262/320/260/321/200/321/214/320/241/320/273/320/276/320/262./320/260/321/200/321/202 +22 -22
- package//320/230/321/201/321/205/320/276/320/264/320/275/320/270/320/272/320/270//320/242/320/265/320/272/321/201/321/202/320/235/320/265/321/215/320/272/321/200/320/260/320/275/320/270/321/200/320/276/320/262/320/260/320/275/320/275/321/213/320/271./320/260/321/200/321/202 +18 -18
- package//320/230/321/201/321/205/320/276/320/264/320/275/320/270/320/272/320/270//320/247/320/270/321/202/320/260/321/202/320/265/320/273/321/214/320/247/320/270/321/201/320/273/320/260./320/260/321/200/321/202 +15 -15
- package//320/230/321/201/321/205/320/276/320/264/320/275/320/270/320/272/320/270//320/257/320/267/321/213/320/272/320/237/320/260/320/272/320/265/321/202/320/260./320/260/321/200/321/202 +1 -1
package/package.json
CHANGED
|
@@ -8,10 +8,10 @@
|
|
|
8
8
|
|
|
9
9
|
тип Лексема = простой объект
|
|
10
10
|
{
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
вид: ВидЛексемы
|
|
12
|
+
текст: Текст
|
|
13
|
+
позиция-начала: Целое
|
|
14
|
+
незавершённая: ДаНет
|
|
15
15
|
|
|
16
16
|
создание(вид`: ВидЛексемы, текст`: Текст, позиция-начала`: Целое, незавершённая`: ДаНет)
|
|
17
17
|
{
|
|
@@ -24,19 +24,19 @@
|
|
|
24
24
|
|
|
25
25
|
тип Делитель = объект
|
|
26
26
|
{
|
|
27
|
-
|
|
27
|
+
текст: Текст
|
|
28
28
|
чтение лексема: Лексема { вернуть лексема`` }
|
|
29
29
|
|
|
30
30
|
скрытое
|
|
31
31
|
{
|
|
32
32
|
запись лексема { лексема`` = значение }
|
|
33
33
|
|
|
34
|
-
пропускать-пробелы: ДаНет
|
|
35
|
-
позиция-конца: Целое
|
|
36
|
-
текущая-позиция: Целое
|
|
37
|
-
баланс-фигурных-скобок: Целое
|
|
38
|
-
стек-баланса-фигурных-скобок: Список<Целое>
|
|
39
|
-
|
|
34
|
+
перем пропускать-пробелы: ДаНет
|
|
35
|
+
перем позиция-конца: Целое
|
|
36
|
+
перем текущая-позиция: Целое
|
|
37
|
+
перем баланс-фигурных-скобок: Целое
|
|
38
|
+
перем стек-баланса-фигурных-скобок: Список<Целое>
|
|
39
|
+
уникальные-тексты-лексем: Словарь<Текст, Текст>
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
создание(текст`: Текст, настройки: НастройкиДелителя? = пусто)
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
текст = текст`
|
|
45
45
|
пропускать-пробелы = настройки?.пропускать-незначимое ?? нет
|
|
46
46
|
текущая-позиция = настройки?.позиция-начала ?? 0
|
|
47
|
-
|
|
47
|
+
пусть длина = настройки?.длина
|
|
48
48
|
позиция-конца = условно(длина != пусто, текущая-позиция + длина, текст.длина)
|
|
49
49
|
|
|
50
50
|
баланс-фигурных-скобок = 0
|
|
@@ -56,10 +56,10 @@
|
|
|
56
56
|
|
|
57
57
|
функция предпросмотр(анализатор: функция(): ДаНет): ДаНет
|
|
58
58
|
{
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
59
|
+
пусть сохран-лексема = лексема
|
|
60
|
+
пусть сохран-текущая-позиция = текущая-позиция
|
|
61
|
+
пусть сохран-баланс-фигурных-скобок = баланс-фигурных-скобок
|
|
62
|
+
перем сохран-стек-баланса-фигурных-скобок: Список<Целое>? = пусто
|
|
63
63
|
если стек-баланса-фигурных-скобок.количество > 0
|
|
64
64
|
{
|
|
65
65
|
сохран-стек-баланса-фигурных-скобок = Список<Целое>(стек-баланса-фигурных-скобок)
|
|
@@ -80,10 +80,10 @@
|
|
|
80
80
|
|
|
81
81
|
функция пробный-анализ<Т>(анализатор: функция(): Т?): Т?
|
|
82
82
|
{
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
83
|
+
пусть сохран-лексема = лексема
|
|
84
|
+
пусть сохран-текущая-позиция = текущая-позиция
|
|
85
|
+
пусть сохран-баланс-фигурных-скобок = баланс-фигурных-скобок
|
|
86
|
+
перем сохран-стек-баланса-фигурных-скобок: Список<Целое>? = пусто
|
|
87
87
|
если стек-баланса-фигурных-скобок.количество > 0
|
|
88
88
|
{
|
|
89
89
|
сохран-стек-баланса-фигурных-скобок = Список<Целое>(стек-баланса-фигурных-скобок)
|
|
@@ -115,10 +115,10 @@
|
|
|
115
115
|
текущая-позиция += 1
|
|
116
116
|
}
|
|
117
117
|
}
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
118
|
+
пусть позиция-начала = текущая-позиция
|
|
119
|
+
перем вид-лексемы: ВидЛексемы
|
|
120
|
+
перем текст-лексемы: Текст
|
|
121
|
+
перем незавершённая: ДаНет = нет
|
|
122
122
|
если текущая-позиция >= позиция-конца
|
|
123
123
|
{
|
|
124
124
|
вид-лексемы = ВидЛексемы.конец-текста
|
|
@@ -126,7 +126,7 @@
|
|
|
126
126
|
}
|
|
127
127
|
иначе
|
|
128
128
|
{
|
|
129
|
-
|
|
129
|
+
пусть символ: Символ = текст.символ-по-позиции(текущая-позиция)
|
|
130
130
|
выбор символ
|
|
131
131
|
либо "\/"
|
|
132
132
|
{
|
|
@@ -149,7 +149,7 @@
|
|
|
149
149
|
}
|
|
150
150
|
либо "\""
|
|
151
151
|
{
|
|
152
|
-
|
|
152
|
+
перем р = прочитать-символ-или-текст-или-часть-шаблона-текста()
|
|
153
153
|
вид-лексемы = р.вид-лексемы
|
|
154
154
|
незавершённая = р.незавершённая
|
|
155
155
|
}
|
|
@@ -262,7 +262,7 @@
|
|
|
262
262
|
{
|
|
263
263
|
если это-цифра(текст.символ-по-позиции(текущая-позиция + 1))
|
|
264
264
|
{
|
|
265
|
-
|
|
265
|
+
перем р = прочитать-число()
|
|
266
266
|
вид-лексемы = р.вид-лексемы
|
|
267
267
|
незавершённая = р.незавершённая
|
|
268
268
|
}
|
|
@@ -299,7 +299,7 @@
|
|
|
299
299
|
иначе если текст.символ-по-позиции(текущая-позиция + 1) == "*"
|
|
300
300
|
{
|
|
301
301
|
текущая-позиция += 2
|
|
302
|
-
|
|
302
|
+
перем р = прочитать-многострочный-комментарий()
|
|
303
303
|
вид-лексемы = ВидЛексемы.комментарий-многострочный
|
|
304
304
|
незавершённая = не р
|
|
305
305
|
}
|
|
@@ -329,7 +329,7 @@
|
|
|
329
329
|
}
|
|
330
330
|
либо "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"
|
|
331
331
|
{
|
|
332
|
-
|
|
332
|
+
перем р = прочитать-число()
|
|
333
333
|
вид-лексемы = р.вид-лексемы
|
|
334
334
|
незавершённая = р.незавершённая
|
|
335
335
|
}
|
|
@@ -423,7 +423,7 @@
|
|
|
423
423
|
{
|
|
424
424
|
если фигурная-скобка-оканчивает-шаблон-текста()
|
|
425
425
|
{
|
|
426
|
-
|
|
426
|
+
перем р = прочитать-символ-или-текст-или-часть-шаблона-текста()
|
|
427
427
|
вид-лексемы = р.вид-лексемы
|
|
428
428
|
незавершённая = р.незавершённая
|
|
429
429
|
}
|
|
@@ -453,13 +453,13 @@
|
|
|
453
453
|
}
|
|
454
454
|
иначе если текст.символ-по-позиции(текущая-позиция + 1) == "\""
|
|
455
455
|
{
|
|
456
|
-
|
|
456
|
+
перем р = прочитать-символ-или-текст-или-часть-шаблона-текста()
|
|
457
457
|
вид-лексемы = р.вид-лексемы
|
|
458
458
|
незавершённая = р.незавершённая
|
|
459
459
|
}
|
|
460
460
|
иначе если текст.символ-по-позиции(текущая-позиция + 1) == "'"
|
|
461
461
|
{
|
|
462
|
-
|
|
462
|
+
перем р = прочитать-имя-в-кавычках()
|
|
463
463
|
вид-лексемы = ВидЛексемы.имя-в-кавычках
|
|
464
464
|
незавершённая = не р
|
|
465
465
|
}
|
|
@@ -499,7 +499,7 @@
|
|
|
499
499
|
}
|
|
500
500
|
либо "'"
|
|
501
501
|
{
|
|
502
|
-
|
|
502
|
+
перем р = прочитать-имя-в-кавычках()
|
|
503
503
|
вид-лексемы = ВидЛексемы.имя-в-кавычках
|
|
504
504
|
незавершённая = не р
|
|
505
505
|
}
|
|
@@ -518,7 +518,7 @@
|
|
|
518
518
|
}
|
|
519
519
|
}
|
|
520
520
|
текст-лексемы = текст.скопировать(позиция-начала, текущая-позиция - позиция-начала)
|
|
521
|
-
|
|
521
|
+
перем существующий = уникальные-тексты-лексем.получить(текст-лексемы)
|
|
522
522
|
если существующий == пусто
|
|
523
523
|
{
|
|
524
524
|
уникальные-тексты-лексем.добавить(текст-лексемы, текст-лексемы)
|
|
@@ -540,20 +540,20 @@
|
|
|
540
540
|
скрытая функция прочитать-символ-или-текст-или-часть-шаблона-текста():
|
|
541
541
|
объект { вид-лексемы: ВидЛексемы; незавершённая: ДаНет }
|
|
542
542
|
{
|
|
543
|
-
|
|
543
|
+
перем локализуемый = текст.символ-по-позиции(текущая-позиция) == "~"
|
|
544
544
|
если локализуемый
|
|
545
545
|
{
|
|
546
546
|
текущая-позиция += 1
|
|
547
547
|
}
|
|
548
|
-
|
|
548
|
+
пусть кавычка = текст.символ-по-позиции(текущая-позиция)
|
|
549
549
|
текущая-позиция += 1
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
550
|
+
пусть начало = текущая-позиция
|
|
551
|
+
перем конец = текущая-позиция
|
|
552
|
+
перем вид-лексемы: ВидЛексемы
|
|
553
|
+
перем незавершённая: ДаНет = нет
|
|
554
554
|
пока да
|
|
555
555
|
{
|
|
556
|
-
|
|
556
|
+
пусть текущий-символ = текст.символ-по-позиции(текущая-позиция)
|
|
557
557
|
если текущий-символ == "\""
|
|
558
558
|
{
|
|
559
559
|
конец = текущая-позиция
|
|
@@ -646,27 +646,27 @@
|
|
|
646
646
|
скрытая функция состоит-из-одного-символа(начало: Целое, конец: Целое): ДаНет
|
|
647
647
|
{
|
|
648
648
|
результат = нет
|
|
649
|
-
|
|
649
|
+
пусть длина = конец - начало
|
|
650
650
|
если длина == 1
|
|
651
651
|
{
|
|
652
652
|
результат = текст[начало + 0] != "\\"
|
|
653
653
|
}
|
|
654
654
|
иначе если длина == 2
|
|
655
655
|
{
|
|
656
|
-
|
|
657
|
-
|
|
656
|
+
пусть с0 = текст[начало + 0]
|
|
657
|
+
пусть с1 = текст[начало + 1]
|
|
658
658
|
результат = с0 == "\\" и с1 != "u" и с1 != "ю"
|
|
659
659
|
}
|
|
660
660
|
иначе если длина == 6
|
|
661
661
|
{
|
|
662
|
-
|
|
663
|
-
|
|
662
|
+
пусть с0 = текст[начало + 0]
|
|
663
|
+
пусть с1 = текст[начало + 1]
|
|
664
664
|
результат = с0 == "\\" и (с1 == "u" или с1 == "ю")
|
|
665
665
|
если результат
|
|
666
666
|
{
|
|
667
|
-
|
|
667
|
+
пусть является-16р-цифрой: функция(символ: Символ): ДаНет =
|
|
668
668
|
условно(с1 == "u", это-16ричная-цифра-латиницы, это-16ричная-цифра-кириллицы)
|
|
669
|
-
|
|
669
|
+
перем н = начало + 2
|
|
670
670
|
пока н < конец
|
|
671
671
|
{
|
|
672
672
|
если не является-16р-цифрой(текст[н])
|
|
@@ -682,7 +682,7 @@
|
|
|
682
682
|
|
|
683
683
|
скрытая функция прочитать-пробелы-и-табуляции()
|
|
684
684
|
{
|
|
685
|
-
|
|
685
|
+
перем символ: Символ
|
|
686
686
|
цикл
|
|
687
687
|
{
|
|
688
688
|
текущая-позиция += 1
|
|
@@ -694,10 +694,10 @@
|
|
|
694
694
|
скрытая функция прочитать-число():
|
|
695
695
|
объект { вид-лексемы: ВидЛексемы; незавершённая: ДаНет }
|
|
696
696
|
{
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
697
|
+
перем вид-лексемы = ВидЛексемы.буквально-целое
|
|
698
|
+
перем незавершённая: ДаНет = нет
|
|
699
|
+
пусть первая-цифра-0 = текст.символ-по-позиции(текущая-позиция) == "0"
|
|
700
|
+
пусть следующий-символ = текст.символ-по-позиции(текущая-позиция + 1)
|
|
701
701
|
если первая-цифра-0 и следующий-символ == "x"
|
|
702
702
|
{
|
|
703
703
|
текущая-позиция += 2
|
|
@@ -829,7 +829,7 @@
|
|
|
829
829
|
{
|
|
830
830
|
пока текущая-позиция < позиция-конца
|
|
831
831
|
{
|
|
832
|
-
|
|
832
|
+
пусть символ = текст.символ-по-позиции(текущая-позиция)
|
|
833
833
|
если символ == "*" и текст.символ-по-позиции(текущая-позиция + 1) == "/"
|
|
834
834
|
{
|
|
835
835
|
текущая-позиция += 2
|
|
@@ -842,7 +842,7 @@
|
|
|
842
842
|
|
|
843
843
|
скрытая функция прочитать-имя()
|
|
844
844
|
{
|
|
845
|
-
|
|
845
|
+
перем позиция-минуса = текущая-позиция
|
|
846
846
|
пока текущая-позиция < позиция-конца и
|
|
847
847
|
это-часть-имени(текст.символ-по-позиции(текущая-позиция))
|
|
848
848
|
{
|
|
@@ -874,7 +874,7 @@
|
|
|
874
874
|
текущая-позиция += 1
|
|
875
875
|
пока текущая-позиция < позиция-конца
|
|
876
876
|
{
|
|
877
|
-
|
|
877
|
+
пусть текущий-символ = текст.символ-по-позиции(текущая-позиция)
|
|
878
878
|
выбор текущий-символ
|
|
879
879
|
либо "'"
|
|
880
880
|
{
|
|
@@ -966,8 +966,8 @@
|
|
|
966
966
|
|
|
967
967
|
всеобщая функция это-простое-имя(текст-без-кавычек: Текст): ДаНет
|
|
968
968
|
{
|
|
969
|
-
|
|
970
|
-
|
|
969
|
+
перем индекс = 0
|
|
970
|
+
пусть длина = текст-без-кавычек.длина
|
|
971
971
|
если индекс >= длина или это-начало-имени(текст-без-кавычек.символ-по-позиции(индекс))
|
|
972
972
|
{
|
|
973
973
|
вернуть нет
|
|
@@ -991,6 +991,6 @@
|
|
|
991
991
|
|
|
992
992
|
тип ПозицияТекста = простой объект
|
|
993
993
|
{
|
|
994
|
-
|
|
995
|
-
|
|
994
|
+
строка: Целое
|
|
995
|
+
столбец: Целое
|
|
996
996
|
}
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
|
|
4
4
|
тип ОдноСлово = объект
|
|
5
5
|
{
|
|
6
|
-
|
|
7
|
-
вид-слова: ВидСлова
|
|
8
|
-
флаги: ФлагиСлова
|
|
9
|
-
последующие-слова: Словарь<Текст, ОдноСлово>?
|
|
6
|
+
слово: Текст
|
|
7
|
+
перем вид-слова: ВидСлова
|
|
8
|
+
перем флаги: ФлагиСлова
|
|
9
|
+
перем последующие-слова: Словарь<Текст, ОдноСлово>?
|
|
10
10
|
|
|
11
11
|
создание(слово`: Текст)
|
|
12
12
|
{
|
|
@@ -18,9 +18,9 @@
|
|
|
18
18
|
|
|
19
19
|
тип СлужебноеСлово = объект
|
|
20
20
|
{
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
текст: Текст
|
|
22
|
+
вид-слова: ВидСлова
|
|
23
|
+
флаги: ФлагиСлова
|
|
24
24
|
|
|
25
25
|
создание(текст`: Текст, вид-слова`: ВидСлова, флаги`: ФлагиСлова)
|
|
26
26
|
{
|
|
@@ -59,13 +59,13 @@
|
|
|
59
59
|
|
|
60
60
|
тип ОписаниеСлужебногоСлова = простой объект
|
|
61
61
|
{
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
62
|
+
текст: Текст
|
|
63
|
+
вид: ВидСлова
|
|
64
|
+
флаги: ФлагиСлова
|
|
65
|
+
диалекты: Массив<ДиалектПакета>
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
-
|
|
68
|
+
русские-служебные-слова: Массив<ОписаниеСлужебногоСлова> =
|
|
69
69
|
[
|
|
70
70
|
автотип(текст = "автотип", вид = ВидСлова.'автотип', флаги = ФлагиСлова.сущ-единств-муж, диалекты = [ДиалектПакета.Артель-А, ДиалектПакета.Артель-М]),
|
|
71
71
|
автотип(текст = "аспект", вид = ВидСлова.'аспект', флаги = ФлагиСлова.сущ-единств-муж, диалекты = [ДиалектПакета.Артель-А, ДиалектПакета.Артель-М]),
|
|
@@ -151,7 +151,7 @@
|
|
|
151
151
|
автотип(текст = "скрытые", вид = ВидСлова.'скрытое', флаги = ФлагиСлова.прил-множ, диалекты = [ДиалектПакета.Артель-А, ДиалектПакета.Артель-М]),
|
|
152
152
|
]
|
|
153
153
|
|
|
154
|
-
|
|
154
|
+
английские-служебные-слова: Массив<ОписаниеСлужебногоСлова> =
|
|
155
155
|
[
|
|
156
156
|
автотип(текст = "and", вид = ВидСлова.'и', флаги = ФлагиСлова.пустые, диалекты = [ДиалектПакета.Артель-А, ДиалектПакета.Артель-М]),
|
|
157
157
|
автотип(текст = "as", вид = ВидСлова.'как', флаги = ФлагиСлова.пустые, диалекты = [ДиалектПакета.Артель-А, ДиалектПакета.Артель-М]),
|
|
@@ -224,7 +224,7 @@
|
|
|
224
224
|
слова: Массив<ОписаниеСлужебногоСлова>
|
|
225
225
|
}
|
|
226
226
|
|
|
227
|
-
|
|
227
|
+
служебные-слова-языков: Массив<СлужебныеСловаЯзыка> =
|
|
228
228
|
[
|
|
229
229
|
автотип(язык = ЯзыкПакета.английский, слова = английские-служебные-слова),
|
|
230
230
|
автотип(язык = ЯзыкПакета.русский, слова = русские-служебные-слова),
|
|
@@ -237,7 +237,7 @@
|
|
|
237
237
|
словарь: Позже<Словарь<Текст, ОдноСлово>>
|
|
238
238
|
}
|
|
239
239
|
|
|
240
|
-
|
|
240
|
+
словари-слов-языков-и-диалектов: Массив<СловарьСловЯзыкаПлюсДиалекта> =
|
|
241
241
|
[
|
|
242
242
|
автотип(
|
|
243
243
|
язык = ЯзыкПакета.английский,
|
|
@@ -268,7 +268,7 @@
|
|
|
268
268
|
функция создать-словарь-слов(языки: Массив<ЯзыкПакета>,
|
|
269
269
|
диалекты: Массив<ДиалектПакета>): Словарь<Текст, ОдноСлово>
|
|
270
270
|
{
|
|
271
|
-
|
|
271
|
+
перем словарь = Словарь<Текст, ОдноСлово>()
|
|
272
272
|
для язык из языки
|
|
273
273
|
{
|
|
274
274
|
для слова из служебные-слова-языков
|
|
@@ -293,11 +293,11 @@
|
|
|
293
293
|
|
|
294
294
|
функция добавить-служебное-слово(словарь: Словарь<Текст, ОдноСлово>, вид-слова: ВидСлова, словосочетание: Текст)
|
|
295
295
|
{
|
|
296
|
-
|
|
297
|
-
|
|
296
|
+
пусть отдельные-слова: Массив<Текст> = словосочетание.разделить(" ")
|
|
297
|
+
перем словарь-одного-слова: Словарь<Текст, ОдноСлово> = словарь
|
|
298
298
|
для слово, индекс из отдельные-слова
|
|
299
299
|
{
|
|
300
|
-
|
|
300
|
+
перем узел: ОдноСлово? = словарь-одного-слова.получить(слово)
|
|
301
301
|
если узел == пусто
|
|
302
302
|
{
|
|
303
303
|
узел = ОдноСлово(слово)
|
|
@@ -329,7 +329,7 @@
|
|
|
329
329
|
словарь: Позже<СловарьВидовСлов>
|
|
330
330
|
}
|
|
331
331
|
|
|
332
|
-
|
|
332
|
+
словари-видов-слов-по-языку-и-диалекту: Массив<СловарьВидовСловЯзыкаПлюсДиалекта> =
|
|
333
333
|
[
|
|
334
334
|
автотип(
|
|
335
335
|
язык = ЯзыкПакета.английский,
|
|
@@ -356,7 +356,7 @@
|
|
|
356
356
|
функция создать-словарь-видов-слов(язык: ЯзыкПакета,
|
|
357
357
|
диалекты: Массив<ДиалектПакета>): СловарьВидовСлов
|
|
358
358
|
{
|
|
359
|
-
|
|
359
|
+
перем словарь = Словарь<ВидСлова, Список<СлужебноеСлово>>()
|
|
360
360
|
для слова из служебные-слова-языков
|
|
361
361
|
{
|
|
362
362
|
если слова.язык == язык
|
|
@@ -367,7 +367,7 @@
|
|
|
367
367
|
{
|
|
368
368
|
если диалекты.содержит(д)
|
|
369
369
|
{
|
|
370
|
-
|
|
370
|
+
перем список = словарь.получить(с.вид)
|
|
371
371
|
если список == пусто
|
|
372
372
|
{
|
|
373
373
|
список = Список<СлужебноеСлово>()
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
|
|
2
2
|
функция без-кавычек(текст: Текст): Текст
|
|
3
3
|
{
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
перем начало = 0
|
|
5
|
+
перем конец = текст.длина
|
|
6
6
|
если текст.начинается-на("~\"")
|
|
7
7
|
{
|
|
8
8
|
начало += 2
|
|
@@ -28,8 +28,8 @@
|
|
|
28
28
|
|
|
29
29
|
функция без-кавычек-шаблона(текст: Текст): Текст
|
|
30
30
|
{
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
перем начало = 0
|
|
32
|
+
перем конец = текст.длина
|
|
33
33
|
если текст.начинается-на("~\"")
|
|
34
34
|
{
|
|
35
35
|
начало += 2
|
|
@@ -56,9 +56,9 @@
|
|
|
56
56
|
функция в-неэкранированный-текст(текст: Текст, нормализовать-переносы-строк: ДаНет): Текст
|
|
57
57
|
{
|
|
58
58
|
результат = ""
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
59
|
+
перем конец = текст.длина
|
|
60
|
+
перем позиция = пропустить-пустую-строку(текст, 0, конец)
|
|
61
|
+
перем отступ: Текст? = пусто
|
|
62
62
|
если позиция > 0
|
|
63
63
|
{
|
|
64
64
|
отступ = получить-отступ-в-тексте(текст)
|
|
@@ -105,7 +105,7 @@
|
|
|
105
105
|
позиция += 1
|
|
106
106
|
если позиция < конец
|
|
107
107
|
{
|
|
108
|
-
|
|
108
|
+
пусть символ = текст[позиция]
|
|
109
109
|
выбор символ
|
|
110
110
|
либо "0"
|
|
111
111
|
{
|
|
@@ -115,10 +115,10 @@
|
|
|
115
115
|
либо "u", "ю"
|
|
116
116
|
{
|
|
117
117
|
позиция += 1
|
|
118
|
-
|
|
118
|
+
пусть исходная = позиция
|
|
119
119
|
позиция = условно(позиция + 4 < конец, позиция + 4, конец)
|
|
120
|
-
|
|
121
|
-
|
|
120
|
+
пусть фрагмент = ФрагментТекста(начало = исходная, конец = позиция, текст)
|
|
121
|
+
пусть код-символа = условно(символ == "u",
|
|
122
122
|
прочитать-16ричное-целое-латиницы(фрагмент),
|
|
123
123
|
прочитать-16ричное-целое-кириллицы(фрагмент))
|
|
124
124
|
результат += Символ(код-символа)
|
|
@@ -154,7 +154,7 @@
|
|
|
154
154
|
либо " ", "\>"
|
|
155
155
|
{
|
|
156
156
|
позиция += 1
|
|
157
|
-
|
|
157
|
+
пусть исходная = позиция
|
|
158
158
|
позиция = пропустить-пустую-строку(текст, позиция, конец)
|
|
159
159
|
если позиция > исходная
|
|
160
160
|
{
|
|
@@ -175,7 +175,7 @@
|
|
|
175
175
|
}
|
|
176
176
|
либо *
|
|
177
177
|
{
|
|
178
|
-
|
|
178
|
+
пусть начало = позиция
|
|
179
179
|
позиция = пропустить-неэкранированные-символы(текст, позиция, конец)
|
|
180
180
|
результат += текст.скопировать(начало, позиция - начало)
|
|
181
181
|
}
|
|
@@ -185,7 +185,7 @@
|
|
|
185
185
|
скрытая функция получить-отступ-в-тексте(текст: Текст): Текст?
|
|
186
186
|
{
|
|
187
187
|
результат = пусто
|
|
188
|
-
|
|
188
|
+
перем позиция = текст.длина - 1
|
|
189
189
|
пока позиция >= 0
|
|
190
190
|
{
|
|
191
191
|
выбор текст[позиция]
|
|
@@ -223,7 +223,7 @@
|
|
|
223
223
|
|
|
224
224
|
скрытая функция пропустить-отступ(текст: Текст, начало: Целое, отступ: Текст): Целое
|
|
225
225
|
{
|
|
226
|
-
|
|
226
|
+
перем позиция = 0
|
|
227
227
|
пока позиция < отступ.длина и начало + позиция < текст.длина и отступ[позиция] == текст[начало + позиция]
|
|
228
228
|
{
|
|
229
229
|
позиция += 1
|
|
@@ -236,7 +236,7 @@
|
|
|
236
236
|
результат = начало
|
|
237
237
|
пока результат < конец
|
|
238
238
|
{
|
|
239
|
-
|
|
239
|
+
пусть символ = текст[результат]
|
|
240
240
|
если символ == "\\" или символ == "\/" или символ == "\<"
|
|
241
241
|
{
|
|
242
242
|
прервать цикл
|
|
@@ -248,7 +248,7 @@
|
|
|
248
248
|
скрытая функция пропустить-пустую-строку(текст: Текст, начало: Целое, конец: Целое): Целое
|
|
249
249
|
{
|
|
250
250
|
результат = начало
|
|
251
|
-
|
|
251
|
+
пусть позиция = пропустить-пробелы-и-табуляции(текст, начало, конец)
|
|
252
252
|
если текст.символ-по-позиции(позиция) == "\/"
|
|
253
253
|
{
|
|
254
254
|
результат = позиция + 1
|
|
@@ -264,7 +264,7 @@
|
|
|
264
264
|
результат = начало
|
|
265
265
|
пока результат < конец
|
|
266
266
|
{
|
|
267
|
-
|
|
267
|
+
пусть символ = текст[результат]
|
|
268
268
|
если символ == " " или символ == "\>"
|
|
269
269
|
{
|
|
270
270
|
результат += 1
|
|
@@ -3,17 +3,17 @@
|
|
|
3
3
|
{
|
|
4
4
|
если текст.начинается-на("0x")
|
|
5
5
|
{
|
|
6
|
-
|
|
6
|
+
пусть фрагмент = текст.фрагмент(2, текст.длина - 2)
|
|
7
7
|
результат = прочитать-16ричное-целое-латиницы(фрагмент)
|
|
8
8
|
}
|
|
9
9
|
иначе если текст.начинается-на("0ш")
|
|
10
10
|
{
|
|
11
|
-
|
|
11
|
+
пусть фрагмент = текст.фрагмент(2, текст.длина - 2)
|
|
12
12
|
результат = прочитать-16ричное-целое-кириллицы(фрагмент)
|
|
13
13
|
}
|
|
14
14
|
иначе если текст.начинается-на("0b") или текст.начинается-на("0д")
|
|
15
15
|
{
|
|
16
|
-
|
|
16
|
+
пусть фрагмент = текст.фрагмент(2, текст.длина - 2)
|
|
17
17
|
результат = прочитать-2ичное-целое(фрагмент)
|
|
18
18
|
}
|
|
19
19
|
иначе
|
|
@@ -26,11 +26,11 @@
|
|
|
26
26
|
функция прочитать-16ричное-целое-латиницы(текст: ФрагментТекста): Целое
|
|
27
27
|
{
|
|
28
28
|
результат = 0
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
перем позиция = текст.длина - 1
|
|
30
|
+
перем степень = 1
|
|
31
31
|
пока позиция >= 0
|
|
32
32
|
{
|
|
33
|
-
|
|
33
|
+
пусть символ = текст[позиция]
|
|
34
34
|
если символ >= "0" и символ <= "9"
|
|
35
35
|
{
|
|
36
36
|
результат += (символ.код() - "0".код()) * степень
|
|
@@ -52,11 +52,11 @@
|
|
|
52
52
|
функция прочитать-16ричное-целое-кириллицы(текст: ФрагментТекста): Целое
|
|
53
53
|
{
|
|
54
54
|
результат = 0
|
|
55
|
-
|
|
56
|
-
|
|
55
|
+
перем позиция = текст.длина - 1
|
|
56
|
+
перем степень = 1
|
|
57
57
|
пока позиция >= 0
|
|
58
58
|
{
|
|
59
|
-
|
|
59
|
+
пусть символ = текст[позиция]
|
|
60
60
|
если символ >= "0" и символ <= "9"
|
|
61
61
|
{
|
|
62
62
|
результат += (символ.код() - "0".код()) * степень
|
|
@@ -78,11 +78,11 @@
|
|
|
78
78
|
функция прочитать-10тичное-целое(текст: ФрагментТекста): Целое
|
|
79
79
|
{
|
|
80
80
|
результат = 0
|
|
81
|
-
|
|
82
|
-
|
|
81
|
+
перем позиция = текст.длина - 1
|
|
82
|
+
перем степень = 1
|
|
83
83
|
пока позиция >= 0
|
|
84
84
|
{
|
|
85
|
-
|
|
85
|
+
пусть символ = текст[позиция]
|
|
86
86
|
если символ >= "0" и символ <= "9"
|
|
87
87
|
{
|
|
88
88
|
результат += (символ.код() - "0".код()) * степень
|
|
@@ -96,11 +96,11 @@
|
|
|
96
96
|
функция прочитать-2ичное-целое(текст: ФрагментТекста): Целое
|
|
97
97
|
{
|
|
98
98
|
результат = 0
|
|
99
|
-
|
|
100
|
-
|
|
99
|
+
перем позиция = текст.длина - 1
|
|
100
|
+
перем степень = 1
|
|
101
101
|
пока позиция >= 0
|
|
102
102
|
{
|
|
103
|
-
|
|
103
|
+
пусть символ = текст[позиция]
|
|
104
104
|
если символ == "1"
|
|
105
105
|
{
|
|
106
106
|
результат += степень
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
русский = 1
|
|
6
6
|
}
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
языки: Массив<объект { язык: ЯзыкПакета; код: Текст; имена: Массив<Текст> }> =
|
|
9
9
|
[
|
|
10
10
|
автотип(язык = ЯзыкПакета.английский, код = "en", имена = ["english", "английский"]),
|
|
11
11
|
автотип(язык = ЯзыкПакета.русский, код = "ru", имена = ["рус", "русский", "rus", "russian"]),
|