АнглийскийФранцузскийИспанский

Ad


Значок OnWorks

ragel - Интернет в облаке

Запустите ragel в бесплатном хостинг-провайдере OnWorks через Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS

Это команда ragel, которую можно запустить в бесплатном хостинг-провайдере OnWorks, используя одну из наших многочисленных бесплатных онлайн-рабочих станций, таких как Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS.

ПРОГРАММА:

ИМЯ


ragel - компилирует обычные языки в исполняемые конечные автоматы

СИНТАКСИС


рагель [кредита] файл

ОПИСАНИЕ


Ragel компилирует исполняемые конечные автоматы из обычных языков. Рагель может
генерировать код C, C ++, Objective-C, D, Go или Java. Конечные автоматы Рагеля могут не только
распознают байтовые последовательности, как это делают машины с регулярными выражениями, но также могут выполнять код на
произвольные моменты в распознавании регулярного языка. Код пользователя встроен с использованием
встроенные операторы, которые не нарушают синтаксис обычного языка.

Базовый язык состоит из стандартных операторов регулярных выражений, таких как union,
конкатенация и звезда клини, сопровождаемые операторами вложения действий. Рагель также
предоставляет операторы, которые позволяют вам контролировать любой недетерминированный, который вы создаете, конструировать
сканеры, использующие парадигму самого длинного совпадения, и построение конечных автоматов с использованием диаграммы состояний
модель. Также можно влиять на выполнение конечного автомата изнутри
встроенное действие путем прыжка или вызова других частей машины и повторной обработки
вход.

Ragel предоставляет очень гибкий интерфейс для основного языка, который пытается разместить
минимальные ограничения на то, как сгенерированный код используется и интегрируется в
заявление. Сгенерированный код не имеет зависимостей.

ДОПОЛНИТЕЛЬНЫЕ УСЛУГИ, НЕ ВКЛЮЧЕННЫЕ В ПАКЕТ


-h, -H, -?, --Помогите
Показать справку и выйти.

-v Распечатать информацию о версии и выйти.

-o файл
Записать вывод в файл. Если -o не указан, имя файла по умолчанию выбирается
замена файлового расширения входного файла. Для исходных файлов с расширением .rh
суффикс .h используется. Для всех остальных исходных файлов суффикс на основе языка вывода
используется (.c, .cpp, .m и т. д.). Если -o не указано для вывода Graphviz, сгенерированный
точечный файл записывается в стандартный вывод.

-s Выведите статистику по стандартной ошибке.

--error-format = GNU
Сообщения об ошибках выводятся в формате «файл: строка: столбец:» (по умолчанию).

--error-format = msvc
Сообщения об ошибках выводятся в формате «файл (строка, столбец):»

-d Не удаляйте повторяющиеся действия из списков действий.

-I директория
Добавить каталог в список каталогов для поиска включенных и импортированных файлов

-n Не выполняйте минимизацию состояния.

-m Выполните минимизацию один раз в конце компиляции конечного автомата.

-l Сведите к минимуму почти после каждой операции. Списки подобных операций, таких как союзы,
сворачивается один раз в конце. Это вариант минимизации по умолчанию.

-e Минимизируйте после каждой операции.

-x Скомпилируйте конечные автоматы и испустите XML-представление данных хоста и
машины.

-V Создайте точечный файл для Graphviz.

-p Отображение печатаемых символов на этикетках.

-S
Спецификация конечного автомата для вывода.

-M
Определение машины / создание экземпляра для вывода.

-C Основной язык - C, C ++, Obj-C или Obj-C ++. Это основной язык по умолчанию
опцию.

-D Основной язык - D.

-J Основной язык - Java.

-Z Основной язык - Go.

-R Основной язык - Ruby.

-L Запретить запись директив #line.

-T0 (C / D / Java / Ruby / C # / Go) Создание конечного автомата, управляемого таблицей. Это стиль кода по умолчанию.
Управляемый таблицей конечный автомат представляет конечный автомат как статические данные. Есть столы
состояний, переходов, указателей и действий. Текущее состояние сохраняется в
Переменная. Выполнение представляет собой цикл, который выглядит так, как если бы текущее состояние и
текущий символ для обработки ищет переход, который нужно выполнить, используя двоичный поиск,
выполняет любые действия и переходит в целевое состояние. В общем, стол загнал
FSM производит меньший двоичный файл и требует менее затратной компиляции на основном языке
но приводит к более медленному выполнению кода. Управляемый таблицей конечный автомат подходит для любого конечного автомата.

-T1 (C / D / Ruby / C # / Go) Создайте более быстрый конечный автомат, управляемый таблицами, путем расширения списков действий в
код выполнения действия.

-F0 (C / D / Ruby / C # / Go) Создание конечного автомата, управляемого плоской таблицей. Переходы представлены как
массив, проиндексированный текущим символом алфавита. Это устраняет необходимость в
бинарный поиск для поиска переходов и создания более быстрого кода, однако это только
подходит для малых алфавитов.

-F1 (C / D / Ruby / C # / Go) Создание более быстрого FSM, управляемого плоскими таблицами, путем расширения списков действий
в действии выполнить код.

-G0 (C / D / C # / Go) Создание конечного автомата, управляемого goto. FSM, управляемый goto, представляет состояние
машина как серия операторов goto. Находясь в машине, текущее состояние
хранится указателем инструкции процессора. Выполнение плоской функции
где управление передается из состояния в состояние с помощью gotos. В общем, goto FSM
производит более быстрый код, но приводит к большему двоичному размеру и более дорогому хосту
язык компиляции.

-G1 (C / D / C # / Go) Создание более быстрого FSM, управляемого goto, путем расширения списков действий в
действие выполнить код.

-G2 (C / D / Go) Создайте действительно быстрый автомат, управляемый goto, путем встраивания списков действий в
управляющий код конечного автомата.

(C / D) N-Way Split действительно быстрый конечный автомат, управляемый goto.

РАГЕЛЬ ВХОД


ПРИМЕЧАНИЕ. Это очень краткое описание ввода Ragel. Рагель описан более подробно
в руководстве пользователя, доступном на домашней странице (см. ниже).

Ragel обычно передает входные файлы прямо на выход. Когда видит автомат
Спецификация, содержащая машинные экземпляры, останавливает генерацию конечного автомата.
Если есть операторы записи (например, «write exec»), то ragel испускает соответствующий
код. Во входном файле может быть любое количество спецификаций конечного автомата. Многополюсный автомат
спецификация начинается с "%% {" и заканчивается "} %%". Спецификация однострочного конечного автомата
начинается с %% и заканчивается первой новой строкой.

ФШМ ОТЧЕТНОСТЬ


Машина Имя:
Задайте имя машины. Если дано, это должно быть первое утверждение.

Алфавит Тип:
Установите тип данных алфавита.

ПолучитьКлюч:
Укажите, как получить символ алфавита из типа элемента.

Включают:
Включите машину с тем же именем, что и текущая, или с другим именем, в любой
текущий файл или какой-либо другой файл.

Действие Определение:
Определите действие, которое может быть запущено автоматом.

Фсм Определение, Конкретизация и самый длинный Совпадение Создание:
Используется для построения автоматов. Описание синтаксиса в следующих нескольких разделах.

Access:
Укажите, как получить доступ к постоянным переменным конечного автомата.

Написать: Напишите какой-нибудь компонент машины.

Переменная:
Замените имена переменных по умолчанию (p, pe, cs, act и т. Д.).

BASIC МАШИНЫ


Базовые машины являются базовыми операндами выражений регулярного языка.

'Привет'
Конкат буквальный. Производит конкатенацию символов в строке. Поддерживает
escape-последовательности с '\'. В результате будет начальное состояние и переход к
новое состояние для каждого символа в строке. Последнее состояние в последовательности будет
быть окончательным. Чтобы сделать строку нечувствительной к регистру, добавьте к строке 'i', как
в cmd'i.

"Привет"
Идентично версии с одинарными кавычками.

[Привет]
Или буквально. Производит объединение персонажей. Поддерживает диапазоны символов с '-',
отрицание смысла объединения с начальным '^' и escape-последовательностями с '\'.
В результате будет два состояния с переходом между ними для каждого символа.
или диапазон.

ПРИМЕЧАНИЕ: '', "" и [] производят нулевые конечные автоматы. У нулевых машин есть одно состояние, которое одновременно является началом
состояние и конечное состояние и соответствуют строке нулевой длины. Может быть создана нулевая машина
с нулевой встроенной машиной.

целое
Делает автомат с двумя состояниями с одним переходом по заданному целому числу.

шестнадцатеричный Создает двухконечный автомат с одним переходом по заданному шестнадцатеричному числу.

/ simple_regex /
Простое регулярное выражение. Поддерживает обозначения '.', '*' И '[]', символ
диапазоны с '-', отрицая смысл выражения ИЛИ с и начальным '^' и
escape-последовательности с '\'. Также поддерживает один завершающий флаг: i. Используйте его для создания
регулярное выражение без учета регистра, например / GET / i.

освещенный .. освещенный
Задает диапазон. Допустимые верхняя и нижняя границы являются конкатенированными литералами
длина единицы и числовые автоматы. Например, 0x10..0x20, 0..63 и 'a' .. 'z' являются
допустимые диапазоны.

variable_name
Ссылается на определение машины, присвоенное заданному имени переменной.

встроенная_машина
Доступно несколько встроенных машин. Все это две машины состояний для
цель сопоставления общих классов символов. Они есть:

любой Любой символ алфавита.

ASCII Символы ascii 0..127.

продлить Расширенные символы ascii. Это диапазон -128..127 для знаковых алфавитов.
и диапазон 0..255 для беззнаковых алфавитов.

альфа Буквенные символы / [A-Za-z]/.

цифра Цифры / [0-9]/.

альбом Буквенно-цифровые символы / [0-9A-Za-z]/.

ниже Строчные символы / [az]/.

верхний Прописные буквы / [AZ]/.

xцифра Шестнадцатеричные цифры / [0-9A-Fa-f]/.

контроль Управляющие символы 0..31.

график Графические символы / [! - ~]/.

Распечатать Печатные символы / [- ~]/.

точка Пунктуация. Графические символы, не являющиеся буквенно-цифровыми
/ [! - /: - @ \ [- `{- ~]/.

космосе Пробел / [\ t \ v \ f \ n \ r]/.

нуль Строка нулевой длины. Эквивалентно '', "" и [].

пустой Пустой набор. Ничего не подходит.

КРАТКАЯ ОПЕРАТОР СПРАВКА


Операторы сгруппированы по приоритету: группа 1 является самой низкой, а группа 6 - самой высокой.

GROUP 1:

выраж , выраж
Соединяйте машины вместе, не рисуя переходов, не настраивая начальное состояние или
любые конечные состояния. Начальное состояние должно быть явно указано с помощью метки «start».
Конечные состояния могут быть указаны с помощью переходов эпсилон к неявно
создал «конечное» состояние.

GROUP 2:

выраж | выраж
Производит машину, которая соответствует любой строке на первой или второй машине.

выраж & выраж
Производит машину, которая соответствует любой строке, которая есть как в первой машине, так и в машине.
два.

выраж - выраж
Производит машину, которая соответствует любой строке, которая есть в первой машине, но не в
машина два.

выраж -- выраж
Сильное вычитание. Соответствует любой строке на машине, у которой нет строки
на второй машине как подстрока.

GROUP 3:

выраж . выраж
Производит машину, которая соответствует всем строкам в первой машине, за которыми следуют все
струны в машине два.

выраж :> выраж
Конкатенация с защитой от входа: завершает машину один при входе на машину два.

выраж : >> выраж
Конкатенация с защитой финиша: завершает первую машину, когда финиширует вторая машина.

выраж <: выраж
Левая конкатенация: дает более высокий приоритет машинному.

ПРИМЕЧАНИЕ. Конкатенация - это оператор по умолчанию. Две машины рядом друг с другом без
оператор между ними приводит к операции конкатенации.

GROUP 4:

маркировать: выраж
Добавляет метку к выражению. Ярлыки могут использоваться переходами эпсилон и
Операторы fgoto и fcall в действиях. Также обратите внимание, что ссылка на машину
определение вызывает неявное создание метки с тем же именем.

GROUP 5:

выраж -> этикетка
Рисует эпсилон-переход в состояние, определяемое меткой. Ярлык должен быть именем в
текущий объем. Переходы Epsilon разрешаются, когда используются запятые.
оценивается и находится в корне дерева выражений машины
присвоение / создание экземпляра.

GROUP 6: Действия

Действие может быть именем, заранее определенным с помощью оператора действия, или может быть указано напрямую.
с '{' и '}' в выражении.

выраж > действие
Включает действие в начальные переходы.

выраж @ действие
Включает действие в переходы, которые переходят в конечное состояние.

выраж $ действие
Включает действие во все переходы. Не включает незавершенные переходы.

выраж % действие
Включает действие в ожидающие переходы из конечных состояний.

GROUP 6: EOF Действия

Когда вызывается процедура завершения машины, выполняются действия EOF текущего состояния.

выраж >/ действие
Вставьте действие EOF в начальное состояние.

выраж </ действие
Вставьте действие EOF во все состояния, кроме начального.

выраж $/ действие
Встроить действие EOF во все состояния.

выраж %/ действие
Вставьте действие EOF в конечные состояния.

выраж @/ действие
Встраивайте действие EOF во все состояния, которые не являются окончательными.

выраж <> / действие
Встраивайте действие EOF во все состояния, которые не являются начальным и не являются
финал (средние состояния).

GROUP 6: Глобальный Ошибка Действия

Действия при глобальной ошибке сохраняются в состояниях до тех пор, пока конечный автомат не будет полностью завершен.
построен. Затем они переносятся на переходы ошибок, что дает эффект
действие по умолчанию.

выраж >! действие
Вставьте действие при глобальной ошибке в начальное состояние.

выраж <! действие
Встроить действие при глобальной ошибке во все состояния, кроме состояния запуска.

выраж $! действие
Встроить действие при глобальной ошибке во все состояния.

выраж %! действие
Вставьте глобальное действие при ошибке в конечные состояния.

выраж @! действие
Включите глобальное действие при ошибке во все состояния, которые не являются окончательными.

выраж <>! действие
Внедрить глобальное действие при ошибке во все состояния, которые не являются начальным состоянием и являются
не финальные (средние состояния).

GROUP 6: месте Ошибка Действия

Действия при локальной ошибке сохраняются в состояниях до тех пор, пока названная машина не будет полностью построена.
Затем они передаются в переходы ошибок, давая эффект действия по умолчанию для
раздел от общей машины. Обратите внимание, что имя может быть опущено, и в этом случае
действие будет передано ошибочным действиям при построении текущей машины.

выраж >^ действие
Вставьте действие при локальной ошибке в начальное состояние.

выраж <^ действие
Встроить действие при локальной ошибке во все состояния, кроме состояния запуска.

выраж $^ действие
Встроить действие при локальной ошибке во все состояния.

выраж %^ действие
Вставьте локальное действие при ошибке в конечные состояния.

выраж @^ действие
Включите локальное действие при ошибке во все состояния, которые не являются окончательными.

выраж <> ^ действие
Внедрить локальное действие при ошибке во все состояния, которые не являются начальным состоянием и являются
не финальные (средние состояния).

GROUP 6: В штат Действия

Действия в состояние сохраняются в состояниях и выполняются каждый раз, когда машина переходит в
штат. Сюда входят регулярные переходы и передачи управления, такие как fgoto. Примечание
который устанавливает текущее состояние извне машины (например, во время
инициализация) не считается переходом в состояние.

выраж >~ действие
Вставьте действие действия в состояние запуска в начальное состояние.

выраж <~ действие
Встраивайте действие в состояние во все состояния, кроме начального.

выраж $~ действие
Вставьте действие в состояние во все состояния.

выраж %~ действие
Вставьте действие to-state в конечные состояния.

выраж @~ действие
Вставьте действие в состояние во все состояния, которые не являются окончательными.

выраж <> ~ действие
Встраивайте действие в состояние во все состояния, которые не являются начальным состоянием и не являются
финал (средние состояния).

GROUP 6: От государства Действия

Действия из состояния выполняются всякий раз, когда состояние переходит к персонажу. Этот
включает в себя переход ошибки и переход к самому себе.

выраж >* действие
Вставить действие from-state в начальное состояние.

выраж <* действие
Встраивайте действие из состояния в каждое состояние, кроме начального.

выраж $* действие
Вставьте действие из состояния во все состояния.

выраж %* действие
Вставьте действие из состояния в конечные состояния.

выраж @* действие
Вставьте действие из состояния во все состояния, которые не являются окончательными.

выраж <> * действие
Вставить действие из состояния во все состояния, которые не являются начальным состоянием и не являются
финал (средние состояния).

GROUP 6: приоритет Назначение

Приоритеты назначаются именам в переходах. Только приоритеты с одинаковым именем
разрешено взаимодействовать. В первой форме приоритетов имя по умолчанию соответствует имени
определение машины, в котором назначается приоритет. Переходы не имеют значения по умолчанию
приоритеты.

выраж > Int
Назначает приоритет int во всех переходах, покидающих начальное состояние.

выраж @ Int
Назначает приоритет int во всех переходах, которые переходят в конечное состояние.

выраж $ Int
Назначает приоритет int во всех существующих переходах.

выраж % Int
Назначает приоритет int во всех ожидающих переходах.

Вторая форма присвоения приоритета позволяет программисту указать имя, которому
назначается приоритет, позволяя взаимодействиям пересекать границы определения машины.

выраж > (имя, целое число)
Присваивает приоритет int имени во всех переходах, покидающих начальное состояние.

выраж @ (имя, инт)
Присваивает приоритет int имени во всех переходах, которые переходят в конечное состояние.

выраж $ (имя, инт)
Назначает приоритет int имени во всех существующих переходах.

выраж % (имя, инт)
Присваивает приоритет int имени во всех ожидающих переходах.

GROUP 7:

выраж * Производит клини-звезду машины. Соответствует нулю или более повторений
машина.

выраж **
Клини Стар с самым длинным матчем. В этой версии клини стар
оставаться в машине, перематывать и начинать заново. Этот оператор
эквивалентно ((expr) $ 0% 1) *.

выраж ? Производит машину, которая принимает заданную машину или нулевую строку. Этот оператор
эквивалентно (expr | '').

выраж + Производит машину, соединенную с самой звездой клина. Соответствует одному или
больше повторений машины. Этот оператор эквивалентен (expr. Expr *).

выраж {п}
Производит машину, которая соответствует ровно n повторениям expr.

выраж {, n}
Производит машину, которая соответствует от нуля до n повторений expr.

выраж {п,}
Производит машину, которая соответствует n или более повторениям expr.

выраж {n, m}
Производит машину, которая сопоставляет от n до m повторений выражения expr.

GROUP 8:

! выраж Производит машину, которая соответствует любой строке, не совпадающей с данной машиной. Этот
оператор эквивалентен (* extension - expr).

^ выраж Отрицание на уровне персонажа. Соответствует любому одиночному символу, не совпадающему с одиночным
персонаж машина выр.

GROUP 9:

( выраж )
Обеспечивает приоритет операторам.

ЦЕННОСТИ: В НАЛИЧИИ IN КОД БЛОКИ


fc Текущий персонаж. Эквивалент * p.

FPC Указатель на текущий символ. Эквивалент p.

фурс Целочисленное значение, представляющее текущее состояние.

фтарг Целочисленное значение, представляющее целевое состояние.

фурнитура ( )
Целочисленное значение, представляющее точку входа .

ОТЧЕТНОСТЬ В НАЛИЧИИ IN КОД БЛОКИ


держать; Не продвигайтесь вперед по текущему символу. Эквивалентно --p ;.

фексек ;
Устанавливает текущий символ на что-нибудь другое. Эквивалентно p = ( ) -1;

Fgoto ;
Перейти к машине, определенной пользователем .

Fgoto * ;
Перейти к точке входа, указанной . Выражение должно быть целым числом
значение, представляющее состояние.

fследующий ;
Установите следующее состояние как точку входа, определяемую . Заявление fnext
не сразу переходит в указанное состояние. Любой код действия, следующий за
заявление выполнено.

fследующий * ;
Установите следующее состояние как точку входа, заданную . Выражение должно
оценить до целочисленного значения, представляющего состояние.

fcall ;
Вызовите машину, определенную пользователем . Следующий лад перейдет к цели
переход, на котором вызывается действие.

fcall * ;
Вызовите точку входа, указанную . Следующий лад перейдет к цели
переход, на котором вызывается действие.

беспокойство; Вернитесь в целевое состояние перехода, на котором был сделан последний вызов.

разрыв;
Сохраните текущее состояние и немедленно вырвитесь из машины.

CREDITS


Рагель был написан Адрианом Терстоном[электронная почта защищена]>. Выход Objective-C
предоставил Эрих Оушен. Вывод D предоставлен Аланом Уэстом. Выходные данные Ruby предоставлены
Виктор Гюго Борха. Генерация кода C Sharp предоставлена ​​Дэниелом Тангом. Взносы в
Генерация кода Java Колином Флемингом. Генерация кода Go предоставлена ​​Жюстин Танни.

Используйте ragel онлайн с помощью сервисов onworks.net


Бесплатные серверы и рабочие станции

Скачать приложения для Windows и Linux

  • 1
    KompoZer
    KompoZer
    KompoZer — это wysiwyg HTML-редактор, использующий
    кодовая база Mozilla Composer. В виде
    Разработка Нву остановлена
    в 2005 году KompoZer исправляет множество ошибок и
    добавляет ф...
    Скачать Композер
  • 2
    Бесплатная загрузка манги
    Бесплатная загрузка манги
    Free Manga Downloader (FMD) — это
    приложение с открытым исходным кодом, написанное на
    Object-Pascal для управления и
    скачивание манги с разных сайтов.
    Это зеркало...
    Скачать бесплатный загрузчик манги
  • 3
    UNetbootin
    UNetbootin
    UNetbootin позволяет создавать загрузочные
    Живые USB-накопители для Ubuntu, Fedora и
    другие дистрибутивы Linux без
    запись компакт-диска. Работает на Windows, Linux,
    и ...
    Скачать UNetbootin
  • 4
    Долибарр ERP - CRM
    Долибарр ERP - CRM
    Dolibarr ERP - CRM проста в использовании
    Пакет программного обеспечения ERP и CRM с открытым исходным кодом
    (запускается с веб-сервером php или как
    автономное программное обеспечение) для бизнеса,
    фундамент...
    Скачать Dolibarr ERP - CRM
  • 5
    Клиент SQuirreL SQL
    Клиент SQuirreL SQL
    SQuirreL SQL Client - это графический SQL
    клиент, написанный на Java, который позволит
    вы, чтобы просмотреть структуру JDBC
    совместимая база данных, просматривайте данные в
    столы ...
    Скачать SQL-клиент SQuirreL
  • 6
    Кронштейны
    Кронштейны
    Brackets — это бесплатная современная программа с открытым исходным кодом.
    текстовый редактор, созданный специально для Интернета
    Разработка. Написано на HTML, CSS и
    JavaScript с целенаправленными визуальными инструментами и
    подготовка ...
    Загрузить скобки
  • Больше »

Команды Linux

Ad