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

Ad


Значок OnWorks

genparse - онлайн у хмарі

Запустіть genparse у постачальнику безкоштовного хостингу OnWorks через Ubuntu Online, Fedora Online, онлайн-емулятор Windows або онлайн-емулятор MAC OS

Це команда genparse, яку можна запустити в постачальнику безкоштовного хостингу OnWorks за допомогою однієї з наших численних безкоштовних онлайн-робочих станцій, таких як Ubuntu Online, Fedora Online, онлайн емулятор Windows або онлайн емулятор MAC OS

ПРОГРАМА:

ІМ'Я


genparse - генератор синтаксичного аналізатора командного рядка

СИНТАКСИС


genparse [опції] файли...

ОПИС


genparse це загальний генератор синтаксичного аналізатора командного рядка. Від простого і лаконічного
файлу специфікації, ви можете визначити параметри командного рядка та перемикачі, які ви б хотіли
подобається мати можливість перейти до вашої програми. Genparse створює код C, C++ або Java
парсер для вас.

Genparse припускає, що GNU getopt_long(3) функція вбудована у вашу бібліотеку C. Для
Java, можливо, вам доведеться вказати відповідний файл jar для компілятора Java.

ВАРІАНТИ


genparse приймає такі варіанти:

-c, --cppext розширення
Розширення файлу C++. (за замовчуванням = cc)

-d Увімкніть ведення журналу.

-f, --файл журналу ім'я
Ім'я файлу журналу. (за замовчуванням = genparse.log)

-h, --допомога
Відобразити довідкову інформацію.

-g, --gnulib
Використовуйте бібліотеку сумісності GNU (Gnulib, див http://www.gnu.org/software/gnulib/).
Доступно лише для виходу C. Дозволяє деякі інші типи (unsigned long, intmax_t тощо)
для яких Gnulib надає функції перетворення.

-i, -- інтернаціоналізувати
Розмістіть макрос інтернаціоналізації _() навколо текстового виведення, щоб згенерована програма
можна інтернаціоналізувати за допомогою команди GNU gettext. Наразі лише реалізовано
для виходу C.

-l, --мова яз
Мова виведення. Підтримуються лише C, C++ та Java. Будь-яке з наведеного нижче
вкажіть C++: "c++", "cpp", "cc" і "cxx". Для Java використовуйте: "java" або "Java".
(за замовчуванням = c)

-o, --outfile ім'я
Ім'я вихідного файлу. (за замовчуванням = parse_cl)

-m, --довгі члени
Використовуйте довгі параметри для членів класу аналізатора (структури). За замовчуванням – до
використовуйте коротке представлення, за винятком випадків, коли визначено лише довге представлення
у файлі genparse. Якщо цей параметр встановлений, поведінка повертається. The
тоді використовується довге представлення, за винятком випадків, коли є лише коротке представлення
визначений.

-o, --outfile ім'я файлу
Коренева назва вихідного файлу. Розширення буде визначатися мовою виведення
і, можливо, іншими варіантами. Наприклад, якщо вихідною мовою є C, дає
цей параметр аргумент "file" призведе до імен вихідних файлів "file.h",
"file.c" і "file_cb.c" для файлів заголовка, синтаксичного аналізатора та зворотного виклику відповідно.
Значенням за замовчуванням є "parse_cl".

-p, --parsefunc функц
Назва функції/класу розбору. Ця опція дозволяє користувачеві вказати ім’я
функції (для C) або класу (для C++ і Java), що виконує фактичну команду
розбір рядка (за замовчуванням = "Cmdline").

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

-q, --спокійно
Тихий режим - немає виводу на екран.

-s, --статичні заголовки
Тримайте описовий заголовок поверх створених файлів статичними. Без цього
параметр genparse друкує дату та час створення, версію ядра Linux, збірку ядра
час, ім'я архітектури комп'ютера, ім'я хоста та ім'я користувача.

-v, -- версія
Вихідна версія.

-D, --каталог
Каталог для зберігання результатів.

ВХІД Фото


Файл специфікації genparse (зазвичай званий просто "файлом genparse") складається з числа
записів, по одному на параметр командного рядка, у вигляді:

короткі_імена[*|!] [/ довге_ім'я[*|!][=opt_name]] тип [ опції ]

A коротке ім'я є одним символом (маленьким або великим) або однією цифрою. довге_ім'я це
довша (більш описова) назва параметра. У командному рядку передує коротка назва
одним тире (наприклад, '-a'), а довгій версії передуватиме два тире (наприклад
'--все'). Якщо довге ім’я параметра не потрібне, ви можете вказати лише коротке ім’я
(і косу риску з'являтися не обов'язково). Щоб вказати параметр, який має тільки long
набір імен короткі_імена до NONE. Можна мати кілька коротких варіантів, так для
приклад налаштування коротке ім'я до 'aA' і довге_ім'я до 'all' дозволить вказати
перемикач командного рядка як '-a' або '-A' або '--all', усі вони роблять те саме.

A * після коротке ім'я or довге_ім'я робить аргумент необов'язковим. Це можна вказати для
короткі і довгі варіанти окремо.

A ! після коротке ім'я or довге_ім'я робить параметр логічним. Це дозволяє комбінувати а
логічний короткий параметр з довгим параметром з необов'язковим або обов'язковим аргументом або до
об’єднати довгий логічний параметр із коротким з необов’язковим або обов’язковим аргументом.
A ! не має сенсу, якщо тип опції є прапор.

тип має бути одним із Int плавати бак рядок or прапор. Перші чотири мають бути само
пояснювальний. Останній — це параметр "перемикання", який не приймає аргументів. Для виведення C і якщо
--gnulib встановлюється в командному рядку, а також допускаються такі типи: довго
(для довгого int), улонг (для непідписаного довгого int), intmax (для intmax_t, визначеного в Gnulib),
uintmax (для uintmax_t), подвійний.

Наступні опції підтримуються. Вони можуть з'являтися в будь-якому порядку і за винятком
описи для кожного параметра може бути визначено лише одне поле.

A дефолт значення для параметра. Для рядка це просто стандартне значення
вартість, яка б вона не була. Для рядків значення за замовчуванням має бути вказано в дужках і
лапки і можуть включати пробіли, наприклад {"моє значення за замовчуванням"}. Для символу
Параметр його потрібно взяти в одинарні лапки, наприклад, 'a' або '\n'.

A діапазон значень у дужках. Низькі та високі значення вказуються між a
специфікатор діапазону (або '...' або '..'). Може бути високе або низьке значення
пропущено для діапазону, обмеженого лише з одного боку. Параметр буде перевірено
переконайтеся, що він знаходиться в цьому діапазоні.

A Як передзвонити функція. Ця функція викликається після будь-якої перевірки діапазону
виконано. Мета зворотного виклику зробити перевірку дійсності, що більше
складніше, ніж можна вказати у файлі genparse. Наприклад, ви можете
написати програму, яка вимагає введення простих чисел, рядків певного
довжина тощо.

A description у подвійних лапках. Його друкує використання() функція. Якщо один
рядка недостатньо, тоді вкажіть кілька описів, по одному на рядок і кожен з
їх у подвійних лапках. Якщо опис починається з 1-го стовпця в Genparse
файл, то він також буде надрукований у 1-му стовпці в використання() функції.

A #gp_include директива вказуватиме genparse включити інший файл genparse,
наприклад #gp_include інший.gp. Допускаються лише визначення параметрів
файл, без глобальних директив.

An __ERR_MSG__(err_txt) директива. Визначає повідомлення про помилку, яке друкується
коли аргумент не може бути перетворений. приклад: __ERR_MSG__("%s: недійсний
аргумент"). Це повідомлення буде надруковано при виконанні будь-якої функції перетворення
невдало або коли аргумент вийшов за межі діапазону. Припускає містити один %s який буде
замінити на агрумент, який не можна було конвертувати. Доступно лише тоді, коли
Genparse викликається за допомогою --gnulib, інакше ігнорується.

За бажанням можна додати функцію перетворення як другий аргумент, напр
__ERR_MSG__("%s: недійсний аргумент", quotearg). Це призведе до повідомлення про помилку
як помилка (EXIT_FAILURE, 0, "%s: недійсний аргумент", quotearg (оптинд)).

An __ADD_FLAG__ директива. Має сенс, лише якщо параметр командного рядка не є
вже прапорець, у цьому випадку додається додатковий параметр прапора, який буде
встановлюється, якщо параметр командного рядка вказано в командному рядку. Цей варіант
автоматично встановлюється, якщо параметр має необов’язковий аргумент.

A __CODE__(виписки) директива. Зазначені оператори коду копіюються
буквально. приклад: __КОД__(printf («Параметр x було набір");). Вказаний код
може поширюватися більше ніж на одну лінію. Для того, щоб дати Genparse можливість
правильно робити відступ у коді, не змішувати відступи пробілу та табуляції в одному __КОД
Заява

A __STORE_LONGINDEX__ директива. Доручає Genparse додати поле типу interer
до класу результату, якому буде встановлено змінну longindex (останній аргумент у
виклик @code{getopt_long()}). Це нове поле отримає таку саму назву, що й
поле результату, з яким воно пов’язане, але з an _li постфікс.

Наступні в цілому директиви підтримуються. Вони можуть з’являтися в будь-якому порядку.

An #включати Директива дасть команду genparse скопіювати згаданий оператор include
у код C або C++, згенерований genparse, але не будь-які файли заголовків чи зворотний виклик
файли.

A #обов'язково можна використовувати директиву, щоб зробити виклики функцій usage() приємнішими. Це дозволяє
ви можете вказати обов'язкові параметри командного рядка, які можуть слідувати за перемикачами. Примітка
що Genparse не перевіряє наявність обов’язкових параметрів, вони лише друкуються в
використання () функція за допомогою __ОБОВ'ЯЗКИ__ Директиви. Застаріле: додавати обов'язковий
параметри in #використання розділ замість цього.

An #exit_value директива, яка визначає вихідне значення у разі помилки.
За умовчанням – EXIT_FAILURE.

A #розривні_лінії директива, яка визначає ширину, на яку рядки мають бути розірвані
на екрані довідки. Якщо ні #розривні_лінії вказана директива, то рядки будуть
надруковано точно так, як зазначено у файлі genparse.

If #no_struct вказано, то не буде визначена структура, яка буде заповнена
параметри командного рядка в згенерованому синтаксическом аналізаторі. Це може бути корисно, якщо ви
хочете додати свій власний код __КОД замість заяви. Підтримується лише для C
вихід.

A #export_long_options директива. Якщо #export_long_options визначається тоді a
функція #get_long_options() додано, що експортує масив longoptions, який використовується
#getopt_long(). Ця директива доступна лише для виведення C, для інших мов
це ігнорується.

A в цілому Як передзвонити функція. Ця функція корисна для перевірки взаємозалежностей
між параметрами. Взаємозалежність не може бути перевірена в кожній особистості
функція зворотного виклику, оскільки порядок виклику цих функцій змінюється,
залежно від порядку параметрів у командному рядку.

Genparse також генерує a використання() функція, яка друкує текст довідки для стандартного виведення про
використання програми, для якої Genparse генерує синтаксичний аналізатор. Його можна налаштувати за допомогою
вказавши розділ використання в нижній частині файлу Genparse. Якщо такого розділу немає
вказав, що за замовчуванням

#початок_використання
використання: __PROGRAM_NAME__ __OPTIONS_SHORT__ __MANDATORIES__
__ГЛОСАРИЙ__
#usage_end

Розділ використання починається з #початок_використання і закінчується #usage_end. Будь-який текст між є
надруковані дослівно, за винятком наступних ключових слів, які будуть замінені, як зазначено в списку
нижче:

__PROGRAM_NAME__: назва програми. У C і C++ назва програми вводиться в
argv[0].

__OPTIONS_SHORT__: Список доступних варіантів короткої форми, наприклад [ -abc ].

__ОБОВ'ЯЗКИ__: список усіх обов'язкових параметрів, визначених за допомогою #обов'язкових
команди. Застаріле: список обов'язковий параметри тут безпосередньо.

__ГЛОСАРИЙ__: Опис усіх параметрів командного рядка. Це інформація
наведено для визначення параметрів у зрозумілій людині формі. Вона включає в себе
тип параметра, за замовчуванням, діапазон і будь-які коментарі. Рядок, який містить
__ГЛОСАРИЙ__ замінюється на глосарій параметрів, будь-який інший текст у
той самий рядок ігнорується.

__GLOSSARY_GNU__: Такий же, як __ГЛОСАРИЙ__ але в стилі GNU. За бажанням слід an
ціле число в дужках, яке визначає відступ описового тексту (наприклад
__ГЛОСАРИЙ__(30)). Відступ за замовчуванням дорівнює 24.

__STRING__(и): рядкова константа, у C, ймовірно, рядковий макрос, визначений за допомогою
#define команда препроцесора. Цей макрос можна імпортувати з іншого файлу за допомогою
директива include у файлі genparse. Ігнорується під час створення виводу Java.

__INT__(x): ціла константа, у C, ймовірно, цілочисельний макрос, визначений за допомогою
#define команда препроцесора. Цей макрос можна імпортувати з іншого файлу за допомогою
директива include у файлі genparse. Ігнорується під час створення виводу Java.

__CODE__(виписки): Те саме, що і для параметрів, див. вище.

__НЕ ДОКУМЕНТ__: Будь-який рядок, який містить цей макрос, не буде надрукований у файлі
використання() функція. Може використовуватися для реалізації параметрів командного рядка без
перерахувати їх на екрані довідки.

__NL__: Новий рядок. Корисно для розриву рядків вручну під час автоматичного розриву рядків
ввімкнено (див #розривні_лінії). Ігнорується під час створення виводу Java.

__НОВИЙ_ДРУК__: закрийте активну команду друку та почніть нову.

__COMMENT__(текст): Коментар у коді для друку тексту використання.

за довгими параметрами може слідувати знак = і необов’язкове позначення opt_name що може
посилатися в наступному описі. Він буде використовуватися в використання() функція
тільки Наприклад, наступний рядок genparse

s / block-size=SIZE int "використовувати SIZE-байтові блоки"

призведе до наступного рядка на екрані довідки

[ -s ] [ --block-size=SIZE ] (тип=ціле число)
використовувати SIZE-байтові блоки

в стилі генпарсу (__ГЛОСАРИЙ__) Або

-s, --block-size=SIZE використовувати SIZE-байтові блоки

у стилі GNU (__GLOSSARY_GNU__).

Також можна поставити квадратні дужки навколо додаткової назви для вказівки
що аргумент необов’язковий. Однак це не має значення для згенерованого синтаксичного аналізатора. Використовуйте
* постфікси, щоб зробити аргумент необов'язковим.

s* / block*[=SIZE] int "використовувати блоки."
"Якщо SIZE не вказано, вони отримають розмір 1 КБ."

призведе до наступного рядка на екрані довідки

-s, --block[=SIZE] використовувати блоки.
Якщо SIZE не вказано, вони отримають розмір 1 КБ.

приклад


Ось зразок файлу genparse:

#включати

/* коментар */
my_callback()

i / ітерації int 100 [10...1000] iter_callback()
"Кількість ітерацій для виконання."

/*
* Коментар
*/

n / рядок імені {"mike"} name_cb() "Ім'я користувача"
s / str string "тестовий рядок"
f flag "дурний прапор!"

#початок_використання
використання: __PROGRAM_NAME__ __OPTIONS_SHORT__ назва файлу
Це лише дурна тестова програма.
__ГЛОСАРИЙ__
#usage_end

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


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

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

Команди Linux

Ad