这是可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行的命令切片,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器
程序:
您的姓名
切片——从 ASCII 文件中提取预定义的切片
概要
片 [-v[-y 产出政策[-o 切片术语:输出文件[@修改命令][#产出政策] ..]
[输入文件]
片 [-V[-h]
VERSION
1.3.8(10 年 2002 月 XNUMX 日)
商品描述
输入 原则
这个 片 程序读取 输入文件 (或来自 标准输入 if 输入文件 不是给定的或相等的
``"-"'') 并将其已经准备好的 ASCII 内容划分为可能重叠的区域,
被称为 片. 这些切片由开始和结束定义的封闭块确定
必须是分隔符 已经 在文件中。 这些块分隔符使用语法
[姓名:...:姓名]
或者(如果没有可能的误解,即没有重叠或
堆叠切片)
[姓名: ... :]
这个 您的姓名 标识符必须与正则表达式 ``"[_A-Z0-9]+"'' 匹配,即
您的姓名 是仅由大写字母、数字或下划线字符组成的字符串。
可以有任意多个这样的切片定义,也可以不止一个
同名切片。 结果切片是所有相同命名切片的并集。
实际上用它来在不相干的和平中传播一大片 输入文件.
输出 选择 方案
最终输出数据由切片名称和集合组成的切片项计算
理论运算符。 识别以下语法(按顺序 LR(1)语法解析)
对于切片术语:
SLICE_TERM ::= "姓名"
切片 NAME 本身。 此名称必须与正则表达式 ``"[_A-Z0-9*{}]+"'' 匹配。
这里有两种情况:“NAME”要么是一个普通的切片名称,要么只包含
大写字母、数字或下划线字符。 或者是通配的切片名称
用星号字符表示。
第一个变体只是扩展为完全命名为“NAME”的所有切片的联合。 这
第二个变体扩展为与通配符匹配的所有切片的并集
模式“名称”。 这里星号的语义是无或任意数量
人物。 有一种特殊情况,当星号后紧跟
括在大括号内的字符,这意味着没有或任意数量的字符,但不是
这个字符序列。
SLICE_TERM ::= "!NAME" | “~名字”
这个 补充 切片名称(即 ALL\NAME)。
在公式中:{x in ALL: x 而不去 在NAME}
SLICE_TERM ::= "NAME1xNAME2", "NAME1^NAME2"
这个 异或 切片 NAME1 和切片 NAME2 之间的关系。 在集合论中也
被称为 对称 差异: (NAME1uNAME2)\(NAME1nNAME2) 或者
(NAME1n!NAME2)u(!NAME1nNAME2)。
在公式中:{x in ALL: (x in NAME1 or x in NAME2) and not (x in NAME1 and x in
NAME2)}。
SLICE_TERM ::= "NAME1\NAME2", "NAME1-NAME2"
这个 差异 切片 NAME1 和切片 NAME2,即 NAME1 减去 NAME2。
在公式中:{x in ALL: x in NAME1 和 x 而不去 在NAME2}
SLICE_TERM ::= "NAME1nNAME2" | “NAME1%NAME2”
这个 路口 切片 NAME1 和切片 NAME2。
在公式中:{x in ALL: x in NAME1 和 NAME2} 中的 x
SLICE_TERM ::= "NAME1uNAME2", "NAME1+NAME2"
这个 工会 切片 NAME1 和切片 NAME2。
在公式中:{x in ALL: x in NAME1 or NAME2} 中的 x
SLICE_TERM ::= "(" SLICE_TERM ")"
分组切片术语。 使用它来强制不同的评估顺序。 默认情况下,
所有运算符都是左结合的,除了右结合的补码。
运算符从低到高的优先级如下所示:
- 恩!
先进的 选择: 切片 楼层
由于切片可以重叠和堆叠,因此为每个切片分配了一个定义级别
在解析输入时切片。 这些级别的范围从 1 到遇到的最大值(
0 级是整个文件,即“ALL”)。 当一个切片开始时,它被分配到最低的
free level,从level 1开始,只要一层在使用,就不能分配
直到看到相应切片的结束分隔符。
一个例子:
[A:[B::B]:A][C:[D:[E::C]:D][F::E]:F]
3 E---------E
2 B--B D--------D
1 A--------A C--------C F--------F
0
这里切片 A 被分配了级别 1。然后 B 被分配了级别 2,因为级别 1 仍在
由 A 使用。然后到达 B 的末尾,释放级别 2。 然后到达A的末尾
并且级别 1 现在也是空闲的,因此 C 再次被分配了级别 1。 现在只使用1级,
所以 D 被分配了第 2 级。然后 E 被分配了第 3 级。然后看到了 C 的结尾和水平
1人获释。 然后看到 D 的结尾并释放第 2 级。 现在 F 开始,因为只有
3 级正在使用中,它被分配了 1 级。 然后 E 的结尾释放了第 3 级和结尾
F 释放级别 1。最后没有级别仍在使用。 这表明切片是
纠正。
如果在此过程结束时还有任何已使用的级别,则表明输入错误
和 片 以显示仍然打开的切片的错误消息进行响应。
这种复杂的级别机制对于特定的粒度集合操作是必需的
切片应仅包含或排除。 所以,为了让生活更轻松,一些伪切片
自动定义:
“定义”
恰好在第 n 级 (0 <= n <= oo) 的所有用户定义切片的并集。
“UNDEFn”
所有人的联合 不- 用户定义的切片正好在 n 级(0 <= n <= oo)。 这个
实际上只是“!DEFn”。
“防御”
所有用户定义的切片的并集在 所有 级别,从级别开始 1。 这
实际上是所有“DEFn”切片的联合。
“联合国发展基金”
所有人的联合 不- 用户定义的切片在 所有 水平,从 1。 这
实际上只是“!DEF”。
“全部”
整个文件。 这实际上只是“UNDEF0”,因为在级别 0 没有用户
定义的切片,所以所有的都是未定义的。
您的姓名“ @”
这是切片 您的姓名 减去所有具有 min(NAME) <= n <= oo 的“DEFn”切片的并集。
这里 min(NAME) 是最低级别加一,其中 您的姓名 曾经发生过。 你可以阅读
这是“NAME,没有覆盖它的更高级别的所有其他切片”。 这个
听起来有点疯狂,但实际上是最重要的构造。 尝试
理解它或者你的切片术语变得非常复杂。
配置
[-y 产出政策]
此标志根据事件更改输出策略:“u”当未定义集是
遇到,“w”表示不匹配的通配符集,“z”表示输出为空,“s”表示输出
仅由空白字符组成。 每个字母后跟一个数字告诉
哪个动作绑定到此类事件:0 忽略此类事件,1 显示警告
消息并继续,2 跳过相关文件并继续,3 以中止
错误信息。
该标志由一个或多个事件规范组成,默认为“u0w0s0z0”。
[-o 切片术语:输出文件[@修改命令][#产出政策] ..]
这会将输出重定向到一个文件。 通常整个文件将被发送到“STDOUT”
(与“所有:-”相同)。 您可以使用此选项 更多 比 一旦 输出到多个
文件,而相应的 切片术语 确定将包含哪些输出数据
进入每个输出文件。
可选的 修改命令 字符串用于指定选项 CHMOD 命令,
这适用于 输出文件 写完之后。 例如使用 ``"a+r"'' 来确保
该文件可由 ``"u+x"'' 的网络服务器读取以创建具有执行的文件
位集(通常用于带有“XBitHack”选项的网络服务器上的 SSI 文件
可用)。
可选的 产出政策 字符串仅允许更改此输出的输出策略
文件而不改变其全局含义。 有关输出策略的信息,请参见上文。
这里要小心:当你在里面使用括号或星号时 切片术语 你必须
确保它真的传递给 片 这样,即通常你必须逃避这些
使用的外壳插值的字符。 通过添加反斜杠来做到这一点
在这些字符前面或只是用单个包围完整的选项参数
引号 ('')。
-v 这将设置详细模式,其中将在控制台上提供一些处理信息
用于调试目的。
-V 显示版本标识字符串。
-h 显示使用页面。
特别 特点
有时,能够直接在其中提供命令行选项非常有用
输入文件,例如设置一个或多个 -o 选项。 为了这 片 认识
表格的线条
%!切片选项
在输入文件中并自动将 OPTIONS 添加到参数行选项。 这些
行必须从第 0 列开始。
计费示例:
%!slice -oTOC:内容.txt
例
假设以下简单的多语言文章文件 文章源文件, 用 HTML 编写:
[EN:Titlepage:][DE:Titelseite:]
[EN:标题本身:][DE:Der Titel selbst:]
[EN:...英文摘要...:]
[DE:...德国Zusammenfassung...:]
[CN:...英文文本...:]
[DE:...德语文本...:]
命令
切片 -o ENuUNDEF:article.html.en -o DEuUNDEF:article.html.de
然后在文件中创建以下内容:
文章.html.en:
标题页
标题本身
...英文摘要...
...英文文本...
文章.html.de:
标题网站
标题自我
... Deutsche Zusammenfassung...
...德语文本...
限制
当前的实现只处理匿名结束分隔符 ``":]"'' 正确清晰
不可能出现错误解释的情况,即没有发生重叠的情况。 为了
实例在
...[A:...[B:...:A]...:]...
结束分隔符未正确分配给“B”切片。 所以使用的时候要注意
重叠情况下的匿名结束分隔符。 纯堆叠喜欢
...[A:...[B:...:]...:]...
被允许并正确处理,但仅当您将其解释为
...[A:...[B:...:B]...:A]...
版权
版权所有 (c) 1997-2002 Ralf S. Engelschall。
版权所有 (c) 1999-2002 Denis Barbier。
使用 onworks.net 服务在线使用切片