Ok, so now stream macros support arguments:

/////////////////////////////
_tokdef px x y = print x; print " "; print y; endl _edef
px _tok ("Yuk!" + " yyy")  _etok " gak";
/////////////////////////////

Here are the semantics. First, in a completely separate
phase, _tok ... _etok sequences are compressed into
a single token (recursively).

Now, a _tokdef can specify parameters:

_tokdef px x y = print x; print " "; print y; endl _edef

here there are two, x and y. A call to this macro:

px _tok ("Yuk!" + " yyy")  _etok " gak";

maps each parameter to a SINGLE token argument.
Note that _tok ("Yuk!" + " yyy")  _etok is a single token!

Next, the parameters in the body are replaced by the
argument tokens. Then the body is pushed into the input
queue for rescanning.

When a _tok .. _etok token is found in the input queue,
it is unpacked, and replaced in the input queue with
the tokens it wrapped, those tokens are then scanned.

I am considering adding some special features to manage
mapping of keywords. For example Felix will change so
"_goto", "_let", "_fun" etc are keywords.

Then, the programmer will map identifiers to those keywords:

_tokdef goto = _goto _edef

This allows a German to write:

        gehen start; // goto start

and it allows you to say:

_undef goto

to get rid of gotos :)

Another potential use is internationalisation of messages:

_tokdef err42 = "Earth bulldozed to make way for skyway" _edef

in one file, can be replaced in another by messages in another
language.

-- 
John Skaller <skaller at users dot sf dot net>
Felix, successor to C++: http://felix.sf.net

-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Felix-language mailing list
Felix-language@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/felix-language

Reply via email to