Данный документ содержит исчерпывающую техническую документацию по языку программирования SOFIA, его внутреннему устройству, компонентам и принципам работы. Цель документации — предоставить разработчикам, архитекторам и пользователям глубокое понимание системы, облегчить её использование, расширение и отладку.
- Обзор архитектуры
- Лексический анализ (Lexer)
- Абстрактное синтаксическое дерево (AST)
- Синтаксический анализ (Parser)
- Синтаксис языка (Syntax)
- Объектная модель (Object)
- Интерпретатор (Evaluator)
- Компилятор (Compiler)
- Точка входа (Main)
- Структура проекта
- Архитектура
- Модули
- Статистика
- Последние изменения
- Глоссарий
Язык SOFIA реализован как интерпретируемый язык программирования. Процесс обработки исходного кода включает следующие основные этапы:
- Лексический анализ (Lexing): Исходный код преобразуется в последовательность токенов.
- Синтаксический анализ (Parsing): Последовательность токенов преобразуется в Абстрактное Синтаксическое Дерево (AST).
- Вычисление (Evaluation): AST интерпретируется для выполнения программы.
graph TD
A[Исходный код SOFIA] --> B(Лексер);
B --> C{Токены};
C --> D(Парсер);
D --> E{Абстрактное Синтаксическое Дерево AST};
E --> F(Интерпретатор);
F --> G[Результат выполнения];
subgraph Компоненты
B -- ../src/lexer.rs --> C;
D -- ../src/parser.rs --> E;
F -- ../src/evaluator.rs --> G;
C -- ../src/token.rs --> D;
E -- ../src/ast.rs --> F;
F -- ../src/object.rs --> G;
end
src/
ast.rs
bytecode/
disassembler.rs
instructions.rs
mod.rs
opcode.rs
compiler.rs
evaluator.rs
lexer.rs
lib.rs
main.rs
object.rs
parser.rs
token.rs
vm/
mod.rs
graph LR
A[Source Code] --> B(Lexer)
B --> C(Parser)
C --> D{AST}
D --> E(Compiler)
E --> F(Bytecode)
F --> G(VM)
G --> H[Result]
D -.-> I(Evaluator - fallback)
I --> H
| Модуль | Публичные типы | Описание |
|---|---|---|
ast |
Program, LetStatement, Identifier, ReturnStatement, ExpressionStatement, BlockStatement, IntegerLiteral, BooleanLiteral, PrefixExpression, InfixExpression, IfExpression, FunctionLiteral, CallExpression, StringLiteral, ArrayLiteral, ClassDeclaration, InterfaceDeclaration, StructDeclaration, PropertyDeclaration, MethodDeclaration, MethodSignatureDeclaration, NewExpression, ThisExpression, SuperExpression, PropertyAccessExpression, MethodCallExpression, MatchExpression, MatchArm, RangePattern, StructPattern, Node, Statement, Expression, AccessModifier, Pattern | |
bytecode/disassembler |
||
bytecode/instructions |
Instructions | |
bytecode |
||
bytecode/opcode |
Opcode | |
compiler |
Compiler, CompilerError | |
evaluator |
||
lexer |
Lexer | |
lib |
||
main |
||
object |
CompiledFunction, Class, ClassInstance, Struct, StructInstance, Interface, Method, MethodSignature, Environment, Object | |
parser |
Parser, ParserError | |
token |
Token, TokenType | |
vm |
VM, CallFrame |
- Файлов: 14
- Модулей: 12
- Публичных структур: 46
- Публичных enum: 10
- Публичных функций: 2
- Строк кода: 7679
- Модулей с тестами: 8
Автообновлено: 2026-06-12 01:46:43 Всего модулей: 12, строк кода: 7679
- Токен: Наименьшая смысловая единица языка.
- Лексер (Lexer): Компонент, отвечающий за преобразование исходного кода в токены.
- Парсер (Parser): Компонент, отвечающий за преобразование последовательности токенов в AST.
- Абстрактное Синтаксическое Дерево (AST): Древовидное представление синтаксической структуры исходного кода.
- Интерпретатор (Evaluator): Компонент, отвечающий за выполнение AST.
- Объект (Object): Представление значений в языке SOFIA (числа, строки, булевы значения, функции и т.д.).
- Среда выполнения (Environment): Хранилище переменных и их значений в процессе выполнения программы.