Skip to content

x-research-team/sofia

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Документация языка SOFIA

Данный документ содержит исчерпывающую техническую документацию по языку программирования SOFIA, его внутреннему устройству, компонентам и принципам работы. Цель документации — предоставить разработчикам, архитекторам и пользователям глубокое понимание системы, облегчить её использование, расширение и отладку.

📚 Содержание

💡 Обзор архитектуры

Язык SOFIA реализован как интерпретируемый язык программирования. Процесс обработки исходного кода включает следующие основные этапы:

  1. Лексический анализ (Lexing): Исходный код преобразуется в последовательность токенов.
  2. Синтаксический анализ (Parsing): Последовательность токенов преобразуется в Абстрактное Синтаксическое Дерево (AST).
  3. Вычисление (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
Loading

📁 Структура проекта

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
Loading

📦 Модули

Модуль Публичные типы Описание
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): Хранилище переменных и их значений в процессе выполнения программы.

About

No description, website, or topics provided.

Resources

License

Stars

1 star

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages