英语法语西班牙语

Ad


OnWorks 网站图标

genparse - 云端在线

通过 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器在 OnWorks 免费托管服务提供商中运行 genparse

这是 genparse 命令,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器

程序:

您的姓名


genparse - 命令行解析器生成器

概要


生成解析 [选项] ...

商品描述


生成解析 是一个通用的命令行解析器生成器。 从简单和简洁
规范文件,您可以定义命令行参数和开关
喜欢能够传递给你的程序。 Genparse 创建 C、C++ 或 Java 代码
为你解析器。

Genparse 假设 GNU 获取选择长(3) 函数内置于您的 C 库中。 为了
Java 您可能必须为 Java 编译器指定适当的 jar 文件。

配置


生成解析 接受这些选项:

-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, --输出文件 姓名
输出文件名。 (默认 = parse_cl)

-m, ——长成员
对解析器类 (struct) 的成员使用长选项。 默认为
使用短表示,除非只定义了长表示
在 genparse 文件中。 如果设置了此选项,则会恢复行为。 这
然后使用长表示,除非只有短表示
定义。

-o, --输出文件 文件名
输出文件的根名称。 扩展名将由输出语言决定
并可能通过其他选择。 例如,当输出语言为 C 时,给出
此选项“file”的参数将导致“file.h”的输出文件名,
“file.c”和“file_cb.c”分别用于标头、解析器和回调文件。
默认值为“parse_cl”。

-p, --解析函数 FUNC
解析函数/类的名称。 此选项允许用户指定名称
执行实际命令的函数(对于 C)或类(对于 C++ 和 Java)
行解析(默认 = "Cmdline")。

-P, --许多印刷品
在单独的打印命令中为每个命令行参数输出帮助文本。

-q, - 安静的
安静模式 - 没有屏幕输出。

-s, --静态标题
保持生成文件顶部的描述性标题是静态的。 没有这个
选项 genparse 打印创建日期和时间、Linux 内核版本、内核构建
时间、计算机体系结构名称、主机名和用户名。

-v, - 版
输出版本。

-D, - 目录
存储结果的目录。

INPUT 文件


一个 genparse 规范文件(通常简称为“genparse 文件”)由一个数字组成
条目,每个命令行参数一个,形式为:

短名称[*|!] [/ 长名称[*|!][=选择名称]] 类型 [ 选项 ]

A 简称 是单个字符(小写或大写)或单个数字。 长名称 是一个
更长(更具描述性)的选项名称。 在命令行上,将在前面加上一个短名称
由单个破折号(例如“-a”)和长版本之前将有两个破折号(例如
' - 全部')。 如果不需要长参数名称,则可以仅指定短参数名称
(斜线不需要出现)。 为了指定一个只有长的参数
名称集 短名称没有. 可以有多个短选项,因此对于
示例设置 简称 'aA' 和 长名称 'all' 将允许指定
命令行开关为“-a”或“-A”或“--all”,所有这些都做同样的事情。

A * after 简称 or 长名称 使参数可选。 这可以指定为
空头和多头选项分开。

A ! after 简称 or 长名称 使选项成为布尔值。 这允许一个人结合一个
布尔短选项和长选项,带有可选或强制参数或
将布尔长选项与带有可选或强制参数的短选项组合在一起。
A ! 如果选项的类型是 .

类型 必须是其中之一 INT 浮动 坦克 绳子 or . 前四个应该是自
解释性的。 最后一个是不带参数的“开关”选项。 对于 C 输出,如果
--gnulib 在命令行上设置,另外还允许以下类型:
(对于长整数), 乌龙 (对于 unsigned long int), 最大输入 (对于 intmax_t,在 Gnulib 中定义),
最大单位 (对于 uintmax_t), 翻番.

下列 选项 支持。 它们可能以任何顺序出现,除了
说明 每个选项只能定义每个字段中的一个。

A 默认 折扣值 为参数。 对于字符串,这只是普通的默认值
价值,不管它是什么。 对于字符串,必须在大括号内指定默认值,并且
引号,并且可能包含空格,例如 {"my default value"}。 对于一个字符
参数必须用单引号括起来,例如'a' 或'\n'。

A 范围 括号内的值。 低值和高值在一个
范围说明符(“...”或“..”)。 高值或低值可能是
仅在一侧有界的范围省略。 该参数将被检查为
确保它在这个范围内。

A 回电话 功能. 在任何范围检查之后调用此函数
执行。 回调的目的是做有效性检查,更多的是
比可以在 genparse 文件中指定的复杂。 例如,你可能
编写一个程序,要求输入为素数、特定字符串
长度等

A 描述 在双引号中。 它是由印 用法() 功能。 如果一个
行是不够的,然后指定多个描述,每行一个,每个
他们用双引号。 如果描述从 Genparse 的第一列开始
文件然后它也将打印在第一列 用法() 功能。

A #gp_include 指令将指示 genparse 包含另一个 genparse 文件,
例如 #gp_include 另一个.gp. 包含的文件中只允许参数定义
文件,没有全局指令。

An __ERR_MSG__(err_txt) 指示。 指定打印的错误信息
当参数无法转换时。 例子: __ERR_MSG__("%s: 无效
争论”). 当转换函数
失败或参数超出范围时。 假设包含一个 %s 会的
替换为无法转换的 agrument。 仅当
Genparse 被调用 --gnulib, 否则忽略。

可以选择添加转换函数作为第二个参数,例如
__ERR_MSG__("%s: 无效 争论”, 引用参数). 这将导致错误消息
喜欢 错误 (退出_失败, 0, "%s: 无效 争论”, 引用参数 (选择)).

An __添加_标志__ 指示。 仅当命令行参数不存在时才有意义
已经是一个标志,在这种情况下,将添加一个额外的标志参数
如果在命令行上指定了命令行参数,则设置。 这个选项
如果参数具有可选参数,则自动设置。

A __代码__(陈述) 指示。 复制指定的代码语句
字面上地。 例子: __代码__(printf (“范围 x 放”);). 指定的代码
可以延伸超过一条线。 为了让 Genparse 有机会
正确缩进代码,不要将空格和制表符缩进混为一谈 __代码__
语句。

A __STORE_LONGINDEX__ 指示。 指示 Genparse 添加一个 interer 类型字段
到将设置为 longindex 变量的结果类(中的最后一个参数
对@code{getopt_long()} 的调用)。 这个新字段将与
结果字段与它相关但有一个 _李 后缀。

下列 全球化 指令 支持。 它们可以按任何顺序出现。

An 的#include 指令将指示 genparse 复制所述包含语句
进入由 genparse 生成的 C 或 C++ 代码,但不是任何头文件或回调
文件。

A #强制的 指令可以使用它使 usage() 函数调用更好。 它允许
您可以指定可能跟随开关的强制性命令行参数。 笔记
Genparse 不检查强制参数,它们只打印在
用法 () 功能与 __强制性__ 指令。 弃用: 强制性
参数 in #用法 部分 代替。

An #退出值 指令,指定发生错误时的退出值。
默认值为 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]。

__选项_简短__: 可用短格式选项的列表,例如 [ -abc ]。

__强制性__: #mandatory 定义的所有强制参数的列表
命令。 弃用: 清单 强制性 参数 此处 直。

__词汇表__:所有命令行选项的描述。 这是信息
以人类可读的形式给出参数定义。 它包括
参数类型、默认值、范围和任何注释。 一行包含
__词汇表__ 替换为参数的词汇表,任何其他文本
同一行被忽略。

__词汇表_GNU__: 与...一样 __词汇表__ 但在 GNU 风格。 可选地后跟一个
括号中的整数指定描述性文本的缩进(例如
__词汇表__(30))。 默认缩进为 24。

__STRING__ 个: 一个字符串常量,在 C 中可能是一个用
#define 预处理器命令。 这个宏可以从另一个文件导入使用
genparse 文件中的 include 指令。 生成 Java 输出时忽略。

__INT__(x): 一个整数常量,在 C 中可能是一个用
#define 预处理器命令。 这个宏可以从另一个文件导入使用
genparse 文件中的 include 指令。 生成 Java 输出时忽略。

__代码__(陈述): 与参数选项相同,见上文。

__不要_文档__: 任何包含此宏的行都不会打印在
用法() 功能。 可用于实现命令行参数,无需
在帮助屏幕上列出它们。

__荷兰__: 新队。 用于在自动换行时手动换行
已开启(见 #break_lines)。 生成 Java 输出时忽略。

__新_打印__:关闭活动打印命令并开始新的打印命令。

__评论__(文字): 在打印使用文本的代码中进行注释。

长选项后面可以跟一个 = 符号和一个可选的名称 选择名称 这可
在下面的描述中会提到。 它将用于 用法() 功能
只要。 例如下面的 genparse 行

s / block-size=SIZE int "使用 SIZE 字节的块"

将导致帮助屏幕中的以下行

[ -s ] [ --block-size=SIZE ](类型=整数)
使用 SIZE 字节的块

在 genparse 风格 (__词汇表__),或

-s, --block-size=SIZE 使用 SIZE 字节的块

以 GNU 风格(__词汇表_GNU__).

也可以在可选名称周围放置方括号以表示
参数是可选的。 然而,这对于生成的解析器没有意义。 用
* 后缀以使参数可选。

s* / block*[=SIZE] int “使用块。”
“如果没有给出 SIZE,那么他们将获得 1kB 的大小。”

将导致帮助屏幕中的以下行

-s, --block[=SIZE] 使用块。
如果未给出 SIZE,则它们将获得 1kB 的大小。


这是一个示例 genparse 文件:

#包括

/* 评论 */
我的回调()

i / 迭代 int 100 [10...1000] iter_callback()
“要运行的迭代次数。”

/*
*评论
*/

n / name string {"mike"} name_cb() "用户名"
s / str 字符串“测试字符串”
f 标志“愚蠢的标志!”

#usage_begin
用法:__PROGRAM_NAME__ __OPTIONS_SHORT__ 文件名
这只是一个愚蠢的测试程序。
__词汇表__
#usage_end

使用 onworks.net 服务在线使用 genparse


免费服务器和工作站

下载 Windows 和 Linux 应用程序

Linux 命令

Ad