Paste: control structure syntax for clay
Author: | pruned |
Mode: | text |
Date: | Fri, 13 May 2011 21:05:26 |
Plain Text |
RULES:
- brackets optional around root calls of statements
- semicolon optional at the end too
- newline before `foo: bar' is implicit comma
- idented block after -> is a lambda value
- after `foo:', -> is optional
CODE:
if bool
then:
foo()
else:
if foobar
then:
bar()
else:
baz()
switch n
case: 1 do:
foo()
case: 2 do:
bar()
defaultDo:
baz()
var a = 0
while [a<10] do:
a += 1
doStuff(a)
forEach v do: x ->
print(x)
FLAT EQUIVALENT:
if(bool, (#then:,[foo();]), (#else:, [if(foobar, (#then, [bar();]), (#else,[baz();]))]));
switch(n, (#case:, 1), (#do: [foo();]), (#case:, 2), (#do: [bar();]), (#defaultDo: [baz();]));
var a = 0; while([a<10], (#do:, [a+=1; doStuff(a);]));
forEach(v, (#do, [x -> print(x);]));
Author: | pruned |
Mode: | text |
Date: | Tue, 7 Jun 2011 18:43:14 |
Plain Text |
RULES:
- true keywords
- semicolon optional at the end of statements
- idented block after -> is a lambda value
- after `foo:', -> is optional
CODE:
bool
then:
foo()
else:
foobar
then:
bar()
else:
baz()
n
case: 1 do:
foo()
case: 2 do:
bar()
default:
baz()
var a = 0
[a<10] while:
a += 1
doStuff(a)
v each: x ->
print(x)
FLAT EQUIVALENT:
#"then:else:"(bool, [foo();], [#"then:else:"(foobar, [bar();], [baz();])]);
#"case:do:case:do:default:"(n, 1, [foo();], 2, [bar();], [baz();]);
var a = 0; #"while:"([a<10], [a+=1; doStuff(a);]);
#"each:"(v, [x -> print(x);]);
New Annotation