# ANN: Concatenative Macro Processor

## Mark W. Humphries — 2009-06-23 01:09:55

    Minimac (http://freshmeat.net/projects/minimac-macro-processor) is a

    minimalist, general purpose text macro processor.

    It uses an explicit argument stack, and user functions are defined by concatenation.

    The software is currently in alpha release.

    Example: 99 bottles of beer (http://99-bottles-of-beer.net/)

        `drink! ( u -- ) `{continue}${#}

        this-many-bottles of beer on the wall, this-many-bottles of beer.

        Take one down and pass it around, fewer-bottles of beer on the wall.

        {repeat}`

        `oh-no! ( -- ) `No more bottles of beer on the wall, no more bottles of beer.`

        `please! ( u -- u ) `{#}

        Go to the store and buy some more, this-many-bottles of beer on the wall.`

        `this-many-bottles ( u -- u ) `[{dup} 0& ~no more bottles~& {case} 1& ~1 bottle~& {case} {.} ~ bottles~]`

        `fewer-bottles ( u -- u-1 ) `{--}$this-many-bottles`

        99& drink!

        oh-no!

        99& please!

    Cheers,

     Mark Humphries

## eas lab — 2009-07-04 12:48:59

    Just to keep the pipes exercised

     [I suspected that I'd been cut-off of cat-list

     [what's happening in the 1st-world/N-hemisphere

       'for' no cat-list-traffic ?] ]

    I'm asking what's Minimac's minimal-syntax ?

    I/we don't just go off to httpS on a whim.

    ANNs should contain minimum info to justify

    further effort investment.

    How would it:

    remove all sequences of lines,

      starting from <string1> upto <string2> ?

    == TIA.

     On 6/23/09, Mark W. Humphries <mwh@...> wrote:

    > Minimac (http://freshmeat.net/projects/minimac-macro-processor) is a

    > minimalist, general purpose text macro processor.

    > It uses an explicit argument stack, and user functions are defined by

    > concatenation.

    > The software is currently in alpha release.

    >

    > Example: 99 bottles of beer (http://99-bottles-of-beer.net/)

    >

    >     `drink! ( u -- ) `{continue}${#}

    >     this-many-bottles of beer on the wall, this-many-bottles of beer.

    >     Take one down and pass it around, fewer-bottles of beer on the wall.

    >

    >     {repeat}`

    >

    >     `oh-no! ( -- ) `No more bottles of beer on the wall, no more bottles of

    > beer.`

    >

    >     `please! ( u -- u ) `{#}

    >     Go to the store and buy some more, this-many-bottles of beer on the

    > wall.`

    >

    >     `this-many-bottles ( u -- u ) `[{dup} 0& ~no more bottles~& {case} 1& ~1

    > bottle~& {case} {.} ~ bottles~]`

    >

    >     `fewer-bottles ( u -- u-1 ) `{--}$this-many-bottles`

    >

    >     99& drink!

    >     oh-no!

    >     99& please!

    >

    >

    >

    > Cheers,

    >  Mark Humphries

    >

    >

## Mark W. Humphries — 2009-07-05 02:35:01

    --- In concatenative@yahoogroups.com, eas lab <lab.eas@...> wrote:

     >

    > Just to keep the pipes exercised

    >  [I suspected that I'd been cut-off of cat-list

    >  [what's happening in the 1st-world/N-hemisphere

    >    'for' no cat-list-traffic ?] ]

    >

    > I'm asking what's Minimac's minimal-syntax ?

    >

    > I/we don't just go off to httpS on a whim.

    > ANNs should contain minimum info to justify

    > further effort investment.

    >

    > How would it:

    > remove all sequences of lines,

    >   starting from <string1> upto <string2> ?

    >

    > == TIA.

     Hi,

    Thanks for your questions.

    Minimac has almost no syntax, basically a set of special characters that trigger behaviors (quoting, escaping, naming, compiling, etc...) and a dictionary (i.e. symbol table) of built-in macros that is extended at runtime with user macro definitions. See the draft manual for more info: http://code.google.com/p/minimac/wiki/manual

    As to your second question on removing sequences of lines, minimac is a macro processor similar in purpose to m4, i.e. it expands macro directives contained in a source file, what you're describing is a job better suited for a stream editor.

    Cheers,

     Mark Humphries

     http://freshmeat.net/projects/minimac-macro-processor