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

Ad


Значок OnWorks

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

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

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

ПРОГРАММА:

ИМЯ


genparse - генератор парсера командной строки

СИНТАКСИС


генпарс [кредита] файлов...

ОПИСАНИЕ


генпарс Генератор синтаксического анализатора командной строки. От простого и лаконичного
файл спецификации, вы можете определить параметры командной строки и переключатели, которые вы бы
хотелось бы иметь возможность перейти к вашей программе. Genparse создает код C, C ++ или Java для
парсер для вас.

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

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


генпарс принимает эти варианты:

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

-d Включите ведение журнала.

-f, --лог-файл имя
Имя файла журнала. (по умолчанию = genparse.log)

-h, --Помогите
Показать справочную информацию.

-g, -гнулиб
Используйте библиотеку совместимости с 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. Если этот параметр установлен, поведение отменяется. В
тогда используется длинное представление, кроме случаев, когда есть только короткое представление
определены.

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

-p, --parsefunc FUNC
Имя функции / класса парсинга. Эта опция позволяет пользователю указать имя
функции (для C) или класса (для C ++ и Java), который выполняет фактическую команду
синтаксический анализ строки (по умолчанию = "Cmdline").

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

-q, --тихий
Тихий режим - нет вывода на экран.

-s, --static-заголовки
Держите описательный заголовок поверх сгенерированных файлов статичным. Без этого
опция genparse выводит дату и время создания, версию ядра Linux, сборку ядра
время, имя архитектуры компьютера, имя хоста и имя пользователя.

-v, --версия
Версия вывода.

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

ВХОД ФАЙЛОВ


Файл спецификации genparse (обычно называемый просто файлом genparse) состоит из числа
записей, по одной на параметр командной строки, в форме:

короткие_имена[* |!] [/ длинное_имя[* |!] [=имя_опт.]] напишите [ кредита ]

A короткое имя представляет собой одиночный символ (строчный или заглавный) или одну цифру. длинное_имя - это
более длинное (более информативное) название опции. В командной строке будет предшествовать короткое имя
одним тире (например, '-a'), а длинной версии будут предшествовать два тире (например,
'--все'). Если длинное имя параметра не обязательно, вы можете указать только короткое.
(и косая черта появляться не обязательно). Чтобы указать параметр, имеющий только длинную
набор имен короткие_имена в NONE. Возможно несколько коротких вариантов, поэтому для
пример настройки короткое имя в 'aA' и длинное_имя to 'all' позволит указать
переключатель командной строки как '-a', '-A' или '--all', все они делают одно и то же.

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

A ! после короткое имя or длинное_имя делает параметр логическим. Это позволяет комбинировать
логическая короткая опция с длинной опцией с необязательным или обязательным аргументом или для
объедините логическую длинную опцию с короткой опцией с необязательным или обязательным аргументом.
A ! не имеет смысла, если тип опциона флажок.

напишите должен быть одним из Int плавать колесница string or флажок. Первые четыре должны быть самостоятельными.
пояснительный. Последний вариант - это «переключатель», который не принимает аргументов. Для вывода C и если
--gnulib задается в командной строке, дополнительно разрешены следующие типы: длинной
(для длинного int), ULONG (для unsigned long int), интмакс (для intmax_t, определенного в Gnulib),
uintmax (для uintmax_t), двойной.

Следующие кредита поддерживаются. Они могут появляться в любом порядке, кроме
описывающие для каждой опции может быть определено только одно из каждого поля.

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

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

A Перезвони функция. Эта функция вызывается после проверки любого диапазона.
выполненный. Цель обратного вызова - проверка действительности, которая больше
сложнее, чем можно указать в файле genparse. Например, вы можете
напишите программу, которая требует ввода простых чисел, строк определенного
длина и т. д.

A описание в двойных кавычках. Он печатается использование() функция. Если один
строки недостаточно, укажите несколько описаний, по одному на строку и каждое из
их в двойных кавычках. Если описание начинается с 1-го столбца в Genparse
файл, то он также будет напечатан в 1-м столбце в использование() функции.

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

An __ERR_MSG __ (err_txt) директива. Задает печатаемое сообщение об ошибке.
когда аргумент не может быть преобразован. Пример: __ERR_MSG __ ("% s: недействительный
аргумент "). Это сообщение будет напечатано, когда функция преобразования
не удалось или когда аргумент был вне допустимого диапазона. Предполагает наличие одного %s который будет
быть заменен агрументом, который не может быть преобразован. Доступно только когда
Genparse вызывается с помощью -гнулиб, в противном случае игнорируется.

При желании функция преобразования может быть добавлена ​​в качестве второго аргумента, например
__ERR_MSG __ ("% s: недействительный аргумент», цитата). Это привело бы к сообщению об ошибке
такое как ошибка (EXIT_FAILURE, 0, "% s: недействительный аргумент», цитата (выбор)).

An __ADD_FLAG__ директива. Имеет смысл, только если параметр командной строки не
уже является флагом, в этом случае добавляется дополнительный параметр флага, который будет
устанавливается, если параметр командной строки был указан в командной строке. Этот вариант
устанавливается автоматически, если параметр имеет необязательный аргумент.

A __CODE __ (операторы) директива. Указанные операторы кода копируются
буквально. Пример: __CODE __ (printf ("Параметр x законопроект установленный");). Указанный код
может занимать более одной строки. Чтобы дать Genparse возможность
правильно делайте отступы в коде, не смешивайте отступы между пробелами и табуляциями в одном __КОД__
заявление.

A __STORE_LONGINDEX__ директива. Указывает Genparse добавить поле типа interer
в класс результата, который будет установлен в переменную longindex (последний аргумент в
вызов @code {getopt_long ()}). Это новое поле получит то же имя, что и
поле результата, с которым оно связано, но с _ли постфикс.

Следующие Глобальный Директивы поддерживаются. Они могут появляться в любом порядке.

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

A #обязательный Директива может быть использована, чтобы сделать вызовы функции usage () более приятными. Это позволяет
вы должны указать обязательные параметры командной строки, которые могут следовать за переключателями. Примечание
что Genparse не проверяет обязательные параметры, они печатаются только в
пользования () функция с __ ОБЯЗАТЕЛЬСТВА__ Директивы. Устарело: Добавить обязательный
параметры in домен #использование . .

An #exit_value директива, которая указывает значение выхода в случае ошибки.
По умолчанию EXIT_FAILURE.

A #break_lines директива, определяющая ширину, до которой строки должны быть разбиты
на экране справки. Если нет #break_lines указана директива, тогда строки будут
печатается точно так, как указано в файле genparse.

If #нет_структуры указано, то не будет определена структура, которая будет заполнена
параметры командной строки в сгенерированном синтаксическом анализаторе. Это может быть полезно, если вы
хотите добавить свой собственный код с __КОД__ заявления вместо этого. Поддерживается только для C
вывод.

A #export_long_options директива. Если #export_long_options определяется, то
функция #get_long_options () добавлен, который экспортирует массив longoptions, используемый
#getopt_long (). Эта директива доступна только для вывода C, для других языков
это игнорируется.

A Глобальный Перезвони функция. Эта функция полезна для проверки взаимозависимостей
между параметрами. Взаимозависимости не могут быть проверены внутри каждого отдельного человека.
функция обратного вызова, потому что порядок, в котором эти функции будут вызываться, варьируется,
в зависимости от порядка следования параметров в командной строке.

Genparse также генерирует использование() функция, которая выводит на стандартный вывод текст справки о
использование программы, для которой Genparse генерирует синтаксический анализатор. Его можно настроить
указание раздела использования в нижней части файла Genparse. Если такого раздела нет
указал, что по умолчанию

#usage_begin
использование: __PROGRAM_NAME__ __OPTIONS_SHORT__ __MANDATORIES__
__ГЛОССАРИЙ__
#usage_end

Раздел использования начинается с #usage_begin и заканчивается #usage_end. Любой текст между
печатается дословно, за исключением следующих ключевых слов, которые будут заменены, как указано
ниже:

__ИМЯ_ПРОГРАММЫ__: Название программы. В C и C ++ название программы дается в
argv [0].

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

__ ОБЯЗАТЕЛЬСТВА__: Список всех обязательных параметров, определенных с помощью #mandatory.
команды. Устарело: Список обязательный параметры здесь непосредственно.

__ГЛОССАРИЙ__: Описание всех параметров командной строки. Это информация
даны для определения параметров в удобочитаемой форме. Он включает
тип параметра, значение по умолчанию, диапазон и любые комментарии. Строка, содержащая
__ГЛОССАРИЙ__ заменяется глоссарием параметров, любой другой текст в
та же строка игнорируется.

__ГЛОССАРИЙ_GNU__: Такой же как __ГЛОССАРИЙ__ но в стиле GNU. Необязательно, за которым следует
целое число в скобках, которое указывает отступ описательного текста (например,
__ГЛОССАРИЙ__(30)). Отступ по умолчанию - 24.

__STRING __ (s): Строковая константа, в C возможно строковый макрос, определенный с помощью
#define команда препроцессора. Этот макрос можно импортировать из другого файла, используя
директива include в файле genparse. Игнорируется при создании вывода Java.

__INT __ (х): Целочисленная константа, в C, вероятно, целочисленный макрос, определенный с помощью
#define команда препроцессора. Этот макрос можно импортировать из другого файла, используя
директива include в файле genparse. Игнорируется при создании вывода Java.

__CODE __ (операторы): То же, что и для параметров, см. Выше.

__НЕ_ДОКУМЕНТ__: Любая строка, содержащая этот макрос, не будет напечатана в
использование() функция. Может использоваться для реализации параметров командной строки без
перечисляя их на экране справки.

__НЛ__: Новая линия. Полезно для ручного разрыва строки при автоматическом разрыве строки
включен (см. #break_lines). Игнорируется при создании вывода Java.

__NEW_PRINT__: Закройте активную команду печати и начните новую.

__COMMENT __ (текст): Комментарий в коде для печати текста использования.

после длинных опций может стоять знак = и необязательное обозначение имя_опт. которые могут
упоминается в следующем описании. Он будет использоваться в использование() функция
Только. Например, следующая строка genparse

s / block-size = SIZE int "использовать SIZE-байтовые блоки"

приведет к следующей строке на экране справки

[-s] [--block-size = РАЗМЕР] (тип = ЦЕЛОЕ)
использовать SIZE-байтовые блоки

в стиле genparse (__ГЛОССАРИЙ__) Или

-s, --block-size = SIZE использовать SIZE-байтовые блоки

в стиле GNU (__ГЛОССАРИЙ_GNU__).

Также можно заключить необязательное имя в квадратные скобки, чтобы указать
что аргумент необязательный. Однако это не имеет значения для сгенерированного синтаксического анализатора. Использовать
* постфиксы, чтобы сделать аргумент необязательным.

s * / block * [= SIZE] int «использовать блоки».
«Если SIZE не указан, то они получат размер 1 КБ».

приведет к следующей строке на экране справки

-s, --block [= РАЗМЕР] использовать блоки.
Если SIZE не указан, то они получат размер 1 КБ.

ПРИМЕР


Вот пример файла genparse:

#включают

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

i / итераций int 100 [10 ... 1000] iter_callback ()
«Количество итераций для выполнения».

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

n / name string {"mike"} name_cb () "Имя пользователя"
s / str string "тестовая строка"
f flag "глупый флаг!"

#usage_begin
использование: __PROGRAM_NAME__ __OPTIONS_SHORT__ filename
Это всего лишь дурацкая тестовая программа.
__ГЛОССАРИЙ__
#usage_end

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


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

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

Команды Linux

Ad