Compiler for Oberon programming language implemented with Java, Antlr4, LLVM. A project showing students that writing compilers is fun.
https://www.inf.ethz.ch/personal/wirth/Oberon/Oberon07.Report.pdf
https://github.com/bytedeco/javacpp-presets/tree/master/llvm
Перед тем, как запустить пакет необходимо его склонировать с сервера в папку на компьютере. Делается это при помощи программы git
(https://git-scm.com/). Можно загрузить дополнительные пакеты, интегрирующие git
с операционной системой или редакторами. Хороши пример такой программы - tortoisegit
(https://tortoisegit.org/).
$ mkdir -p ~/IdeaProjects
$ cd ~/IdeaProjects
$ git clone https://github.com/eugeneai/Java-oberon-compiler.git oberon
$ cd oberon
Первые две строки не относятся к клонированию, они оснащают среду.
Для того, чтобы скомпилировать проект надо из командной строки запустить команду сборки.
$ mvn package exec:java
Командная строка в Linux - дело привычное: запускаете эмулятор терминала, переходите в директорий проекта (cd ~/IdeaProjects/oberon
). В Windows все аналогично, только запускать надо cmd.exe
или far.exe
(если он был установлен: https://www.farmanager.com/download.php).
Программа mvn
предназначена для сборки проекта. Ее установка зависит от операционной системы. Адрес - https://maven.apache.org/download.cgi . Для обеспечения ее функционирования и запуска данного проекта необходимо установить Java версии 1.8 или раньше (больше).
Если компиляция и запуск завершились удачно, то на экране появится текст, вроде этого:
code generation does not match the current runtime version 4.7.1
; Running fac(10) with JIT...
; Result: 3628800
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.930 s
[INFO] Finished at: 2018-03-20T17:58:47+08:00
[INFO] Final Memory: 22M/73M
[INFO] ------------------------------------------------------------------------
Данный проект - это проект среды разработки (IDE) JetBrains IntelliJ Idea. По идее, если на компьютере установлена эта среда, то после клонирования она должна импортировать проект в список проектов.
- Перевести все отладочные сообщение в логгинг (см. https://www.slf4j.org/manual.html).
- Реализовать операторы языка
IF
,FOR
,WHILE
и т.п. - Реализовать структуры данных
RECORD
,CLASS
(Если такой есть), массивы и ООП. - Создать минимальные библиотеки
IO
,MATH
согласно спецификации, либо скомпилировать существующие. - Реализовать сборку и загрузчик главного модуля.
- Создать уровень отображения на стандартные библиотеки
C
(libc
,math
). - Разработать
INTERFACE
, если такая структура есть в спецификации. - Создавать тестовые программы, библиотеки модулей, фреймворки.
- Создать вариант
ANTLR
для полученногоOBERON
-а и сгенерировать и скомпилировать компилятор самого себя. - Опции компилятора, кросс-платформенность, процессорные архитектуры 32/64.
- Кросс-компиляция.