【问题标题】:How to make custom reserved keywords in python3 [duplicate]如何在python3中制作自定义保留关键字[重复]
【发布时间】:2021-03-23 22:04:11
【问题描述】:

我想知道我是否可以使普通文本具有类似于保留字的功能。 例如: "and" 是python中的保留关键字,我想做的是,将与“and”相同的权力赋予另一件事,让我们说“abc”

所以

w, i = 0,0
if w == 0 and i == 0:
   print("True")
w, i = 0,0
if w == 0 abc i == 0:
   print("True")

将是相同的。任何人都知道这是否可行,我该怎么做。

谢谢。

【问题讨论】:

  • 如果不分叉解释器本身并在那里添加您的操作员,不。 Some operations and operators already have Python hooks,但通常你只需要编写一个函数。
  • 您好,只是出于好奇,您为什么需要这样的功能?
  • 没有与 c++ 宏 AFAIK 等效的 python。
  • @LCMa,只是想知道它是否可能
  • @Masklinn ,我在一个名为 SLY 的库中找到了我的答案,它是帮助制作 Lexer 和 Parser 的库,但是通过使用它,我可以实现类似于 python 的新语法和新关键字或任何其他语言,我们可以将它们添加到我们需要的任何程序中,不仅是在制作新语言时。

标签: python python-3.x python-3.8


【解决方案1】:

这将涉及将怪异语法转换为合法 Python 的预处理器,或从头开始编辑和重建 Python 解释器以支持您的新关键字。很可能,它会破坏某些东西,例如在这种情况下,abc 已经是 Python 附带的一个模块,并且将 import abc 解析为 import and 将导致重大问题(IIRC,核心解释器有效地依赖于 abc 模块,因为 ABC 被全部使用在那个地方)。

所以你的问题的真正答案是:

  1. 不要这样做
  2. 如果你这样做了,这是一个超出 StackOverflow 范围的项目方式(我们不会为你重写解释器)

【讨论】:

  • 呵呵,我也这么认为,不过求好奇 谢谢回答
  • 3.参见项目符号 #1
  • 我在一个名为 SLY 的库中找到了我的答案,它是帮助制作 Lexer 和 Parser 的库,但是通过使用它我可以实现类似于 python 或任何其他语言的新语法和新关键字,我们可以将它们添加到我们需要的任何程序中,不仅是在制作新语言时。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-19
  • 1970-01-01
  • 1970-01-01
  • 2013-04-16
  • 2017-04-10
  • 1970-01-01
  • 2017-01-15
相关资源
最近更新 更多