• 关于 m4 文本处理引擎


    使用 m4 开源项目还是挺多的,之前看到都有的怕怕的,选择自动略过。今天鼓起勇气来学习一波。

    首先 m4 processor 是一个“宏定义”处理器,也就是说,他是一个纯粹的文本处理器,干些管理模板,使用模板来进行文本替换的活。m4 的应用灰常广泛,只是我们很少关注它的存在罢了。

    为什么你会经常看到 m4 呢?其中一个原因可能是你经常使用 autoconf 管理的代码包。autoconf 使用它来产生配置脚本。

    m4 的另一个用途是代码的自动生成,当然,这样生成的代码,debug 可能会比较麻烦。据说,m4 会让那些狂热的程序员上瘾,使其痴迷于使用 m4 来解决问题。。。好像很可怕。

    手册地址: http://www.gnu.org/software/m4/manual/m4.html

    一个简单例子

    假设我们有一个文件 foo,其内容为 bar,比如

    $ cat foo
    bar

    那么,我们执行下面一句:

    m4 -Dbar=hello foo -Dbar=world foo

    将得到结果:

    $ m4 -Dbar=hello foo -Dbar=world foo
    hello
    world

    这里,我们先后定义了宏 bar=hello 和 bar=world。然后,两次引用文件foo,并对其内容进行替换。所以,我们分别得到了两次的处理结果 hello 和 world。

    我们可以在命令行进行宏定义,同样,也可以在文本中进行宏定义。所以,这个例子的另一个版本如下。

    我们有一个文件,hello.m4,内容如下:

    define(`hello', `Hello, World')
    hello, welcome to m4!

    使用 m4 来执行这个文件:

    m4 hello.m4

    那么,我们得到结果:

    Hello, World, welcome to m4!

    在 hello.m4 中,我们定义了宏 hello=‘Hello, World’,那么,经过 m4 处理后的后一句,hello 就被替换成了 Hello, World!

  • 相关阅读:
    动手动脑5
    每日日报
    每日日报
    每日日报
    每日日报
    每日日报
    每日日报
    每周总结
    2020/10/13
    2020/10/20
  • 原文地址:https://www.cnblogs.com/pied/p/6134151.html
Copyright © 2020-2023  润新知