#pattern-matching #pattern #matching #regex #rosie #fsa

sys rosie-sys

一个用于构建或链接到 librosie 以访问 Rosie 模式语言的包

2 个稳定版本

1.3.1 2022年6月7日
1.3.0 2022年6月5日

#1755文本处理


用于 rosie

MIT/Apache

480KB
12K SLoC

C 11K SLoC // 0.2% comments Lua 671 SLoC // 0.1% comments Rust 500 SLoC // 0.2% comments Shell 102 SLoC // 0.1% comments RPM Specfile 56 SLoC Perl 9 SLoC // 0.4% comments

rosie-sys 概述

此包构建或链接 librosie 库,用于 Rosie 匹配引擎和 Rosie 模式语言(rpl)。

希望在使用 Rust 中使用 Rosie 的大多数用户可能应该使用 rosie 包

构建与链接 librosie 的比较

此包可以从源代码构建 librosie 或链接到现有库。

从源代码构建

要构建 librosie,请在 [dependencies] 部分指定 build_static_librosie 功能。

rosie-sys= {features= ["build_static_librosie"] }

将 rosie 作为 C / FFI 依赖项构建

如果您使用此包构建另一个 C (非 Rust) 项目的依赖项,则可以使用 DEP_ROSIE_INCLUDE 环境变量从 Cargo 构建脚本访问 rosie 头文件。此外,构建的 librosie 库的位置将由 DEP_ROSIE_LIB 环境变量指定。

安装与部署

Rosie 依赖于一个 rosie_home 目录,其中包含包括标准模式库在内的支持文件。此包生成所需的文件,可以从构建 out 目录或从由 ROSIE_HOME 环境变量指定的位置获得,该环境变量可通过 Cargo 构建脚本访问。

在部署使用Rosie的应用程序时,您必须确保这些文件安装在了目标机器的某个位置。在类Unix系统中,规范位置是:/usr/local/lib/rosie/,尽管您也可以将它们安装在其他位置。例如,它们可以放置在您的应用程序目录中或在Mac OS X .app包目录中。

如果文件安装在非标准位置,您必须通过调用[rosie_home_init]初始化Rosie。或者,如果您正在使用高级rosie crate,请调用Rosie::set_rosie_home_path()

链接到共享Rosie库

要将系统上已安装的共享librosie链接到您的应用程序中,请在您的Cargo.toml文件中的[dependencies]部分添加以下内容:

rosie-sys= {features= ["link_shared_librosie"] }

在Cargo之外获取Rosie

有关获取和构建Rosie的完整信息,请参阅此处。然而,Rosie也可能通过您选择的包管理器提供。例如,如果您的操作系统支持,您可以运行以下命令之一

  • dnf install rosie
  • brewinstall rosie

或者,如果您愿意通过Makefile安装Rosie,请参阅此处

注意:此crate已针对librosie版本1.3.0进行测试,尽管它可能与其他版本兼容。

更新此crate中的Rosie源代码

此crate中的许多文件是从主Rosie源或构建产品中复制的。

以下是刷新源文件的脚本。这假设rosie-sys项目已作为rosie主项目的同级项目检出,并且Rosie项目已成功构建,这会拉取子模块并创建rosie_home输出文件。

cp -r rosie/src/librosie rosie-sys/src/librosie
cp -r rosie/src/rpeg/compiler rosie-sys/rpeg/compiler
cp -r rosie/src/rpeg/include rosie-sys/rpeg/include
cp -r rosie/src/rpeg/runtime rosie-sys/rpeg/runtime
cp -r rosie/submodules/lua-cjson rosie-sys/src/lua-cjson
cp rosie/build/lib/rosie/CHANGELOG rosie-sys/src/rosie_home/CHANGELOG
cp rosie/build/lib/rosie/CONTRIBUTORS rosie-sys/src/rosie_home/CONTRIBUTORS
cp rosie/build/lib/rosie/LICENSE rosie-sys/src/rosie_home/LICENSE
cp rosie/build/lib/rosie/README rosie-sys/src/rosie_home/README
cp rosie/build/lib/rosie/VERSION rosie-sys/src/rosie_home/VERSION
cp -r rosie/build/lib/rosie/lib rosie-sys/src/rosie_home/lib
cp -r rosie/build/lib/rosie/rpl rosie-sys/src/rosie_home/rpl

注意 lua-cjson文件有一些更改,以消除一些不会向上传播的警告。由于它不太可能发生变化,也许可以跳过从上游获取lua-cjson。

依赖关系

~0–1.5MB
~20K SLoC