Coco/R для OBC

Реализация Coco/R для Oxford Oberon-2 Compiler.

В настоящее время проектом занимается Александр Ширяев.

Цели проекта: получение версии Coco/R для OBC.

Репозиторий с исходными текстами: https://github.com/aixp/obc-Coco

Форум на OberonCore: Oberon & Oberon-2 → Coco.

Состояние реализации

За основу была взята реализация Coco/R для Oberon.

Были сделаны некоторые изменения в соответствии с текущей версией (для C#):

  • Реализован LL(1) conflict resolver IF.
  • Если терминальный символ (token) является строкой, то в генерируемый парсер добавляется константа для того, чтобы из атрибутной грамматики на него можно было ссылаться по имени, а не по номеру (который, в общем случае, неизвестен). Если строка, соответствующая этому символу, встречается в разделе PRODUCTIONS, то она заменяется на этот символ.

Реализована генерация драйвера. Генерация драйвера не является обязательной и выполняется только в том случае, если был найден соответствуюший фрейм-файл (шаблон) ИмяКомпилятораDriver.FRM или Driver.FRM

Свежие примеры:

Замечания

Таблица соответствия имён в C#- и Java-версии и в Oberon-версии Coco/R:

C#, Java Oberon Комментарий
la.kind sym номер следующего терминального символа
la.val S.GetName(S.nextPos, S.nextLen, nextName) значение следующего терминального символа
t.kind номер текущего терминального символа
t.val S.GetName(S.pos, S.len, name) значение текущего терминального символа
_имя имяToken константа, равная номеру терминального символа

Что планируется сделать

  • Добавить автоматическую проверку реализации набором тестов.
  • Улучшить вывод трассировочной информации.

См. также

© 2005-2024 OberonCore и коллектив авторов.