@artel/ru-artel-compiler 0.6.25221 → 0.6.25223

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@artel/ru-artel-compiler",
3
- "version": "0.6.25221",
3
+ "version": "0.6.25223",
4
4
  "description": "*А* Артель.Компилятор (RU)",
5
5
  "author": "Nezaboodka Team <contact@nezaboodka.com>",
6
6
  "license": "LGPL-3.0-or-later",
@@ -10,6 +10,7 @@
10
10
  'в иерархии'
11
11
  'в файле'
12
12
  'в пакете'
13
+ 'важно'
13
14
  'вариант'
14
15
  'возврат'
15
16
  'выбор'
@@ -56,12 +56,53 @@
56
56
 
57
57
  функция предпросмотр(анализатор: функция(): ДаНет): ДаНет
58
58
  {
59
- результат = пробный-анализ-или-предпросмотр(анализатор, безусловно-восстановить-состояние = да)
59
+ конст сохран-лексема = лексема
60
+ конст сохран-текущая-позиция = текущая-позиция
61
+ конст сохран-баланс-фигурных-скобок = баланс-фигурных-скобок
62
+ пусть сохран-стек-баланса-фигурных-скобок: Список<Целое>? = пусто
63
+ если стек-баланса-фигурных-скобок.количество > 0
64
+ {
65
+ сохран-стек-баланса-фигурных-скобок = Список<Целое>(стек-баланса-фигурных-скобок)
66
+ }
67
+ результат = анализатор()
68
+ лексема = сохран-лексема
69
+ текущая-позиция = сохран-текущая-позиция
70
+ баланс-фигурных-скобок = сохран-баланс-фигурных-скобок
71
+ если сохран-стек-баланса-фигурных-скобок != пусто
72
+ {
73
+ стек-баланса-фигурных-скобок = сохран-стек-баланса-фигурных-скобок
74
+ }
75
+ иначе
76
+ {
77
+ стек-баланса-фигурных-скобок.очистить()
78
+ }
60
79
  }
61
80
 
62
- функция пробный-анализ(анализатор: функция(): ДаНет): ДаНет
81
+ функция пробный-анализ<Т>(анализатор: функция(): Т?): Т?
63
82
  {
64
- результат = пробный-анализ-или-предпросмотр(анализатор, безусловно-восстановить-состояние = нет)
83
+ конст сохран-лексема = лексема
84
+ конст сохран-текущая-позиция = текущая-позиция
85
+ конст сохран-баланс-фигурных-скобок = баланс-фигурных-скобок
86
+ пусть сохран-стек-баланса-фигурных-скобок: Список<Целое>? = пусто
87
+ если стек-баланса-фигурных-скобок.количество > 0
88
+ {
89
+ сохран-стек-баланса-фигурных-скобок = Список<Целое>(стек-баланса-фигурных-скобок)
90
+ }
91
+ результат = анализатор()
92
+ если результат == пусто
93
+ {
94
+ лексема = сохран-лексема
95
+ текущая-позиция = сохран-текущая-позиция
96
+ баланс-фигурных-скобок = сохран-баланс-фигурных-скобок
97
+ если сохран-стек-баланса-фигурных-скобок != пусто
98
+ {
99
+ стек-баланса-фигурных-скобок = сохран-стек-баланса-фигурных-скобок
100
+ }
101
+ иначе
102
+ {
103
+ стек-баланса-фигурных-скобок.очистить()
104
+ }
105
+ }
65
106
  }
66
107
 
67
108
  функция следующая-лексема(): Лексема
@@ -496,37 +537,8 @@
496
537
  результат = лексема
497
538
  }
498
539
 
499
- скрытая функция пробный-анализ-или-предпросмотр(анализатор: функция(): ДаНет,
500
- безусловно-восстановить-состояние: ДаНет): ДаНет
540
+ скрытая функция фигурная-скобка-оканчивает-шаблон-текста(): ДаНет
501
541
  {
502
- конст сохран-лексема = лексема
503
- конст сохран-текущая-позиция = текущая-позиция
504
- конст сохран-баланс-фигурных-скобок = баланс-фигурных-скобок
505
- пусть сохран-стек-баланса-фигурных-скобок: Список<Целое>? = пусто
506
- если стек-баланса-фигурных-скобок.количество > 0
507
- {
508
- сохран-стек-баланса-фигурных-скобок = Список<Целое>(стек-баланса-фигурных-скобок)
509
- }
510
-
511
- результат = анализатор()
512
-
513
- если безусловно-восстановить-состояние или результат == нет
514
- {
515
- лексема = сохран-лексема
516
- текущая-позиция = сохран-текущая-позиция
517
- баланс-фигурных-скобок = сохран-баланс-фигурных-скобок
518
- если сохран-стек-баланса-фигурных-скобок != пусто
519
- {
520
- стек-баланса-фигурных-скобок = сохран-стек-баланса-фигурных-скобок
521
- }
522
- иначе
523
- {
524
- стек-баланса-фигурных-скобок.очистить()
525
- }
526
- }
527
- }
528
-
529
- скрытая функция фигурная-скобка-оканчивает-шаблон-текста(): ДаНет {
530
542
  результат = стек-баланса-фигурных-скобок.количество > 0 и баланс-фигурных-скобок == 1
531
543
  }
532
544
 
@@ -963,20 +975,20 @@
963
975
  {
964
976
  пусть индекс = 0
965
977
  конст длина = текст-без-кавычек.длина
966
- если индекс >= длина или это-начало-имени(текст.символ-по-позиции(индекс))
978
+ если индекс >= длина или это-начало-имени(текст-без-кавычек.символ-по-позиции(индекс))
967
979
  {
968
980
  вернуть нет
969
981
  }
970
982
  индекс += 1
971
983
  пока индекс < длина
972
984
  {
973
- если не (это-часть-имени(текст.символ-по-позиции(индекс)))
985
+ если не (это-часть-имени(текст-без-кавычек.символ-по-позиции(индекс)))
974
986
  {
975
987
  вернуть нет
976
988
  }
977
989
  индекс += 1
978
990
  }
979
- если индекс == длина и текст.символ-по-позиции(индекс) == "-"
991
+ если индекс == длина и текст-без-кавычек.символ-по-позиции(индекс) == "-"
980
992
  {
981
993
  вернуть нет
982
994
  }
@@ -51,6 +51,7 @@
51
51
  [
52
52
  автотип(текст = "автотип", вид = ВидСлова.'автотип', диалекты = [ДиалектПакета.привычный, ДиалектПакета.особый]),
53
53
  автотип(текст = "аспект", вид = ВидСлова.'аспект', диалекты = [ДиалектПакета.привычный, ДиалектПакета.особый]),
54
+ автотип(текст = "важно", вид = ВидСлова.'важно', диалекты = [ДиалектПакета.привычный]),
54
55
  автотип(текст = "вариант", вид = ВидСлова.'вариант', диалекты = [ДиалектПакета.привычный, ДиалектПакета.особый]),
55
56
  автотип(текст = "вернуть", вид = ВидСлова.'возврат', диалекты = [ДиалектПакета.привычный, ДиалектПакета.особый]),
56
57
  автотип(текст = "возврат", вид = ВидСлова.'возврат', диалекты = [ДиалектПакета.привычный, ДиалектПакета.особый]),
@@ -155,6 +156,7 @@
155
156
  автотип(текст = "get", вид = ВидСлова.'чтение', диалекты = [ДиалектПакета.привычный, ДиалектПакета.особый]),
156
157
  автотип(текст = "if", вид = ВидСлова.'если', диалекты = [ДиалектПакета.привычный, ДиалектПакета.особый]),
157
158
  автотип(текст = "import", вид = ВидСлова.'подключить', диалекты = [ДиалектПакета.привычный, ДиалектПакета.особый]),
159
+ автотип(текст = "important", вид = ВидСлова.'важно', диалекты = [ДиалектПакета.привычный]),
158
160
  автотип(текст = "is", вид = ВидСлова.'это', диалекты = [ДиалектПакета.привычный, ДиалектПакета.особый]),
159
161
  автотип(текст = "let", вид = ВидСлова.'пусть', диалекты = [ДиалектПакета.привычный, ДиалектПакета.особый]),
160
162
  автотип(текст = "loop", вид = ВидСлова.'цикл', диалекты = [ДиалектПакета.привычный, ДиалектПакета.особый]),