vladx 1.0.0
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/README.md +256 -0
- package/bin/cli.js +486 -0
- package/bin/vlad.js +539 -0
- package/bin/vladpm.js +710 -0
- package/bin/vladx.js +491 -0
- package/package.json +57 -0
- package/src/engine/jit-compiler.js +285 -0
- package/src/engine/vladx-engine.js +941 -0
- package/src/index.js +44 -0
- package/src/interpreter/interpreter.js +2114 -0
- package/src/lexer/lexer.js +658 -0
- package/src/lexer/optimized-lexer.js +106 -0
- package/src/lexer/regex-cache.js +83 -0
- package/src/parser/ast-nodes.js +472 -0
- package/src/parser/parser.js +1408 -0
- package/src/runtime/advanced-type-system.js +209 -0
- package/src/runtime/async-manager.js +252 -0
- package/src/runtime/builtins.js +143 -0
- package/src/runtime/bundler.js +422 -0
- package/src/runtime/cache-manager.js +126 -0
- package/src/runtime/data-structures.js +612 -0
- package/src/runtime/debugger.js +260 -0
- package/src/runtime/enhanced-module-system.js +196 -0
- package/src/runtime/environment-enhanced.js +272 -0
- package/src/runtime/environment.js +140 -0
- package/src/runtime/event-emitter.js +232 -0
- package/src/runtime/formatter.js +280 -0
- package/src/runtime/functional.js +359 -0
- package/src/runtime/io-operations.js +390 -0
- package/src/runtime/linter.js +374 -0
- package/src/runtime/logging.js +314 -0
- package/src/runtime/minifier.js +242 -0
- package/src/runtime/module-system.js +377 -0
- package/src/runtime/network-operations.js +373 -0
- package/src/runtime/profiler.js +295 -0
- package/src/runtime/repl.js +336 -0
- package/src/runtime/security-manager.js +244 -0
- package/src/runtime/source-map-generator.js +208 -0
- package/src/runtime/test-runner.js +394 -0
- package/src/runtime/transformer.js +277 -0
- package/src/runtime/type-system.js +244 -0
- package/src/runtime/vladx-object.js +250 -0
package/README.md
ADDED
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
# VladX
|
|
2
|
+
|
|
3
|
+
Мощный интерпретируемый язык программирования с русским синтаксисом.
|
|
4
|
+
|
|
5
|
+
## Особенности
|
|
6
|
+
|
|
7
|
+
- 🚀 Высокая производительность с JIT компиляцией
|
|
8
|
+
- 🔒 Безопасность с изоляцией песочницы
|
|
9
|
+
- 🏗️ Расширенная система типов
|
|
10
|
+
- ⚡ Мощная асинхронность
|
|
11
|
+
- 🧩 Современная модульная система
|
|
12
|
+
- 🧪 Встроенная поддержка тестирования
|
|
13
|
+
- 🔬 Отладчик и профилировщик
|
|
14
|
+
- 📦 Управление пакетами через vladpm
|
|
15
|
+
|
|
16
|
+
## Установка
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
npm install -g vladx
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Использование
|
|
23
|
+
|
|
24
|
+
### Базовый пример
|
|
25
|
+
|
|
26
|
+
```vlad
|
|
27
|
+
пусть x = 10 + 5;
|
|
28
|
+
печать("Результат:", x);
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### Функции
|
|
32
|
+
|
|
33
|
+
```vlad
|
|
34
|
+
функция добавить(a, b) {
|
|
35
|
+
вернуть a + b;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
печать("5 + 3 =", добавить(5, 3));
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Условия
|
|
42
|
+
|
|
43
|
+
```vlad
|
|
44
|
+
пусть возраст = 18;
|
|
45
|
+
|
|
46
|
+
если (возраст >= 18) {
|
|
47
|
+
печать("Совершеннолетний");
|
|
48
|
+
} иначе {
|
|
49
|
+
печать("Несовершеннолетний");
|
|
50
|
+
}
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### Циклы
|
|
54
|
+
|
|
55
|
+
```vlad
|
|
56
|
+
пока (возраст < 21) {
|
|
57
|
+
печать("Возраст:", возраст);
|
|
58
|
+
возраст = возраст + 1;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
для (пусть i = 0; i < 5; i = i + 1) {
|
|
62
|
+
печать("Итерация:", i);
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### Асинхронность
|
|
67
|
+
|
|
68
|
+
```vlad
|
|
69
|
+
асинхронная функция fetchData() {
|
|
70
|
+
позволить ждать(1000);
|
|
71
|
+
вернуть "данные";
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
пусть данные = ждать fetchData();
|
|
75
|
+
печать("Данные:", данные);
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### Функциональное программирование
|
|
79
|
+
|
|
80
|
+
```vlad
|
|
81
|
+
пусть удвоить = (x) => x * 2;
|
|
82
|
+
пусть утроить = (x) => x * 3;
|
|
83
|
+
|
|
84
|
+
пусть составить = композиция(удвоить, утроить);
|
|
85
|
+
печать("Составить(5) =", составить(5));
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Структуры данных
|
|
89
|
+
|
|
90
|
+
```vlad
|
|
91
|
+
пусть стек = Стек();
|
|
92
|
+
стек.пуш(1);
|
|
93
|
+
стек.пуш(2);
|
|
94
|
+
печать("Pop:", стек.pop());
|
|
95
|
+
|
|
96
|
+
пусть очередь = Очередь();
|
|
97
|
+
очередь.enqueue(1);
|
|
98
|
+
печать("Dequeue:", очередь.dequeue());
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## Встроенные функции
|
|
102
|
+
|
|
103
|
+
### Математика
|
|
104
|
+
|
|
105
|
+
- `максимум(...)` - максимум
|
|
106
|
+
- `минимум(...)` - минимум
|
|
107
|
+
- `случайный()` - случайное число [0, 1]
|
|
108
|
+
- `случайноеЦелое(min, max)` - случайное целое
|
|
109
|
+
- `abs(n)` - модуль
|
|
110
|
+
- `округлить(n)` - округление
|
|
111
|
+
- `корень(n)` - квадратный корень
|
|
112
|
+
- `пи()` - число π
|
|
113
|
+
|
|
114
|
+
### Строки
|
|
115
|
+
|
|
116
|
+
- `длина(str)` - длина строки
|
|
117
|
+
- `нижнийРегистр(str)` - нижний регистр
|
|
118
|
+
- `верхнийРегистр(str)` - верхний регистр
|
|
119
|
+
- `обрезка(str)` - обрезать пробелы
|
|
120
|
+
- `заменить(str, old, new)` - замена
|
|
121
|
+
- `разделить(str, delimiter)` - разделение
|
|
122
|
+
|
|
123
|
+
### Массивы
|
|
124
|
+
|
|
125
|
+
- `создатьМассив(...)` - создать массив
|
|
126
|
+
- `объединить(...arrays)` - объединение
|
|
127
|
+
- `фильтр(arr, callback)` - фильтрация
|
|
128
|
+
- `отобразить(arr, callback)` - map
|
|
129
|
+
- `уменьшить(arr, callback, initial)` - reduce
|
|
130
|
+
|
|
131
|
+
### Объекты
|
|
132
|
+
|
|
133
|
+
- `объект(obj)` - создать объект
|
|
134
|
+
- `ключи(obj)` - ключи
|
|
135
|
+
- `значения(obj)` - значения
|
|
136
|
+
- `пары(obj)` - пары
|
|
137
|
+
- `слить(...objects)` - слияние
|
|
138
|
+
|
|
139
|
+
### Система
|
|
140
|
+
|
|
141
|
+
- `печать(...)` - вывод с новой строкой
|
|
142
|
+
- `вывод(...)` - вывод без новой строки
|
|
143
|
+
- `время()` - текущее время
|
|
144
|
+
- `дата()` - текущая дата
|
|
145
|
+
|
|
146
|
+
### Файлы
|
|
147
|
+
|
|
148
|
+
- `файлЧитать(path)` - прочитать файл
|
|
149
|
+
- `файлЗаписать(path, content)` - записать файл
|
|
150
|
+
- `файлСуществует(path)` - проверка существования
|
|
151
|
+
|
|
152
|
+
### Кэш
|
|
153
|
+
|
|
154
|
+
- `кэшУстановить(key, value)` - установить в кэш
|
|
155
|
+
- `кэшПолучить(key)` - получить из кэша
|
|
156
|
+
- `кэшУдалить(key)` - удалить из кэша
|
|
157
|
+
- `кэшОчистить()` - очистить кэш
|
|
158
|
+
- `кэшСтатистика()` - статистика кэша
|
|
159
|
+
|
|
160
|
+
### Функциональное программирование
|
|
161
|
+
|
|
162
|
+
- `каррировать(fn)` - каррирование
|
|
163
|
+
- `композиция(...fns)` - композиция
|
|
164
|
+
- `труба(...fns)` - pipe
|
|
165
|
+
- `мемоизировать(fn)` - мемоизация
|
|
166
|
+
- `частично(fn, ...args)` - частичное применение
|
|
167
|
+
|
|
168
|
+
### Структуры данных
|
|
169
|
+
|
|
170
|
+
- `Стек()` - создать стек
|
|
171
|
+
- `Очередь()` - создать очередь
|
|
172
|
+
- `СвязныйСписок()` - создать связный список
|
|
173
|
+
- `ПриоритетнаяОчередь(comparator)` - приоритетная очередь
|
|
174
|
+
- `Множество()` - создать множество
|
|
175
|
+
- `Карта()` - создать карту
|
|
176
|
+
- `Дерево()` - создать trie
|
|
177
|
+
- `БинарноеДерево(compareFn)` - бинарное дерево поиска
|
|
178
|
+
|
|
179
|
+
### Асинхронность
|
|
180
|
+
|
|
181
|
+
- `параллельно(tasks)` - параллельное выполнение
|
|
182
|
+
- `последовательно(tasks)` - последовательное выполнение
|
|
183
|
+
- `гонка(tasks)` - race
|
|
184
|
+
- `всеSettled(tasks)` - allSettled
|
|
185
|
+
- `любой(tasks)` - any
|
|
186
|
+
|
|
187
|
+
## CLI
|
|
188
|
+
|
|
189
|
+
```bash
|
|
190
|
+
# Выполнить файл
|
|
191
|
+
vladx run main.vx
|
|
192
|
+
|
|
193
|
+
# REPL режим
|
|
194
|
+
vladx repl
|
|
195
|
+
|
|
196
|
+
# Компилировать в JavaScript
|
|
197
|
+
vladx compile main.vx --output main.js
|
|
198
|
+
|
|
199
|
+
# Линтинг
|
|
200
|
+
vladx lint src/
|
|
201
|
+
vladx lint main.vx --fix
|
|
202
|
+
|
|
203
|
+
# Форматирование
|
|
204
|
+
vladx format src/
|
|
205
|
+
vladx format main.vx --indent 2
|
|
206
|
+
|
|
207
|
+
# Тесты
|
|
208
|
+
vladx test
|
|
209
|
+
vladx test tests/
|
|
210
|
+
|
|
211
|
+
# Сборка модулей
|
|
212
|
+
vladx bundle main.vx --format iife --minify
|
|
213
|
+
|
|
214
|
+
# Watch режим
|
|
215
|
+
vladx watch main.vx
|
|
216
|
+
|
|
217
|
+
# Отладка
|
|
218
|
+
vladx debug main.vx
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
## Менеджер пакетов (vladpm)
|
|
222
|
+
|
|
223
|
+
```bash
|
|
224
|
+
# Инициализация проекта
|
|
225
|
+
vladpm init
|
|
226
|
+
|
|
227
|
+
# Установка пакета
|
|
228
|
+
vladpm установить пакет
|
|
229
|
+
vladpm установить пакет@1.0.0
|
|
230
|
+
|
|
231
|
+
# Глобальная установка
|
|
232
|
+
vladpm установить -g пакет
|
|
233
|
+
|
|
234
|
+
# Удаление пакета
|
|
235
|
+
vladpm удалить пакет
|
|
236
|
+
|
|
237
|
+
# Обновление пакетов
|
|
238
|
+
vladpm обновить
|
|
239
|
+
|
|
240
|
+
# Поиск пакетов
|
|
241
|
+
vladpm поиск пакет
|
|
242
|
+
|
|
243
|
+
# Информация о пакете
|
|
244
|
+
vladpm информация пакет
|
|
245
|
+
|
|
246
|
+
# Список пакетов
|
|
247
|
+
vladpm список
|
|
248
|
+
|
|
249
|
+
# Публикация
|
|
250
|
+
vladpm опубликовать
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
## Лицензия
|
|
254
|
+
|
|
255
|
+
MIT
|
|
256
|
+
|