gpt4 book ai didi

python - 如何在 Python 中使用 m4 以及处理缩进和空格

转载 作者:太空宇宙 更新时间:2023-11-04 05:53:23 24 4
gpt4 key购买 nike

在 Python 中使用 m4 是否有一个好的通用策略?具体来说,Python 的空白要求使使用 m4 有点尴尬。例如下面的程序:

def foo():
pushdef(`X',` $1 = $2')
include(test01.def)
popdef(`X')

foo()

test01.def

X(x,1)
X(y,2)
X(z,3)

生成python程序:

def foo():

x = 1
y = 2
z = 3



foo()

因此,缩进是关闭的。当然,我们可以用

def foo():
pushdef(`X',` $1 = $2')
include(test01.def)
popdef(`X')

foo()

但是,我觉得我们编辑的文件变得很难看,因为很难跟踪代码组织中的缩进。真的,我想要做的是使用第一个程序并让 m4 在包含之前吃掉前导空格。我不确定 m4 是否有可能吃掉前导空格。

此外,我知道有 Python 特定的宏实用程序。但是,我对使用这些感兴趣。我需要在许多不同的语言中使用这些 X 宏,例如在 C 和 LaTeX 中,我打算在每种情况下使用 m4,因为它很容易获得并且与语言无关。因此,如果可能的话,我真的在寻找 m4 解决方案。

最佳答案

像下面这样的东西可以接受吗?

define(INCLUDE_ON_NEW_LINE, `
include($1)')

`def foo():'
pushdef(`X',` $1 = $2')
INCLUDE_ON_NEW_LINE(`test01.def')
popdef(`X')

`foo()'

如果您觉得输出更令人满意,可以在上一行放置一个额外的 dnl。并非我所有的引述都是必需的,但我喜欢谨慎。

但老实说,我发现您的“丑陋”解决方案更容易理解。为什么 M4 代码要像 Python 代码一样缩进?

关于python - 如何在 Python 中使用 m4 以及处理缩进和空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29020766/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com