1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/falang-fa

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Fa язык — это простой и лёгкий в изучении язык программирования. В настоящее время он находится на стадии тестирования, позволяет компилировать простой функциональный код.

QQ-чат для обсуждения: 1018390466

Цели

  • Минимизация (компилятор управляет переменными, размещая их в стеке или куче, а также определяя, являются ли они ссылками или используют подсчёт ссылок, атомарны ли операции и т. д.) (в настоящее время не реализовано).
  • Безопасность (новая система обработки ошибок, обеспечивающая отсутствие исключений в компилируемом коде. Исключения системы не учитываются) (в настоящее время не реализовано).
  • Метапрограммирование (переменные с префиксом @ представляют собой вычисляемые во время компиляции значения) (в настоящее время не реализовано).
  • Высокая производительность (вывод LLVM IR, выполнение нативных инструкций, оптимизация SIMD) (в настоящее время не реализовано).
  • Владение и освобождение ресурсов (полностью обрабатывается компилятором) (в настоящее время не реализовано).
  • Принудительное использование шаблонов разработки (например, обязательное применение DDD-модели) (в настоящее время не реализовано).

Задачи

  • Самозагрузка
  • Обработка ошибок при работе с числами с плавающей точкой
  • Переключатель для пустых типов переменных
  • Переключатели типов
  • Мьютексы
  • Стандартная библиотека

Ход работы

  • На основе языка C++: Antlr для фронтенда, LLVM binding API для бэкенда, реализация первой версии компилятора языка fa (отменено)
  • На основе языка C#: Antlr для фронтенда, бэкенд на C#, реализация первой версии компилятора языка fa
    • Hello World (√)
    • Пустые типы (√)
    • Классы, объекты, выражения, циклы (√)
    • Типы перечисления (√)
    • Переключатель (√)
  • На основе языка fa: фронтенд fa, бэкенд LLVM ir, реализация самозагружаемого компилятора fa
    • Метапрограммирование
    • Деградация функций
    • Конечные автоматы
    • Наследование

Особенности

  • Необязательные типы
    • Любой тип, за которым следует знак вопроса, например int?, указывает на необязательный тип.
    • Можно хранить значение этого типа (кроме void?), а также сообщение об ошибке.
    • Необязательные типы могут использоваться в вычислениях с исходными типами, и результатом будет необязательный тип.
    • Они используются для реализации механизма обработки ошибок вместо исключений.
    • Когда функция возвращает необязательный тип, это означает, что вычисление завершилось ошибкой, и результат автоматически возвращается вызывающей стороне.
    int? func1 () {
        int? a = 5 / 0; // здесь a представляет ошибку деления на ноль
        int b = a + 3; // ошибка результата b не может быть сохранена, информация об ошибке возвращается здесь, дальнейший код не выполняется
        return b;
    }
    int func2 () {
        int? a = 5 / 0; // здесь a представляет ошибку деления на ноль
        int b = a + 3; // ошибка результата b не может быть сохранена, тип возвращаемого значения функции также не может принять его, компилятор выдаёт ошибку
        return b;
    }
  • Глобальные асинхронные задачи (в настоящее время не реализованы)
    • Методы по умолчанию выполняются асинхронно, тело метода не содержит асинхронного кода, который можно выполнить синхронно.
    • Нет ключевых слов future, async, await или подобных концепций, пользователь просто пишет код.
    • Отдельные потоки используются для независимого управления всеми асинхронными блокировками.

Пример реализации быстрой сортировки на языке fa:

compile

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Расширить Свернуть
C++ и 4 других языков
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://gitlife.ru/oschina-mirror/falang-fa.git
git@gitlife.ru:oschina-mirror/falang-fa.git
oschina-mirror
falang-fa
falang-fa
main