Skip to main content

Python 3 预处理器

项目描述

一个python预处理器

该软件包旨在预处理原始 python 3 文件。

用法

pypre [ -i INPUT_FILE or --input INPUT_FILE ] [ -o OUTPUT_FILE --output OUTPUT_FILE ]
如果没有给出输入文件,pypre 将读取标准输入上的输入。同样,如果输出文件不是
给定,pypre 会将输出写入标准输出。

句法

预处理器的语法相当简单:

  • #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#ifdefifndef,必须恰好有一个#endif

保证值

以下值是在运行时定义的,可以用环境变量覆盖
同名:
  • PYTHON_VERSION

    “(MAJOR, MINOR, MICRO)” 形式的元组,其中每个元素的类型为int。它将默认为用于运行 pypre 的解释器的版本信息。设置此项将相应地设置 PYTHON_MAJOR_VERSIONPYTHON_MINOR_VERSIONPYTHON_MICRO_VERSION

  • PYTHON_MAJOR_VERSION

    一个表示 Python 主要版本号的int 。将默认为用于运行 pypre 的解释器的主要版本号。如果您通过同名的环境变量设置此变量,它会将PYTHON_MINOR_VERSIONPYTHON_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'\x69', 15.2),您必须提供一个值
形式的 2 元组(bytesfloat)。在 bash 中,这个例子看起来像:
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 - 确保您的环境有意义。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

pypre-0.3.0.tar.gz (26.5 kB 查看哈希

已上传 source

内置分布

pypre-0.3.0-py3-none-any.whl (17.0 kB 查看哈希

已上传 py3