Coco / R - это компилятор-генератор, который принимает L-атрибутивную расширенную форму Бэкуса – Наура (EBNF) исходного языка и генерирует сканер и синтаксический анализатор для этого языка.
Автор (ы) оригинала | Ханспетер Мёссенбёк и другие |
---|---|
Платформа | Кроссплатформенность |
Тип | Генератор парсеров / сканеров |
Лицензия | GNU GPL |
Веб-сайт | ssw |
Сканер работает как детерминированный конечный автомат . Он поддерживает символы Unicode в кодировке UTF-8 и может быть чувствительным к регистру или без учета регистра. Он также может распознавать токены на основе их правого контекста. В дополнение к терминальным символам сканер также может распознавать прагмы , которые являются токенами, которые не являются частью синтаксиса, но могут встречаться в любом месте входного потока (например, директивы компилятора или символы конца строки).
Анализатор использует рекурсивный спуск ; Конфликты LL (1) могут быть разрешены либо с помощью многосимвольного просмотра вперед, либо с помощью семантических проверок. Таким образом, класс принятых грамматик равен LL (k) для произвольного k. Нечеткий анализ поддерживается так называемыми символами ANY, которые соответствуют дополнительным наборам токенов. Семантические действия записываются на том же языке, что и сгенерированные сканер и парсер. Обработку ошибок анализатора можно настроить, указав точки синхронизации и «слабые символы» в грамматике. Coco / R проверяет грамматику на полноту, непротиворечивость, отсутствие избыточности, а также на наличие конфликтов LL (1).
Существуют версии Coco / R для Java , C # , C ++ , Pascal , Modula-2 , Modula-3 , Delphi , VB.NET , Python , Ruby и других языков программирования. Последние версии из Линцского университета - это версии для C #, Java и C ++. Для версии Java существует подключаемый модуль Eclipse, а для C # - подключаемый модуль Visual Studio. Есть также образцы грамматик для Java и C #.
Coco / R был первоначально разработан в ETHZ и переехал с Ханспетером Мёссенбёком в Университет Линца, когда он получил там свое назначение. Coco / R распространяется на условиях слегка смягченной Стандартной общественной лицензии GNU .
Смотрите также
Рекомендации
- Терри, Пэт (2005). Компиляция с C # и Java . Эддисон Уэсли . (Книга об использовании Coco / R для построения компилятора.)
- Рехенберг, Питер ; Mössenböck, Hanspeter (1985). Ein Compiler-Generator für Mikrocomputer - Grundlagen, Anwendungen, Programmierung in Modula-2 (на немецком языке) (1-е изд.). Мюнхен, Германия: Карл Хансер Верлаг . ISBN 3-446-14495-1.(NB. В книге описывается конструкция Коко в Модуле-2 .)