Commit 9a9ffb41 authored by Roman Alifanov's avatar Roman Alifanov

Update documentation

- Fix benchmark numbers (47s/0.09s, ~530x speedup) - Add full project structure with all codegen mixins - Replace "Управление потоком" with "Условия и циклы" - Remove stale internal reference
parent 006c1ce8
...@@ -141,8 +141,6 @@ result = shell.exec ("cmd1") | shell.exec ("cmd2") ...@@ -141,8 +141,6 @@ result = shell.exec ("cmd1") | shell.exec ("cmd2")
result = value | func1 | func2 result = value | func1 | func2
``` ```
См. полное описание в разделе stdlib → Pipe-оператор.
### Декораторы ### Декораторы
Декораторы работают как на функциях, так и на методах классов. Декораторы работают как на функциях, так и на методах классов.
...@@ -232,7 +230,7 @@ class ApiClient { ...@@ -232,7 +230,7 @@ class ApiClient {
### @awk — высокопроизводительные функции ### @awk — высокопроизводительные функции
Декоратор `@awk` компилирует функцию в AWK вместо Bash. Даёт ускорение **до 2000x** на строковых и числовых операциях. Декоратор `@awk` компилирует функцию в AWK вместо Bash. Даёт ускорение **~530x** на строковых и числовых операциях (bench_heavy: Bash 47s vs AWK 0.09s).
``` ```
@awk @awk
...@@ -887,10 +885,8 @@ import "Logger" # ищет в глобальных путях ...@@ -887,10 +885,8 @@ import "Logger" # ищет в глобальных путях
Компилятор автоматически: Компилятор автоматически:
- Минимизирует fork
- Избегает subshell где возможно - Избегает subshell где возможно
- Использует bash builtins - Использует `[[ ]]` вместо `[ ]`
- Использует [[ ]] вместо [ ]
- Использует массивы - Использует массивы
- Кеширует вычисления - Кеширует вычисления
- Инлайнит простые методы - Инлайнит простые методы
...@@ -935,8 +931,6 @@ Error: Unknown method 'badMethod' for type 'fs'. Available: append, exists, list ...@@ -935,8 +931,6 @@ Error: Unknown method 'badMethod' for type 'fs'. Available: append, exists, list
- `time``ms`, `now` - `time``ms`, `now`
- `math``abs`, `add`, `div`, `max`, `min`, `mod`, `mul`, `sub` - `math``abs`, `add`, `div`, `max`, `min`, `mod`, `mul`, `sub`
Показывает все ошибки сразу (без дубликатов).
--- ---
## Архитектура компилятора ## Архитектура компилятора
...@@ -948,12 +942,17 @@ Error: Unknown method 'badMethod' for type 'fs'. Available: append, exists, list ...@@ -948,12 +942,17 @@ Error: Unknown method 'badMethod' for type 'fs'. Available: append, exists, list
┌────────▼────────┐ ┌────────▼────────┐
│ Lexer │ │ Lexer │
│ (Tokenizer) │ (lexer.py)
└────────┬────────┘ └────────┬────────┘
┌────────▼────────┐ ┌────────▼────────┐
│ Parser │ │ Parser │
│ (AST Gen) │ │ (parser.py) │
└────────┬────────┘
┌────────▼────────┐
│ DCE │
│ (dce.py) │
└────────┬────────┘ └────────┬────────┘
┌────────▼────────┐ ┌────────▼────────┐
...@@ -966,16 +965,16 @@ Error: Unknown method 'badMethod' for type 'fs'. Available: append, exists, list ...@@ -966,16 +965,16 @@ Error: Unknown method 'badMethod' for type 'fs'. Available: append, exists, list
└─────────────────┘ └─────────────────┘
``` ```
## Bootstrap vs Full Compiler ### Структура codegen (миксины)
### Bootstrap (Python) ```
CodeGenerator
- Минимальный компилятор на Python ├── StdlibMixin # stdlib.py — встроенные функции
- Используется один раз для сборки full compiler ├── AwkCodegenMixin # awk_codegen.py — @awk компиляция
- После успешной сборки не нужен ├── ExprMixin # expr_codegen.py — выражения
├── StmtMixin # stmt_codegen.py — statements
### Full Compiler (ContenT) ├── ClassMixin # class_codegen.py — классы/методы
├── DecoratorMixin # decorator_codegen.py — декораторы
- Self-hosted, написан на ContenT ├── DispatchMixin # dispatch_codegen.py — диспатч, присваивания
- Production-ready └── CseMixin # cse_codegen.py — CSE оптимизации
- Все оптимизации ```
...@@ -244,8 +244,8 @@ Heavy string benchmark (`examples/bench_heavy_*.ct`): ...@@ -244,8 +244,8 @@ Heavy string benchmark (`examples/bench_heavy_*.ct`):
| Version | Time | Speedup | | Version | Time | Speedup |
|---------|------|---------| |---------|------|---------|
| Bash | 57.8s | 1x | | Bash | 47s | 1x |
| AWK | 0.09s | **~640x** | | AWK | 0.09s | **~530x** |
Test includes: string concatenation, pattern search, CSV generation, word splitting (5000-10000 iterations each). Test includes: string concatenation, pattern search, CSV generation, word splitting (5000-10000 iterations each).
...@@ -345,18 +345,33 @@ FAIL failing test (1ms) ...@@ -345,18 +345,33 @@ FAIL failing test (1ms)
## Project Structure ## Project Structure
``` ```
bootstrap/ # Bootstrap compiler (Python) bootstrap/ # Bootstrap compiler (Python)
├── main.py # CLI entry point ├── main.py # CLI entry point
├── lexer.py # Tokenizer ├── lexer.py # Tokenizer
├── parser.py # AST generation ├── tokens.py # Token type definitions
├── codegen.py # Bash code generator ├── parser.py # Recursive descent parser, AST generation
├── awk_codegen.py # AWK generator for @awk ├── ast_nodes.py # AST node classes
└── stdlib.py # Standard library ├── codegen.py # Main Bash code generator
├── stmt_codegen.py # Statement generation (mixin)
lib/ # ContenT libraries ├── expr_codegen.py # Expression generation (mixin)
└── cli.ct # CLI library (urfave/cli style) ├── class_codegen.py # Class/method generation (mixin)
├── dispatch_codegen.py # Method dispatch, assignments (mixin)
examples/ # Example .ct programs ├── decorator_codegen.py # Decorator wrappers (mixin)
├── awk_codegen.py # AWK generator for @awk (mixin)
├── stdlib.py # Standard library generation (mixin)
├── cse_codegen.py # Common subexpression elimination (mixin)
├── dce.py # Dead code elimination
└── errors.py # Error handling
lib/ # ContenT libraries
└── cli.ct # CLI library (urfave/cli style)
tests/ # Test suite
├── test_lexer.py # Lexer tests
├── test_parser.py # Parser tests
└── test_integration.py # Integration tests
examples/ # Example .ct programs
``` ```
## License ## License
......
...@@ -150,7 +150,7 @@ with f in fs.open ("/tmp/test.txt") { ...@@ -150,7 +150,7 @@ with f in fs.open ("/tmp/test.txt") {
} # f.close() вызывается автоматически } # f.close() вызывается автоматически
``` ```
### Управление потоком ### Условия и циклы
``` ```
if count > 10 { if count > 10 {
...@@ -244,8 +244,8 @@ content build main.ct --lint # запуск ShellCheck ...@@ -244,8 +244,8 @@ content build main.ct --lint # запуск ShellCheck
| Версия | Время | Ускорение | | Версия | Время | Ускорение |
|--------|-------|-----------| |--------|-------|-----------|
| Bash | 57.8с | 1x | | Bash | 47с | 1x |
| AWK | 0.09с | **~640x** | | AWK | 0.09с | **~530x** |
Тест включает: конкатенацию строк, поиск паттернов, генерацию CSV, разбиение слов (5000-10000 итераций каждый). Тест включает: конкатенацию строк, поиск паттернов, генерацию CSV, разбиение слов (5000-10000 итераций каждый).
...@@ -345,18 +345,33 @@ FAIL падающий тест (1ms) ...@@ -345,18 +345,33 @@ FAIL падающий тест (1ms)
## Структура проекта ## Структура проекта
``` ```
bootstrap/ # Bootstrap-компилятор (Python) bootstrap/ # Bootstrap-компилятор (Python)
├── main.py # CLI точка входа ├── main.py # CLI точка входа
├── lexer.py # Токенизатор ├── lexer.py # Токенизатор
├── parser.py # Генерация AST ├── tokens.py # Определения типов токенов
├── codegen.py # Генератор Bash-кода ├── parser.py # Рекурсивный спуск, генерация AST
├── awk_codegen.py # AWK-генератор для @awk ├── ast_nodes.py # Классы узлов AST
└── stdlib.py # Стандартная библиотека ├── codegen.py # Основной генератор Bash-кода
├── stmt_codegen.py # Генерация statements (миксин)
lib/ # Библиотеки на ContenT ├── expr_codegen.py # Генерация выражений (миксин)
└── cli.ct # CLI-библиотека (стиль urfave/cli) ├── class_codegen.py # Генерация классов/методов (миксин)
├── dispatch_codegen.py # Диспатч методов, присваивания (миксин)
examples/ # Примеры .ct программ ├── decorator_codegen.py # Обёртки декораторов (миксин)
├── awk_codegen.py # AWK-генератор для @awk (миксин)
├── stdlib.py # Генерация стандартной библиотеки (миксин)
├── cse_codegen.py # Устранение общих подвыражений (миксин)
├── dce.py # Устранение мёртвого кода
└── errors.py # Обработка ошибок
lib/ # Библиотеки на ContenT
└── cli.ct # CLI-библиотека (стиль urfave/cli)
tests/ # Тестовый набор
├── test_lexer.py # Тесты лексера
├── test_parser.py # Тесты парсера
└── test_integration.py # Интеграционные тесты
examples/ # Примеры .ct программ
``` ```
## Лицензия ## Лицензия
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment