⚡ MLC

Экспериментальный компилятор статически-типизированного языка в C++20

⚠️ Предупреждение об экспериментальном статусе

Данный проект представляет собой исследование возможностей генерации компилятора с использованием инструментов на основе больших языковых моделей. Проект не предназначен для промышленного использования.

О проекте

MLC — экспериментальный компилятор, преобразующий исходный код на статически-типизированном языке высокого уровня в исходный код на C++20. Основная цель проекта — изучение практических возможностей современных AI-систем при разработке сложных систем обработки языков программирования.

1528 тестов
4028 проверок
0 ошибок
85% генерация AI

Компоненты проекта

1. Компилятор языка MLC

Полнофункциональный транслятор с многоуровневым промежуточным представлением:

2. C++ AST DSL

Ruby DSL для программной генерации и манипуляции синтаксическими деревьями C++:

Язык MLC

Статически-типизированный функциональный язык с императивными элементами.

Система типов

Пример кода

type Result<T, E> = Ok(T) | Err(E)

fn divide(a: i32, b: i32) -> Result<i32, str> =
  if b == 0 then
    Err("division by zero")
  else
    Ok(a / b)

fn process_result(result: Result<i32, str>) -> i32 =
  match result
    | Ok(value) => value * 2
    | Err(error) => 0

Архитектура компилятора

Этап 1: Лексический анализ — преобразование текста в токены

Этап 2: Синтаксический анализ — построение AST

Этап 3: Семантический анализ — проверка типов, построение SemanticIR

Этап 4: Генерация кода — трансляция в C++20

Реализация Pattern Matching

Runtime библиотека

Модульная структура на C++20:

Использование

# Компиляция и запуск
bin/mlc examples/hello.mlc

# Вывод сгенерированного C++
bin/mlc --emit-cpp program.mlc

# Сохранение временных файлов
bin/mlc --keep-tmp program.mlc

# Чтение из stdin
echo 'fn main() -> i32 = 42' | bin/mlc -

Технологии

Архитектурные паттерны

Генерация с помощью AI

Более 85% кодовой базы создано с использованием AI-инструментов:

Ручное вмешательство потребовалось для определения архитектуры, спецификаций языка, формулирования требований и интеграции компонентов.

Область применения

✅ Проект предназначен для:

❌ Проект НЕ предназначен для:

Ссылки

GitHubTelegramResume

← Вернуться на главную