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

OSCHINA-MIRROR/openarkcompiler-incubator-MapleFE

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README 4.8 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 27.11.2024 00:48 6d9f4ee
**Происхождение 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 )

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

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