англійськафранцузькаіспанська

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. Ragel державні машини можуть не тільки
розпізнавати послідовності байтів, як це роблять машини регулярних виразів, але також можуть виконувати код на
довільні моменти у розпізнаванні звичайної мови. Код користувача вбудовується за допомогою
вбудовані оператори, які не порушують синтаксис звичайної мови.

Основна мова складається зі стандартних операторів регулярних виразів, таких як об'єднання,
конкатенація та зірка kleene, що супроводжується операторами вбудовування дій. Рейгель також
надає оператори, які дозволяють керувати будь-яким недетермінованим, який ви створюєте, створюєте
сканери, що використовують парадигму найдовшого збігу, і будують автомати станів за допомогою діаграми станів
модель. Також можна вплинути на виконання кінцевого автомата зсередини
вбудована дія шляхом переходу або виклику до інших частин машини та повторної обробки
Вхід

Ragel забезпечує дуже гнучкий інтерфейс до мови хоста, який намагається розмістити
мінімальні обмеження на те, як згенерований код використовується та інтегрується в
додаток. Згенерований код не має залежностей.

ВАРІАНТИ


-h, -H, -?, --допомога
Відобразити довідку та вийти.

-v Роздрукувати інформацію про версію та вийти.

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

-s Надрукуйте статистичні дані щодо стандартної помилки.

--error-format=gnu
Друкувати повідомлення про помилки у форматі «файл:рядок:стовпець:» (за замовчуванням)

--error-format=msvc
Друкувати повідомлення про помилки у форматі "файл (рядок, стовпець):"

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

-I реж
Додайте dir до списку каталогів для пошуку включених та імпортованих файлів

-n Не виконуйте мінімізацію стану.

-m Виконайте згортання один раз в кінці компіляції кінцевого автомата.

-l Мінімізуйте майже після кожної операції. Списки подібних операцій, таких як профспілки
в кінці зведено до мінімуму. Це параметр мінімізації за замовчуванням.

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

-x Скомпілюйте кінцеві автомати та випустіть XML-подання даних хоста та
машини.

-V Згенеруйте точковий файл для Graphviz.

-p Відображати друковані символи на етикетках.

-S
Специфікація FSM для виведення.

-M
Визначення/примірник машини для виведення.

-C Основною мовою є C, C++, Obj-C або Obj-C++. Це мова хоста за замовчуванням
варіант.

-D Приймаюча мова - D.

-J Основною мовою є Java.

-Z Основною мовою є Go.

-R Основною мовою є Ruby.

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

-Т0 (C/D/Java/Ruby/C#/Go) Створення FSM на основі таблиці. Це стиль коду за замовчуванням.
FSM, керований таблицею, представляє кінцевий автомат у вигляді статичних даних. Є столи
станів, переходів, показників і дій. Поточний стан зберігається в a
змінний. Виконання — це цикл, який виглядає так, враховуючи поточний стан і
поточний символ для обробки шукає перехід для виконання за допомогою двійкового пошуку,
виконує будь-які дії та переходить до цільового стану. Загалом стіл пригнаний
FSM створює менший двійковий файл і вимагає менш дорогої компіляції хост-мови
але призводить до уповільнення роботи коду. Настільний FSM підходить для будь-якого FSM.

-Т1 (C/D/Ruby/C#/Go) Створіть швидший FSM на основі таблиці, розширивши списки дій у
код виконання дії.

-F0 (C/D/Ruby/C#/Go) Створення FSM на основі плоскої таблиці. Переходи представлені у вигляді
масив, індексований поточним символом алфавіту. Це усуває необхідність а
двійковий пошук для пошуку переходів і дає швидший код, однак це лише
підходить для дрібних алфавітів.

-F1 (C/D/Ruby/C#/Go) Створюйте швидший FSM на основі плоскої таблиці, розширюючи списки дій
в коді виконання дії.

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

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

-G2 (C/D/Go) Створіть дійсно швидкий FSM, який керується переходом, вставляючи списки дій у
керуючий код кінцевого автомата.

(C/D) N-Way Split дійсно швидкий перехідний FSM.

РАГЕЛЬ ВХІД


ПРИМІТКА. Це дуже короткий опис введення Ragel. Рагель описано більш детально
у посібнику користувача, доступному на домашній сторінці (див. нижче).

Зазвичай Ragel передає вхідні файли прямо на вихідні. Коли він бачить FSM
специфікації, яка містить машинні екземпляри, вона зупиняється для створення кінцевого автомата.
Якщо є оператори запису (наприклад, "write exec"), то ragel видає відповідний
код. У вхідному файлі може бути будь-яка кількість специфікацій FSM. Багаторядковий FSM
специфікація починається з "%%{" і закінчується на "}%%". Однорядкова специфікація FSM
починається з %% і закінчується на першому новому рядку.

FSM ЗАЯВА


машина ім'я:
Встановіть назву машини. Якщо вказано, це має бути перше твердження.

Алфавіт Тип:
Встановіть тип даних алфавіту.

GetKey:
Укажіть, як отримати символ алфавіту з типу елемента.

Включати:
Включіть машину з такою ж назвою, що й поточна, або з іншою назвою
поточний файл або інший файл.

дію Визначення:
Визначте дію, яку може викликати FSM.

Fsm Визначення, Моментальність та Найдовше матч Екземпляр:
Використовується для створення FSM. Опис синтаксису в кількох наступних розділах.

Доступ:
Вкажіть, як отримати доступ до постійних змінних кінцевого автомата.

Написати: Напишіть якийсь компонент машини.

Змінна:
Замінити імена змінних за замовчуванням (p, pe, cs, act тощо).

BASIC МАШИНИ


Основні машини є базовими операндами регулярних мовних виразів.

'Здрастуйте'
З’єднаний літерал. Створює конкатенацію символів у рядку. Підтримує
escape-послідовності за допомогою '\'. Результат буде мати початковий стан і перехід до
новий стан для кожного символу в рядку. Останній стан у послідовності буде
бути зробленим остаточним. Щоб зробити рядок нечутливим до регістру, додайте «i» до рядка, як
в 'cmd'i.

"Здравствуйте"
Ідентичний версії з одинарними лапками.

[Здрастуйте]
Або буквально. Створює союз персонажів. Підтримує діапазони символів з '-',
заперечення сенсу об'єднання за допомогою початкового '^' і escape-послідовностей з '\'.
Результат матиме два стани з переходом між ними для кожного символу
або діапазон.

ПРИМІТКА: '', "", і [] створюють нульові FSM. Нульові машини мають один стан, який одночасно є початком
стан і кінцевий стан і відповідають рядку нульової довжини. Може бути створена нульова машина
з нульовою вбудованою машиною.

ціле
Створює двома кінцевим автоматом з одним переходом для заданого цілого числа.

гекса Створює двома кінцевим автоматом з одним переходом для заданого шістнадцяткового числа.

/простий_регулярний вираз/
Простий регулярний вираз. Підтримує позначення '.', '*' та '[]', символ
діапазони з '-', заперечуючи сенс виразу АБО з і початковим '^' і
escape-послідовності за допомогою '\'. Також підтримує один кінцевий прапор: i. Використовуйте його для виготовлення а
регулярний вираз без урахування регістру, як у /GET/i.

ліжко .. ліжко
Визначає діапазон. Допустимі верхні та нижні межі є конкатними літералами
машини довжини один і число. Наприклад, 0x10..0x20, 0..63 і 'a'..'z' є
дійсні діапазони.

ім'я_змінної
Посилається на визначення машини, присвоєне наданому імені змінної.

вбудована_машина
Існує кілька вбудованих машин. Усі вони є двома державними автоматами для
мета зіставлення загальних класів символів. Вони є:

будь-який Будь-який символ алфавіту.

ASCII Символи Ascii 0..127.

продовжити Розширені символи Ascii. Це діапазон -128..127 для знакових алфавітів
і діапазон 0..255 для беззнакових алфавітів.

альфа Символи алфавіту /[A-Za-z]/.

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

випускник Цифрові букви /[0-9A-Za-z]/.

знизити Символи нижнього регістру /[az]/.

верхній Символи верхнього регістру /[AZ]/.

xdigit Шістнадцяткові цифри /[0-9A-Fa-f]/.

ctrl Керуючі символи 0..31.

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

друк Символи для друку /[ -~]/.

точка Розділові знаки. Графічні символи, які не є буквено-цифровими
/[!-/:-@\[-`{-~]/.

простір Пробіл /[\t\v\f\n\r ]/.

нулю Рядок нульової довжини. Еквівалент '', "" та [].

порожній Порожній набір. Нічого не відповідає.

КОРОТКИЙ ОПЕРАТОР Посилання


Оператори згруповані за пріоритетом, група 1 є найнижчою, а група 6 — найвищою.

ГРУПА 1:

експр , експр
Об’єднайте машини разом без малювання переходів, встановлення початкового стану або
будь-які кінцеві стани. Початковий стан має бути явно вказаний з міткою "початок".
Кінцеві стани можуть бути задані за допомогою переходів an іпсілон до неявно
створений «кінцевий» стан.

ГРУПА 2:

експр | експр
Виробляє машину, яка відповідає будь-якому рядку в машині один або машині два.

експр & експр
Створює машину, яка відповідає будь-якому рядку, що є як в машині, так і в машині
два.

експр - експр
Створює машину, яка відповідає будь-якому рядку, що є в машині один, але не в ній
машина друга.

експр -- експр
Сильне віднімання. Відповідає будь-якому рядку в машині, який не має жодного рядка
у машині два як підрядок.

ГРУПА 3:

експр . експр
Створює машину, яка відповідає всім рядкам у машині один, а потім усі
струни в машині два.

експр :> експр
Конкатенація, захищена входом: завершує машину XNUMX при вході до машини XNUMX.

експр :>> експр
Конкатенація, захищена від завершення: завершує машину один, коли закінчується друга машина.

експр <: експр
Конкатенація з лівим захистом: надає більший пріоритет машинному.

ПРИМІТКА. Конкатенація є оператором за замовчуванням. Дві машини поруч один з одним без
оператор між ними призводить до операції конкатенації.

ГРУПА 4:

маркувати: експр
Додає мітку до виразу. Мітки можна використовувати за допомогою епсилонних переходів і
Оператори fgoto і fcall в діях. Також зауважте, що посилання на машину
визначення викликає неявне створення мітки з тим самим ім'ям.

ГРУПА 5:

експр -> етикетка
Малює епсилонний перехід до стану, визначеного міткою. Мітка має бути ім’ям
поточний обсяг. Переходи Epsilon розв’язуються, коли є оператори коми
оцінюється і знаходиться в корені дерева виразів машини
призначення/екземпляр.

ГРУПА 6: Дії

Дія може бути іменем, попередньо визначеним оператором дії, або може бути вказано безпосередньо
з '{' та '}' у виразі.

експр > дію
Вбудовує дію в початкові переходи.

експр @ дію
Вбудовує дію в переходи, які переходять у кінцевий стан.

експр $ дію
Вбудовує дію в усі переходи. Не включає незавершені переходи.

експр % дію
Вбудовує дію в очікувані переходи з кінцевих станів.

ГРУПА 6: EOF Дії

Коли викликається фінішна програма машини, виконуються дії EOF поточного стану.

експр >/ дію
Вставте дію EOF у початковий стан.

експр </ дію
Вставте дію EOF у всі стани, крім початкового стану.

експр $/ дію
Вставити дію EOF у всі стани.

експр %/ дію
Вставте дію EOF в кінцеві стани.

експр @/ дію
Вставте дію EOF у всі стани, які не є остаточними.

експр <>/ дію
Вставте дію EOF у всі стани, які не є початковим станом і не є
кінцеві (середні стани).

ГРУПА 6: Глобальний помилка Дії

Глобальні дії помилок зберігаються в станах, доки кінцевий автомат не буде повністю
побудований. Потім вони переносяться на переходи помилок, надаючи ефект a
дія за замовчуванням.

експр >! дію
Вставте дію глобальної помилки в початковий стан.

експр <! дію
Вставте глобальну дію помилки в усі стани, крім початкового стану.

експр $! дію
Вставте глобальну дію помилки в усі стани.

експр %! дію
Вставте глобальну дію помилки в кінцеві стани.

експр @! дію
Вставте глобальну дію помилки в усі стани, які не є остаточними.

експр <>! дію
Вставте глобальну дію помилки у всі стани, які не є початковим станом і є
не остаточні (середні стани).

ГРУПА 6: Місцевий помилка Дії

Локальні дії помилок зберігаються в станах, доки названа машина не буде повністю створена.
Потім вони переносяться до помилок переходів, надаючи ефект дії за замовчуванням для
частина загальної машини. Зауважте, що ім’я може бути опущено, і в цьому випадку
дія буде перенесено на дії з помилкою під час побудови поточної машини.

експр >^ дію
Вставте дію локальної помилки в початковий стан.

експр <^ дію
Вставте дію локальної помилки в усі стани, крім початкового.

експр $^ дію
Вставте дію локальної помилки в усі стани.

експр %^ дію
Вставте дію локальної помилки в кінцеві стани.

експр @^ дію
Вбудуйте дію локальної помилки в усі стани, які не є остаточними.

експр <>^ дію
Вбудуйте дію локальної помилки у всі стани, які не є початковим станом і є
не остаточні (середні стани).

ГРУПА 6: В стан Дії

Для стану дії зберігаються в станах і виконуються щоразу, коли машина переходить в a
держава. Це включає регулярні переходи та передачу керування, наприклад fgoto. Примітка
що налаштування поточного стану ззовні машини (наприклад, під час
ініціалізація) не вважається переходом у стан.

експр >~ дію
Вставте дію дії до стану в початковий стан.

експр <~ дію
Вставте дію до стану в усі стани, крім початкового стану.

експр $~ дію
Вставте дію до стану в усі стани.

експр %~ дію
Вставте дію до стану в кінцеві стани.

експр @~ дію
Вбудуйте дію до стану в усі стани, які не є остаточними.

експр <>~ дію
Вбудуйте дію до стану у всі стани, які не є початковим станом і не є
кінцеві (середні стани).

ГРУПА 6: З-держ Дії

Дії з стану виконуються щоразу, коли стан здійснює перехід на символ. Це
включає перехід помилки та перехід до самої.

експр >* дію
Вставте дію із стану в початковий стан.

експр <* дію
Вставте дію з стану в кожен стан, крім початкового стану.

експр $* дію
Вставте дію з стану в усі стани.

експр %* дію
Вставте дію із стану в кінцеві стани.

експр @* дію
Вбудуйте дію із стану в усі стани, які не є остаточними.

експр <>* дію
Вбудуйте дію із стану у всі стани, які не є початковим станом і не є
кінцеві (середні стани).

ГРУПА 6: Пріоритет Призначення

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

експр > Int
Призначає пріоритет int для всіх переходів, які залишають початковий стан.

експр @ Int
Призначає пріоритет int у всіх переходах, які переходять у кінцевий стан.

експр $ Int
Призначає пріоритет int у всіх існуючих переходах.

експр % Int
Призначає пріоритет int у всіх незавершених переходах.

Друга форма присвоєння пріоритету дозволяє програмісту вказати ім'я для якого
призначається пріоритет, що дозволяє взаємодіям перетинати межі визначення машини.

експр > (ім'я, int)
Призначає пріоритет int імені у всіх переходах, які залишають початковий стан.

експр @ (ім'я, int)
Призначає пріоритет int імені у всіх переходах, які переходять у кінцевий стан.

експр $ (ім'я, int)
Призначає пріоритет int імені у всіх існуючих переходах.

експр % (ім'я, int)
Призначає пріоритет int імені у всіх очікуваних переходах.

ГРУПА 7:

експр * Виробляє клініну зірку машини. Відповідає нулю або більше повторень
машина

експр **
Зірка Кліні з найдовшим матчем. Ця версія kleene star надає більший пріоритет
залишатися в машині, обгортаючись і починаючи знову. Цей оператор є
еквівалентно ( ( expr ) $0 %1 )*.

експр ? Створює машину, яка приймає дану машину або нульовий рядок. Цей оператор
еквівалентно ( expr | '' ).

експр + Виробляє машину, об’єднану з самою зіркою kleen. Збігається з одним або
більше повторень машини. Цей оператор еквівалентний ( expr . expr* ).

експр {не}
Створює машину, яка відповідає точно n повторів виразу.

експр {,n}
Створює машину, яка відповідає будь-якому місці від нуля до n повторень виразу.

експр {n,}
Виробляє машину, яка відповідає n або більше повторів виразу.

експр {n,m}
Створює машину, яка відповідає від n до m повторів виразу.

ГРУПА 8:

! експр Створює машину, яка відповідає будь-якому рядку, що не відповідає даній машині. Це
оператор еквівалентний ( *extend - expr).

^ експр Заперечення на рівні персонажа. Відповідає будь-якому окремому символу, якому не відповідає один
символ машина вираз.

ГРУПА 9:

( експр )
Примусове пріоритет для операторів.

ЗНАЧЕННЯ В НАЯВНОСТІ IN КОД БЛОКИ


fc Поточний персонаж. Еквівалент *p.

fpc Вказівник на поточний символ. Еквівалент стор.

fcurs Ціле значення, що представляє поточний стан.

ftargs Ціле значення, що представляє цільовий стан.

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

ЗАЯВА В НАЯВНОСТІ IN КОД БЛОКИ


fhold; Не пересувайтеся над поточним символом. Еквівалент --p;.

fexec ;
Встановлює для поточного символу щось інше. Еквівалент p = ( )-1;

fgoto ;
Перейдіть до машини, визначеної за допомогою .

fgoto * ;
Перейдіть до точки входу, заданої користувачем . Вираз має оцінюватися як ціле число
значення, що представляє стан.

fнаступний ;
Встановіть наступний стан як точку входу, визначену . Заява fnext
не відразу переходить у вказаний стан. Будь-який код дії, наступний за
оператор виконується.

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

fcall ;
Викликати машину, визначену за допомогою . Наступний лад стрибне до цілі
перехід, на якому викликається дія.

fcall * ;
Зателефонуйте в точку входу, вказану . Наступний лад стрибне до цілі
перехід, на якому викликається дія.

лад; Повернення до цільового стану переходу, на якому було здійснено останній виклик f.

fbreak;
Збережіть поточний стан і негайно вийдіть із машини.

КРЕДИТИ


Ragel був написаний Адріаном Терстоном[захищено електронною поштою]>. Вихід Objective-C
внесений Еріхом Оушеном. Вихід D надав Алан Вест. Вихід Ruby наданий
Віктор Гюго Борха. Генерація коду C Sharp створена Даніелем Таном. Внески до
Генерація коду Java від Коліна Флемінга. Генерація коду Go створена Джастін Танні.

Використовуйте ragel онлайн за допомогою служб onworks.net


Безкоштовні сервери та робочі станції

Завантажте програми для Windows і Linux

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

Команди Linux

Ad