Re: Generating loops

"Raphael 'kena' Poss" <[email protected]>
Newsgroups gmane.comp.gnu.m4.general
Message-ID <[email protected]>
Hi Gary,

Op 21 sep 2010, om 12:53 heeft Gary het volgende geschreven:

> I should say, I'm not married to this syntax. If something else is
> easier to process then as long as it is readable as a "for" construct
> I'm not fussed.

It looks like you are tempted to use M4 to implement a compiler of sorts. While M4 is theoretically powerful enough to do so, experience has shown me that it hurts in the long run. Actually I am involved a project which more-or-less does what you are doing (the syntax to solve your problem could be "for(i, 1, 12)" instead of "for i = 1 to 12" like in C), but: after you have solved your syntax issue your development will become painful for two reasons:

1) as your substitution rules become more and more complex (you *will* want to add more and more features to your toy language), they will become gradually less maintainable

2) there are transformations that are non-trivial to perform with M4; say for example you want to define a syntax like:

    PREFIX(f, g, h) code... SUFFIX

and you want this to expand to:

    f(code...)  g(code...)  h(code...)

or anything of the kind where the same piece of input code is processed multiple times in different ways, your M4 code will quickly become unreadable.

Why not slapping a proper parser in your favorite functional language (Python, Haskell, whatever) and then celebrate the joys of high-level program transformation? You can ping me offline if you want some pointers about this.

-- 
Raphael 'kena' Poss · [email protected] · +31 20 525 8707
UvA · FNWI · IvI · CSA · 1098XH 904 Amsterdam (NL)
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.