I just committed 6f6559 that adds support for an experimental new driver called
`flxc` that will support a REPL. It's got a ways to go, but here's what it can
already do:
# build/debug/bin/flxc -I build/debug/lib --import nugram.flxh --import
flx.flx
>>> 1;
... PARSED: call 1 ();
... EXPANDED: call 1 ();
... DESUGARED: call 1 ();
>>> (1 + 2) * 3;
... PARSED: call 1+2*3 ();
... EXPANDED: call 9 ();
... DESUGARED: call 9 ();
>>> val x = 5;
... PARSED: val x = 5;
... EXPANDED: val x = 5;
... DESUGARED: val x: typeof(5);
x := 5;
>>> fun foo (x:int) (y:float) = {
val z = x + 1;
var w = y * 2.0f;
val s = "hello ";
return s + "world!";
}
... PARSED: fun foo(val x: int) (val y: float): <none>
{
val z = x+1;
var w = y*2.0f;
val s = "hello ";
return s+"world!";
}
... EXPANDED: fun foo(val x: int) (val y: float): <none>
{
val z = (add (x, 1));
var w = (mul (y, 2.0f));
val s = "hello ";
return (add (s, "world!"));
}
... DESUGARED: generated curry fun foo(val x: int): <none>
{
body _rqs_foo = c"" requires _rqs_<input>;
fun foo'2(val y: float): <none>
{
body _rqs_foo'2 = c"" requires _rqs_foo;
val z: typeof((add (x, 1)));
z := (add (x, 1));
var w: typeof((mul (y, 2.0f)));
w := (mul (y, 2.0f));
val s: typeof("hello ");
s := "hello ";
return (add (s, "world!"));
}
return foo'2 of (float);
}
It even supports syntax extension:
>>> syntax foo {
requires statements;
svar_def := "foo" sdeclname = sexpr ";" =>#
"""
`(ast_var_decl ,_sr ,(first _2) ,(second _2) none (some ,_4))
""";
};
... PARSED: {/**/;}
... EXPANDED:
... DESUGARED:
>>> open syntax foo;
... PARSED: {/**/;}
... EXPANDED:
... DESUGARED:
>>> foo x = 5;
... PARSED: var x = 5;
... EXPANDED: var x = 5;
... DESUGARED: var x: typeof(5);
x := 5;
------------------------------------------------------------------------------
Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT
is a gathering of tech-side developers & brand creativity professionals. Meet
the minds behind Google Creative Lab, Visual Complexity, Processing, &
iPhoneDevCamp as they present alongside digital heavyweights like Barbarian
Group, R/GA, & Big Spaceship. http://p.sf.net/sfu/creativitycat-com
_______________________________________________
Felix-language mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/felix-language