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

OSCHINA-MIRROR/openarkcompiler-incubator-MapleFE

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

Этот проект направлен на создание интерфейса языка программирования, который использует «Autogen» для выполнения большей части работы по лексированию и синтаксическому анализу. Проект берёт своё начало из истории нашей двадцатилетней работы в области компиляторов и языков программирования. Мы устали от множества модификаций существующих проектов с открытым исходным кодом, таких как Clang, если мы хотим внести что-то новое в язык. Поэтому мы решили создать собственный интерфейс, с которым было бы легче работать над новыми языками.

**Ключевые моменты**
1. Autogen — это ключевая идея, которая автоматически генерирует структуры данных для лексирования/синтаксического анализа в файлах .h/.cpp, которые затем включаются в интерфейс языка. Разработчики языка пишут файлы .spec, описывающие спецификации языка в каталоге языка, например, java/.
2. Алгоритм синтаксического анализа называется Wavefront. Правила классифицируются как рекурсии, а рекурсии объединяются в группу, если они достигают друг друга. Синтаксический анализ Wavefront работает с группой рекурсий. Он работает волнами до тех пор, пока не достигнет фиксированной точки.

**Каталог исходного кода**

1. Большинство языков программирования имеют очень похожий синтаксис, поэтому очень полезно поместить общую часть в общий каталог. Для этого используется shared/. Он содержит:
    a) общие структуры данных, представляющие общий синтаксис;
    b) общие компоненты парсера/транслятора.
2. Специфические для языка части находятся в их собственном каталоге, таком как java/. Он содержит некоторые специальные части этого языка, файлы .spec и gen_xxx.h/gen_xxx.cpp, которые генерируются autogen.
3. Инструмент autogen находится в autogen/.
4. Инструмент recdetect находится в recdetec/. Он используется для поиска рекурсий и групп рекурсий.

**Подготовка**

Следуйте инструкциям в разделе «Рекомендуемая среда разработки», чтобы установить необходимые инструменты.

Также необходимо установить следующие пакеты:
```bash
sudo apt install -y clang-tools-10 clang-format-10 python3 python3-pip libyaml-cpp-dev nodejs npm
pip3 install pyyaml
sudo npm install -g typescript@latest
```

**Как собрать**

1. source envsetup.sh [java|typescript]
2. make mapleall
   На этом этапе собирается mapleall (библиотеки, связанные с Maple IR). Если вы уже делали это один раз, вам не нужно делать это снова, если вы не изменили код в mapleall.
3. make
4. Если вы работаете над интерфейсом Java, вы увидите output/java/java/java2mpl. Это исполняемый интерфейс.
4. Если вы работаете над интерфейсом Typescript, вы увидите output/typescript/bin/ts2ast. Это исполняемый интерфейс. Вы также можете увидеть output/typescript/bin/ast2cpp, который переводит AST в исходный код cpp.

**Как протестировать**

1. make test

Запустите один тест, скажем t1.java:
1. cd test
2. make t1

Все тестовые случаи Java можно найти в test/java.
Все тестовые примеры Typescript можно найти в test/typescript.

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

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

Введение

MapleFE — это унифицированный интерфейс, который может переводить на язык MapleIR с разных языков. Развернуть Свернуть
Отмена

Обновления

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

Участники

все

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

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