首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Python中使用m4以及如何处理缩进和空格

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

Stack Overflow用户
提问于 2015-03-12 21:41:59
回答 1查看 1.3K关注 0票数 3

在Python中使用m4有一个很好的通用策略吗?具体来说,Python的空格要求使使用m4变得有些尴尬。例如,以下程序:

代码语言:javascript
复制
def foo():
    pushdef(`X',`    $1 = $2')
    include(test01.def)
    popdef(`X')

foo()

test01.def作为

代码语言:javascript
复制
X(x,1)
X(y,2)
X(z,3)

生成python程序:

代码语言:javascript
复制
def foo():

        x = 1
    y = 2
    z = 3



foo()

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

代码语言:javascript
复制
def foo():
pushdef(`X',`    $1 = $2')
include(test01.def)
popdef(`X')

foo()

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

此外,我知道有一些Python特定的宏实用程序。然而,我是,而不是对使用这些工具感兴趣。我需要在许多不同的语言中使用这些X宏,比如C语言和LaTeX宏,而且我打算在每种情况下都使用m4,因为它是现成的和语言无关的。因此,如果可能的话,我真的在寻找一个m4解决方案。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-12 22:16:39

这样的事情是否可以接受呢?

代码语言:javascript
复制
define(INCLUDE_ON_NEW_LINE, `
include($1)')

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

`foo()'

如果您发现输出更令人愉悦,可以在前面的行中添加一个额外的dnl。我并不是所有的引语都需要,但我喜欢谨慎。

但老实说,我觉得你的“丑陋”解决方案更容易理解。为什么要像M4代码那样缩进M4代码?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29020766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档