32 typedef typename compositor_t::function function_t;
34 std::vector<T> disks = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
38 symbol_table_t symbol_table;
39 symbol_table.add_vector (
"disks", disks);
40 symbol_table.add_package(io_package);
42 compositor_t compositor(symbol_table);
44 compositor.load_variables(
true);
45 compositor.load_vectors (
true);
48 function_t(
"move_disk")
49 .vars(
"disk",
"src_rod",
"dest_rod")
52 "println('Move disk', disk ,' from rod[', src_rod ,'] to rod[', dest_rod ,']');"
56 function_t(
"tower_of_hanoi")
57 .vars(
"n",
"src",
"dest",
"aux")
62 " move_disk(disks[0], src, dest); "
66 " tower_of_hanoi(n - 1, src, aux, dest); "
68 " move_disk(disks[n - 1], src, dest); "
70 " tower_of_hanoi(n - 1, aux, dest, src); "
74 const std::string tower_of_hanoi_program =
75 " tower_of_hanoi(disks[], 1, 2, 3); ";
77 expression_t expression;
78 expression.register_symbol_table(symbol_table);
81 parser.compile(tower_of_hanoi_program,expression);