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