|    246   println(s"BF generated WHILE program (needed $time secs for parsing)") |    246   println(s"BF generated WHILE program (needed $time secs for parsing)") | 
|    247   compile_and_run(bf_prog, name) |    247   compile_and_run(bf_prog, name) | 
|    248 } |    248 } | 
|    249  |    249  | 
|    250 // a benchmark program (counts down from 'Z' to 'A') |    250 // a benchmark program (counts down from 'Z' to 'A') | 
|    251 @doc(" Benchmark 'Z' to 'A'.") |    251 //@doc(" Benchmark 'Z' to 'A'.") | 
|    252 @main |    252 @main | 
|    253 def bfc0() = bf_run(read(pwd / "benchmark.bf"), "bench") |    253 def bfc0() = bf_run(read(pwd / "benchmark.bf"), "bench") | 
|    254  |    254  | 
|    255  |    255  | 
|    256 @doc(" Sierpinski triangle.") |    256 //@doc(" Sierpinski triangle.") | 
|    257 @main |    257 @main | 
|    258 def bfc1() = bf_run(read(pwd / "sierpinski.bf"), "sier") |    258 def bfc1() = bf_run(read(pwd / "sierpinski.bf"), "sier") | 
|    259  |    259  | 
|    260 // Hello World |    260 // Hello World | 
|    261 val bf2 = """++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-] |    261 val bf2 = """++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-] | 
|    262       >>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.""" |    262       >>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.""" | 
|    263  |    263  | 
|    264 @doc(" Hello world.") |    264 //@doc(" Hello world.") | 
|    265 @main |    265 @main | 
|    266 def bfc2() = bf_run(bf2, "hello") |    266 def bfc2() = bf_run(bf2, "hello") | 
|    267  |    267  | 
|    268 // Fibonacci  |    268 // Fibonacci  | 
|    269 val bf3 = """+++++++++++ |    269 val bf3 = """+++++++++++ | 
|    277       ++++++++++++++++++++++++++++++++++++++++++++.[-]<< |    277       ++++++++++++++++++++++++++++++++++++++++++++.[-]<< | 
|    278       <<<<<<<<<<[>>>+>+<<<<-]>>>>[<<<<+>>>>-]<-[>>.>.<<< |    278       <<<<<<<<<<[>>>+>+<<<<-]>>>>[<<<<+>>>>-]<-[>>.>.<<< | 
|    279       [-]]<<[>>+>+<<<-]>>>[<<<+>>>-]<<[<+>-]>[<+>-]<<<-] |    279       [-]]<<[>>+>+<<<-]>>>[<<<+>>>-]<<[<+>-]>[<+>-]<<<-] | 
|    280       [-]++++++++++.""" |    280       [-]++++++++++.""" | 
|    281  |    281  | 
|    282 @doc(" Fibonacci numbers.") |    282 //@doc(" Fibonacci numbers.") | 
|    283 @main |    283 @main | 
|    284 def bfc3() = bf_run(bf3, "fibs") |    284 def bfc3() = bf_run(bf3, "fibs") | 
|    285  |    285  | 
|    286 // Mandelbrot Set |    286 // Mandelbrot Set | 
|    287 //---------------- |    287 //---------------- | 
|    288 // |    288 // | 
|    289 // Note: Parsing of the generated WHILE program (around 60K in size) |    289 // Note: Parsing of the generated WHILE program (around 60K in size) | 
|    290 // takes approximately 10 minutes to parse with our parser combinators, |    290 // takes approximately 10 minutes to parse with our parser combinators, | 
|    291 // and approximately 30 seconds with Ammonite's fastparse. |    291 // and approximately 30 seconds with Ammonite's fastparse. | 
|    292  |    292  | 
|    293 @doc(" Mandelbrot set.") |    293 //@doc(" Mandelbrot set.") | 
|    294 @main |    294 @main | 
|    295 def bfc4() = bf_run(read(pwd / "mandelbrot.bf"), "mandelbrot") |    295 def bfc4() = bf_run(read(pwd / "mandelbrot.bf"), "mandelbrot") | 
|    296  |    296  | 
|    297  |    297  | 
|    298 // this unfortunately hits the capacity of the JVM, even with optimisations |    298 // this unfortunately hits the capacity of the JVM, even with optimisations | 
|    299 //@doc(" Coolatz serries up to 30.") |    299 //@doc(" Coolatz serries up to 30.") | 
|    300 //@main |    300 //@main | 
|    301 //def bfc5() = bf_run(read(pwd / "collatz.bf"), "coll") |    301 //def bfc5() = bf_run(read(pwd / "collatz.bf"), "coll") | 
|    302  |    302  | 
|    303  |    303 // this unfortunately hits the capacity of the JVM, even with optimisations | 
|    304 // |    304 //@doc(" Towers of Hanoi.") | 
|    305 @doc(" All benchmarks.") |    305 //@main | 
|         |    306 //def bfc6() = bf_run(read(pwd / "hanoi.bf"), "hanoi") | 
|         |    307  | 
|         |    308 // | 
|         |    309 //@doc(" All benchmarks.") | 
|    306 @main |    310 @main | 
|    307 def all() = { bfc0(); bfc1(); bfc2(); bfc3(); bfc4() }  |    311 def all() = { bfc0(); bfc1(); bfc2(); bfc3(); bfc4() }  | 
|    308  |    312  | 
|    309  |    313  | 
|    310  |    314  |