AsanaLang

⚙️ Внутреннее устройство ASANALANG

Проект реализован на стеке .NET / F#, что обеспечивает строгую типизацию и безопасность вычислений.

Конвейер (Pipeline)

Процесс исполнения кода разделен на три этапа:

  1. Lexing & Parsing: Текст превращается в AST с помощью библиотеки FParsec.
  2. Environment Analysis: Формирование цепочки окружений (фреймов) для поддержки замыканий.
  3. Evaluation: Рекурсивный обход дерева интерпретатором.

Модель окружения (Scope)

Мы используем структуру данных Env, которая представляет собой стек фреймов. Это позволяет реализовывать:

🌳 Абстрактное синтаксическое дерево (AST)

type Expr =

    | Mountain of int
    | Water of float
    | Mantra of string

    | Balance of bool
    | Aura of string
    | Forest of Expr list

    | BinaryOp of string * Expr * Expr
    | Asana of string * string list * Expr
    | Mudra of string list * Expr

    | Samsara of Expr
    | IfCalm of Expr * Expr * Expr
    | Call of Expr * Expr list