Python 3 预处理器
项目描述
一个python预处理器
该软件包旨在预处理原始 python 3 文件。
用法
pypre [ -i INPUT_FILE or --input INPUT_FILE ] [ -o OUTPUT_FILE --output OUTPUT_FILE ]
句法
预处理器的语法相当简单:
#define <CONST> [<VALUE>]
这定义了一个新的常量名称“CONST”,可选的值为“VALUE”。如果未指定 VALUE,则“CONST”将被赋值为None。“VALUE”必须是 Python 文字值。当前支持的原始对象是:
整数
漂浮
字符串
bytes 这还包括以下这些类型的原始集合:
列表
元组
听写
最后,值必须是文字。pypre 不能也不会解释包含#define d 常量名称的#define 。就像 C/C++ 预处理器一样,在源代码中找到#define d 常量的任何地方(包含指令的行除外)都将被其值替换。 警告:这还不检查名称是否在字符串文字或注释内。
#undef <常量>
删除由“CONST”指定的名称的定义。如果一开始没有定义名称,则不会发生任何事情(或者至少不应该发生)。
#ifdef <常量>
开始一段条件编译的代码。当且仅当以“CONST”命名的常量已定义时,直到匹配终止符的所有代码都将包含在输出中。(见#endif)
#ifndef <常量>
主要出于历史原因,这开始了一个类似于#ifdef的条件编译代码块,但当且仅当未定义命名常量“CONST”时才会包含封闭块。
#if <表达式>
pypre 的真肉。这开始了一个基于“EXPR”的真值的条件编译代码块。“EXPR”可以有两种形式。在第一种形式中,它采用单个值。它可以是 - 有点无用 - 一个可以作为#define的“VALUE”有效的 Python 文字,或者它可以是先前 - #define d 值的名称。在它的第二种形式中,“EXPR”看起来像:<VALUE> <OP> <VALUE>其中每个“VALUE”都是对第一种形式的“VALUE”有效的任何东西,而“OP”是一个布尔运算符。有效的运算符及其定义是:
=
等式运算符 - 测试两个值是否相等。
!
不等式运算符 - 测试两个值不相等。
<
小于运算符 - 测试第一个值是否严格小于第二个值。
>
大于运算符 - 测试第一个值是否严格大于第二个值。
#别的
如果在一个条件编译代码块中找到,将开始一段条件代码,当且仅当启动该块的指令和包含#else的行之间的行不包括在内时,该部分将被包括在内。
#万一
结束一段条件编译的代码。对于每一个#if、 #ifdef和ifndef,必须恰好有一个#endif。
保证值
PYTHON_VERSION
“(MAJOR, MINOR, MICRO)” 形式的元组,其中每个元素的类型为int。它将默认为用于运行 pypre 的解释器的版本信息。设置此项将相应地设置 PYTHON_MAJOR_VERSION、PYTHON_MINOR_VERSION和 PYTHON_MICRO_VERSION。
PYTHON_MAJOR_VERSION
一个表示 Python 主要版本号的int 。将默认为用于运行 pypre 的解释器的主要版本号。如果您通过同名的环境变量设置此变量,它会将PYTHON_MINOR_VERSION 和PYTHON_MICRO_VERSION都设置为0(除非也设置了它们,在这种情况下它们将使用它们定义的值)。
PYTHON_MINOR_VERSION
一个表示 Python 次要版本号的int 。将默认为用于运行 pypre 的解释器的次要版本号。如果您通过同名的环境变量设置此变量,它将PYTHON_MAJOR_VERSION设置 为3并将PYTHON_MICRO_VERSION设置为0。(除非也设置了它们,在这种情况下它们将使用它们定义的值)。
PYTHON_MICRO_VERSION
一个表示 Python 微版本号的int 。将默认为用于运行 pypre 的解释器的微版本号。如果您通过同名环境变量设置此变量,它将PYTHON_MAJOR_VERSION设置 为3并将PYTHON_MINOR_VERSION设置为0。(除非也设置了它们,在这种情况下它们将使用它们定义的值)。
PYTHON_IMPLEMENTATION
一个命名 Python 实现的str。默认为platform.python_implementation()的输出。一些示例包括:“CPython”、“IronPython”、“Jython”、“PyPy”。
操作系统
一个命名操作系统的str 。默认为 os.uname()输出的sysname部分。
拱
指定系统架构的字符串。默认为platform.machine()的输出
IS64
如果主机处理器是 64 位,则为 True,否则为 False。默认值是使用platform.architecture()输出的位部分 确定的。
__日期__
包含进行预处理的日期的文字str ,其格式与同名的 C++ 宏相同:“Mmm dd yyyy”。默认值是从time.strftime("%b %d %Y")的输出中获得的。
__时间__
包含进行预处理的本地时间的文字str ,格式与同名的 C++ 宏相同:“hh:mm:ss”。默认值是从time.strftime("%H:%M:%S")的输出中获得的。
__IPV6__
如果系统支持 IPv6 寻址,则为True ,否则为False 。默认值是从 socket.has_ipv6的值中获得的。
__BYTE_ORDER__
这是表示主机的本机字节顺序的值。它的默认值是使用结构 库计算出来的,没有特别的保证值。唯一可以依赖的是它将等于 __BIG_ENDIAN__或__LITTLE_ENDIAN__;从不两者兼而有之。实施注意事项:截至撰写本文时, __BIG_ENDIAN__设置为值1, __LITTLE_ENDIAN__设置为值0。这可能会发生变化,因为我可能需要指定位的字节顺序,或者上帝只知道未来还有什么。
FOO="(b'my overridden bytes', -1.1)" pypre
一些警告和免责声明:
不要在名称或值中使用空格(集合中的元素之间除外),因为这会立即使预处理器崩溃。
pypre 仅针对 Python 3 版本构建,并且仅针对 Python 3 版本进行测试。如果通过 Python 2 解释器运行它不起作用,请不要感到惊讶。(请注意,只要 pypre 本身通过 Python 3 运行,您就可以轻松地在 Python 2 代码中包含 pypre 指令,但如果您打算使用它,则需要您自己设置PYTHON_VERSION 。)
将PYTHON_VERSION和更具体的“MAJOR”/“MINOR”/“MICRO”变量之一设置为不兼容的值将导致预处理器立即退出。例如,您不能使用 PYTHON_VERSION=(2,7,0)和PYTHON_MAJOR_VERSION=3 - 确保您的环境有意义。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。