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