Для установки нажмите кнопочку Установить расширение. И это всё.

Исходный код расширения WIKI 2 регулярно проверяется специалистами Mozilla Foundation, Google и Apple. Вы также можете это сделать в любой момент.

4,5
Келли Слэйтон
Мои поздравления с отличным проектом... что за великолепная идея!
Александр Григорьевский
Я использую WIKI 2 каждый день
и почти забыл как выглядит оригинальная Википедия.
Статистика
На русском, статей
Улучшено за 24 ч.
Добавлено за 24 ч.
Альтернативы
Недавние
Show all languages
Что мы делаем. Каждая страница проходит через несколько сотен совершенствующих техник. Совершенно та же Википедия. Только лучше.
.
Лео
Ньютон
Яркие
Мягкие

Из Википедии — свободной энциклопедии

Coco/R
Тип Parser/scanner generator
Автор Hanspeter Mössenböck and others
 Аппаратная платформа  Cross-platform
Лицензия GNU GPL
Сайт ssw.jku.at/Research/Projects/Coco/

Введение

Сосо/R — программа генерации компиляторов или интерпретаторов языка. Программа читает файл с атрибутивной грамматикой реализуемого языка, описанной в форме РБНФ (Расширенная форма Бэкуса — Наура, EBNF) и генерирует ряд файлов:

Использование Сосо/R является очень простым. Создаваемый программой код является быстрым и лёгким для понимания.

Сама программа уже реализована на множестве языков, и генерирует исходники компилятора так же на множестве языков. Существуют версии Сосо/R, создающие исходники на Java, C++, C#, Delphi, Pascal, Ada, Modula-2, Modula-3, Oberon, Component Pascal и других языках.

Разработка своего языка заключается в разработке файла грамматики языка. В грамматику языка добавляется специального вида комментарии (. .), в которых заключен код для выполнения дополнительных действий. Как правило, это код для занесения данных в таблицы идентификаторов, генерации кода или его интерпретации.

Версия Сосо/R для языка С#

Входной файл для Сосо/R имеет расширение .ATG и содержит наборы символов языка, лексемы и продукции языка, описывающие структуру компилируемого языка и вставки на языке С#.

Сосо/R генерирует классы сканера и парсера на языке C# (Scanner.cs, Parser.cs) Так же автоматически создаётся обработчик ошибок (он входит в состав Parser.cs), что впоследствии позволяет выводить при анализе программ пользователя список ошибок с указанием их мест. Таким образом, программа автоматизированной генерации компиляторов Сосо/R значительно облегчает процесс создания компиляторов.

Пример

В данном случае Сосо/R описывает грамматики вида:

S -> aU | bV
U -> bV | bS | e
V -> a | b
COMPILER CLN //название языка

public System.Windows.Forms.TextBox text; //имя текст-бокса в нашем компиляторе на языке, на котором он пишется (C#) 
public string Production=""; //переменная в программе компилятора с продукциями
public string Conditions="";
public string dd; //промежуточная строка


CHARACTERS //раздел, в котором описываются допустимые символы, разбитые на группы
Blet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ". //большие буквы 
Slet = "abcdefghijklmnopqrstuvwxyz". //маленькие..))


TOKENS //токены, они же лексемы. Структурные единицы, из которых состоит описываемый входной язык компилятора
Unterminal = Blet. //например, нетерминалы могут быть любой буквой и группы, описанной выше как Blet, т.е. все большие буквы
Product = Slet {Blet|Slet}. //аналогично, продукции состоят из одной маленькой буквы и далее энное колво больших и маленьких букв (эн от 0 до бесконеч)
Cr = '\r'|'\n'. //возможные варианты конца строки
goto = "->". //стрелочка
Divider = "|". //разделитель продукций


COMMENTS FROM "//" TO '\n' //комментарии - будет игнорироваться


IGNORE '\t'+' ' //список игнорируемых символов, в данном случае табуляция и пробелы


PRODUCTIONS //раздел с описанием структуры входного языка компилятора, в данном случае - грамматики)

CLN = //начало описания, описывается в виде набора описанных выше токенов. в фигурных скобках, как и выше - значит что кусок может не быть, а может быть от 1 до много раз)
//в квадратных скобках (здесь нету..) - либо 0, либо 1 раз)
{

Unterminal (. Conditions+=t.val; .) 
goto 
Product (. Production+=t.val+" "; .) 
{
Divider 
Product (. Production+=t.val+" "; .)
} 

(. Production+='\n'; .) //в (. .) идут вставки на конечном языке (си шарпе), которые без изменения будут перенесены в парсер и сканер
{Cr}

}.


END CLN.//конец описания

Ссылки

Эта страница в последний раз была отредактирована 26 августа 2023 в 14:34.
Как только страница обновилась в Википедии она обновляется в Вики 2.
Обычно почти сразу, изредка в течении часа.
Основа этой страницы находится в Википедии. Текст доступен по лицензии CC BY-SA 3.0 Unported License. Нетекстовые медиаданные доступны под собственными лицензиями. Wikipedia® — зарегистрированный товарный знак организации Wikimedia Foundation, Inc. WIKI 2 является независимой компанией и не аффилирована с Фондом Викимедиа (Wikimedia Foundation).