Check-in [a5d10ace51]
Not logged in
Overview
SHA1 Hash:a5d10ace51e9ad7fde28ab52f0ffa523f4d42325
Date: 2010-11-10 00:35:18
User: kinaba
Comment:FizzBuzz!
Timelines: family | ancestors | descendants | both | trunk
Downloads: Tarball | ZIP archive
Other Links: files | file ages | manifest
Tags And Properties
Changes

Modified polemy/parse.d from [3e7ec41f1027e8ba] to [42c980cf31500e88].

174 174 scope(exit) lex.popFront; 175 175 return new IntLiteral(pos, BigInt(cast(string)lex.front.str)); 176 176 } 177 177 if( tryEat("@") ) 178 178 { 179 179 auto lay = "@"~eatId("for layer ID"); 180 180 eat("(", "for layered execution"); 181 - auto e = E(0); 181 + auto e = Body(); 182 182 eat(")", "after "~lay~"(..."); 183 183 return new LayeredExpression(pos, lay, e); 184 184 } 185 185 if( tryEat("(") ) 186 186 { 187 187 auto e = Body(); 188 188 eat(")", "after parenthesized expression");

Added sample/fizzbuzz.pmy version [d3f621f8aabb3e95]

1 +# 2 +# Not at all a good example of the usage of layers, but anyway... 3 +# 4 +# after implementing layered parameters, this may be improved. 5 +# (though still not a good example...) 6 +# 7 + 8 +@ 3 print(x) { @v(print("Fizz")) }; 9 +@ 5 print(x) { @v(print("Buzz")) }; 10 +@15 print(x) { @v(print("FizzBuzz")) }; 11 + 12 +def fb(n, q3, q5, q15) { 13 + if( q15 < 1 ) { 14 + @15(print) 15 + } else { 16 + if( q5 < 1 ) { 17 + @5(print) 18 + } else { 19 + if( q3 < 1 ) { 20 + @3(print) 21 + } else { 22 + @v(print) 23 + } 24 + } 25 + }(n); 26 + let q3 = q3+1; 27 + let q5 = q5+1; 28 + let q15 = q15+1; 29 + 30 + fb( 31 + n+1, 32 + if(q3<3){q3}else{0}, 33 + if(q5<5){q5}else{0}, 34 + if(q15<15){q15}else{0} 35 + ) 36 +}; 37 + 38 +fb(0,0,0,0)