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
Свежие примеры:
- LL(1)-грамматика для Oberon-07.
Замечания
Таблица соответствия имён в 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 и коллектив авторов.