nudge 0.0.2 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (883) hide show
  1. data/.gitignore +1 -0
  2. data/Rakefile +11 -7
  3. data/VERSION +1 -1
  4. data/lib/instructions/bool/bool_and.rb +19 -0
  5. data/lib/instructions/bool/bool_define.rb +6 -0
  6. data/lib/instructions/bool/bool_depth.rb +6 -0
  7. data/lib/instructions/bool/bool_duplicate.rb +6 -0
  8. data/lib/instructions/bool/bool_equal_q.rb +19 -0
  9. data/lib/instructions/bool/bool_flush.rb +6 -0
  10. data/lib/instructions/bool/bool_not.rb +18 -0
  11. data/lib/instructions/bool/bool_or.rb +19 -0
  12. data/lib/instructions/bool/bool_pop.rb +6 -0
  13. data/lib/instructions/bool/bool_random.rb +13 -0
  14. data/lib/instructions/bool/bool_rotate.rb +6 -0
  15. data/lib/instructions/bool/bool_shove.rb +6 -0
  16. data/lib/instructions/bool/bool_swap.rb +6 -0
  17. data/lib/instructions/bool/bool_xor.rb +19 -0
  18. data/lib/instructions/bool/bool_yank.rb +6 -0
  19. data/lib/instructions/bool/bool_yankdup.rb +6 -0
  20. data/lib/instructions/code/code_atom_q.rb +16 -0
  21. data/lib/instructions/code/code_backbone_points.rb +24 -0
  22. data/lib/instructions/code/code_car.rb +20 -0
  23. data/lib/instructions/code/code_cdr.rb +20 -0
  24. data/lib/instructions/code/code_concatenate.rb +31 -0
  25. data/lib/instructions/code/code_cons.rb +25 -0
  26. data/lib/instructions/code/code_container.rb +28 -0
  27. data/lib/instructions/code/code_contains_q.rb +22 -0
  28. data/lib/instructions/code/code_define.rb +21 -0
  29. data/lib/instructions/code/code_depth.rb +6 -0
  30. data/lib/instructions/code/code_discrepancy.rb +29 -0
  31. data/lib/instructions/code/code_do_count.rb +27 -0
  32. data/lib/instructions/code/code_do_range.rb +42 -0
  33. data/lib/instructions/code/code_do_times.rb +38 -0
  34. data/lib/instructions/code/code_duplicate.rb +6 -0
  35. data/lib/instructions/code/code_equal_q.rb +17 -0
  36. data/lib/instructions/code/code_execute.rb +19 -0
  37. data/lib/instructions/code/code_execute_then_pop.rb +20 -0
  38. data/lib/instructions/code/code_flush.rb +6 -0
  39. data/lib/instructions/code/code_gsub.rb +35 -0
  40. data/lib/instructions/code/code_if.rb +22 -0
  41. data/lib/instructions/code/code_instructions.rb +15 -0
  42. data/lib/instructions/code/code_list.rb +19 -0
  43. data/lib/instructions/code/code_member_q.rb +26 -0
  44. data/lib/instructions/code/code_name_lookup.rb +19 -0
  45. data/lib/instructions/code/code_nth.rb +24 -0
  46. data/lib/instructions/code/code_nth_cdr.rb +30 -0
  47. data/lib/instructions/code/code_nth_point.rb +21 -0
  48. data/lib/instructions/code/code_null_q.rb +15 -0
  49. data/lib/instructions/code/code_parses_q.rb +15 -0
  50. data/lib/instructions/code/code_points.rb +19 -0
  51. data/lib/instructions/code/code_pop.rb +6 -0
  52. data/lib/instructions/code/code_position.rb +22 -0
  53. data/lib/instructions/code/code_quote.rb +14 -0
  54. data/lib/instructions/code/code_replace_nth_point.rb +30 -0
  55. data/lib/instructions/code/code_rotate.rb +6 -0
  56. data/lib/instructions/code/code_shove.rb +6 -0
  57. data/lib/instructions/code/code_swap.rb +6 -0
  58. data/lib/instructions/code/code_yank.rb +6 -0
  59. data/lib/instructions/code/code_yankdup.rb +6 -0
  60. data/lib/instructions/conversion/bool_from_float.rb +14 -0
  61. data/lib/instructions/conversion/bool_from_int.rb +14 -0
  62. data/lib/instructions/conversion/code_from_bool.rb +16 -0
  63. data/lib/instructions/conversion/code_from_float.rb +16 -0
  64. data/lib/instructions/conversion/code_from_int.rb +17 -0
  65. data/lib/instructions/conversion/code_from_name.rb +16 -0
  66. data/lib/instructions/conversion/float_from_bool.rb +14 -0
  67. data/lib/instructions/conversion/float_from_int.rb +14 -0
  68. data/lib/instructions/conversion/int_from_bool.rb +14 -0
  69. data/lib/instructions/conversion/int_from_float.rb +14 -0
  70. data/lib/instructions/exec/exec_define.rb +6 -0
  71. data/lib/instructions/exec/exec_depth.rb +6 -0
  72. data/lib/instructions/exec/exec_do_count.rb +23 -0
  73. data/lib/instructions/exec/exec_do_range.rb +36 -0
  74. data/lib/instructions/exec/exec_do_times.rb +34 -0
  75. data/lib/instructions/exec/exec_duplicate.rb +6 -0
  76. data/lib/instructions/exec/exec_equal_q.rb +17 -0
  77. data/lib/instructions/exec/exec_flush.rb +6 -0
  78. data/lib/instructions/exec/exec_if.rb +8 -0
  79. data/lib/instructions/exec/exec_k.rb +14 -0
  80. data/lib/instructions/exec/exec_pop.rb +6 -0
  81. data/lib/instructions/exec/exec_rotate.rb +6 -0
  82. data/lib/instructions/exec/exec_s.rb +18 -0
  83. data/lib/instructions/exec/exec_shove.rb +6 -0
  84. data/lib/instructions/exec/exec_swap.rb +6 -0
  85. data/lib/instructions/exec/exec_y.rb +15 -0
  86. data/lib/instructions/exec/exec_yank.rb +6 -0
  87. data/lib/instructions/exec/exec_yankdup.rb +6 -0
  88. data/lib/instructions/float/float_abs.rb +14 -0
  89. data/lib/instructions/float/float_add.rb +15 -0
  90. data/lib/instructions/float/float_cosine.rb +14 -0
  91. data/lib/instructions/float/float_define.rb +6 -0
  92. data/lib/instructions/float/float_depth.rb +6 -0
  93. data/lib/instructions/float/float_divide.rb +20 -0
  94. data/lib/instructions/float/float_duplicate.rb +6 -0
  95. data/lib/instructions/float/float_equal_q.rb +15 -0
  96. data/lib/instructions/float/float_flush.rb +6 -0
  97. data/lib/instructions/float/float_greater_than_q.rb +15 -0
  98. data/lib/instructions/float/float_if.rb +8 -0
  99. data/lib/instructions/float/float_less_than_q.rb +15 -0
  100. data/lib/instructions/float/float_max.rb +15 -0
  101. data/lib/instructions/float/float_min.rb +15 -0
  102. data/lib/instructions/float/float_modulo.rb +20 -0
  103. data/lib/instructions/float/float_multiply.rb +15 -0
  104. data/lib/instructions/float/float_negative.rb +14 -0
  105. data/lib/instructions/float/float_pop.rb +6 -0
  106. data/lib/instructions/float/float_power.rb +20 -0
  107. data/lib/instructions/float/float_random.rb +13 -0
  108. data/lib/instructions/float/float_rotate.rb +6 -0
  109. data/lib/instructions/float/float_shove.rb +6 -0
  110. data/lib/instructions/float/float_sine.rb +14 -0
  111. data/lib/instructions/float/float_sqrt.rb +18 -0
  112. data/lib/instructions/float/float_subtract.rb +15 -0
  113. data/lib/instructions/float/float_swap.rb +6 -0
  114. data/lib/instructions/float/float_tangent.rb +14 -0
  115. data/lib/instructions/float/float_yank.rb +6 -0
  116. data/lib/instructions/float/float_yankdup.rb +6 -0
  117. data/lib/instructions/infrastructure.rb +335 -17
  118. data/lib/instructions/int/int_abs.rb +14 -0
  119. data/lib/instructions/int/int_add.rb +15 -0
  120. data/lib/instructions/int/int_define.rb +6 -0
  121. data/lib/instructions/int/int_depth.rb +6 -0
  122. data/lib/instructions/int/int_divide.rb +20 -0
  123. data/lib/instructions/int/int_duplicate.rb +6 -0
  124. data/lib/instructions/int/int_equal_q.rb +15 -0
  125. data/lib/instructions/int/int_flush.rb +6 -0
  126. data/lib/instructions/int/int_greater_than_q.rb +15 -0
  127. data/lib/instructions/int/int_if.rb +8 -0
  128. data/lib/instructions/int/int_less_than_q.rb +15 -0
  129. data/lib/instructions/int/int_max.rb +16 -0
  130. data/lib/instructions/int/int_min.rb +16 -0
  131. data/lib/instructions/int/int_modulo.rb +20 -0
  132. data/lib/instructions/int/int_multiply.rb +15 -0
  133. data/lib/instructions/int/int_negative.rb +14 -0
  134. data/lib/instructions/int/int_pop.rb +6 -0
  135. data/lib/instructions/int/int_power.rb +16 -0
  136. data/lib/instructions/int/int_random.rb +13 -0
  137. data/lib/instructions/int/int_rotate.rb +6 -0
  138. data/lib/instructions/int/int_shove.rb +6 -0
  139. data/lib/instructions/int/int_subtract.rb +16 -0
  140. data/lib/instructions/int/int_swap.rb +6 -0
  141. data/lib/instructions/int/int_yank.rb +6 -0
  142. data/lib/instructions/int/int_yankdup.rb +6 -0
  143. data/lib/instructions/name/name_depth.rb +6 -0
  144. data/lib/instructions/name/name_disable_lookup.rb +12 -0
  145. data/lib/instructions/name/name_duplicate.rb +6 -0
  146. data/lib/instructions/name/name_equal_q.rb +15 -0
  147. data/lib/instructions/name/name_flush.rb +6 -0
  148. data/lib/instructions/name/name_next.rb +14 -0
  149. data/lib/instructions/name/name_pop.rb +6 -0
  150. data/lib/instructions/name/name_random_bound.rb +14 -0
  151. data/lib/instructions/name/name_rotate.rb +6 -0
  152. data/lib/instructions/name/name_shove.rb +6 -0
  153. data/lib/instructions/name/name_swap.rb +6 -0
  154. data/lib/instructions/name/name_unbind.rb +17 -0
  155. data/lib/instructions/name/name_yank.rb +6 -0
  156. data/lib/instructions/name/name_yankdup.rb +6 -0
  157. data/lib/interpreter/grammars/nudge_codeblock.treetop +17 -0
  158. data/lib/interpreter/grammars/nudge_codeblock_helpers.rb +19 -0
  159. data/lib/interpreter/grammars/nudge_common.treetop +15 -0
  160. data/lib/interpreter/grammars/nudge_instruction.treetop +14 -0
  161. data/lib/interpreter/grammars/nudge_instruction_helpers.rb +14 -0
  162. data/lib/interpreter/grammars/nudge_reference.treetop +9 -0
  163. data/lib/interpreter/grammars/nudge_reference_helpers.rb +14 -0
  164. data/lib/interpreter/grammars/nudge_value.treetop +14 -0
  165. data/lib/interpreter/grammars/nudge_value_helpers.rb +19 -0
  166. data/lib/interpreter/interpreter.rb +74 -23
  167. data/lib/interpreter/nudge_program.rb +253 -0
  168. data/lib/interpreter/parse.tab.rb +264 -0
  169. data/lib/interpreter/programPoints.rb +119 -98
  170. data/lib/interpreter/types/codeType.rb +114 -89
  171. data/lib/interpreter/types/pushTypes.rb +33 -20
  172. data/lib/nudge.rb +25 -26
  173. data/readme.md +13 -10
  174. data/spec/fixtures/long_arithmetic.example +7 -4
  175. data/spec/instructions/bool/bool_and_spec.rb +61 -0
  176. data/spec/instructions/bool/bool_define_spec.rb +69 -0
  177. data/spec/instructions/bool/bool_depth_spec.rb +39 -0
  178. data/spec/instructions/bool/bool_equal_q_spec.rb +61 -0
  179. data/spec/instructions/bool/bool_flush_spec.rb +37 -0
  180. data/spec/instructions/bool/bool_not_spec.rb +61 -0
  181. data/spec/instructions/bool/bool_or_spec.rb +61 -0
  182. data/spec/instructions/bool/bool_random_spec.rb +39 -0
  183. data/spec/instructions/bool/bool_shove_spec.rb +69 -0
  184. data/spec/instructions/bool/bool_xor_spec.rb +61 -0
  185. data/spec/instructions/bool/bool_yank_spec.rb +71 -0
  186. data/spec/instructions/bool/bool_yankdup_spec.rb +70 -0
  187. data/spec/instructions/code/code_atom_q_spec.rb +44 -0
  188. data/spec/instructions/code/code_backbone_points_spec.rb +57 -0
  189. data/spec/instructions/code/code_car_spec.rb +50 -0
  190. data/spec/instructions/code/code_cdr_spec.rb +51 -0
  191. data/spec/instructions/code/code_concatenate_spec.rb +81 -0
  192. data/spec/instructions/code/code_cons_spec.rb +63 -0
  193. data/spec/instructions/code/code_container_spec.rb +77 -0
  194. data/spec/instructions/code/code_contains_q_spec.rb +82 -0
  195. data/spec/instructions/code/code_define_spec.rb +76 -0
  196. data/spec/instructions/code/code_discrepancy_spec.rb +81 -0
  197. data/spec/instructions/code/code_do_count_spec.rb +83 -0
  198. data/spec/instructions/code/code_do_range_spec.rb +113 -0
  199. data/spec/instructions/code/code_do_times_spec.rb +116 -0
  200. data/spec/instructions/code/code_equal_q_spec.rb +49 -0
  201. data/spec/instructions/code/code_execute_spec.rb +52 -0
  202. data/spec/instructions/code/code_execute_then_pop_spec.rb +61 -0
  203. data/spec/instructions/code/code_fromname_spec.rb +37 -0
  204. data/spec/instructions/code/code_gsub_spec.rb +112 -0
  205. data/spec/instructions/code/code_if_spec.rb +53 -0
  206. data/spec/instructions/code/code_instructions_spec.rb +42 -0
  207. data/spec/instructions/code/code_list_spec.rb +49 -0
  208. data/spec/instructions/code/code_member_q_spec.rb +77 -0
  209. data/spec/instructions/code/code_name_lookup_spec.rb +65 -0
  210. data/spec/instructions/code/code_noop_spec.rb +38 -0
  211. data/spec/instructions/code/code_nth_cdr_spec.rb +77 -0
  212. data/spec/instructions/code/code_nth_point_spec.rb +67 -0
  213. data/spec/instructions/code/code_nth_spec.rb +62 -0
  214. data/spec/instructions/code/code_null_q_spec.rb +44 -0
  215. data/spec/instructions/code/code_parses_q_spec.rb +73 -0
  216. data/spec/instructions/code/code_points_spec.rb +49 -0
  217. data/spec/instructions/code/code_position_spec.rb +74 -0
  218. data/spec/instructions/code/code_quote_spec.rb +53 -0
  219. data/spec/instructions/code/code_replace_nth_point_spec.rb +115 -0
  220. data/spec/instructions/code/code_stack_spec.rb +386 -0
  221. data/spec/instructions/exec/exec_define_spec.rb +70 -0
  222. data/spec/instructions/exec/exec_depth_spec.rb +39 -0
  223. data/spec/instructions/exec/exec_do_count_spec.rb +79 -0
  224. data/spec/instructions/exec/exec_do_range_spec.rb +98 -0
  225. data/spec/instructions/exec/exec_do_times_spec.rb +105 -0
  226. data/spec/instructions/exec/exec_duplicate_spec.rb +44 -0
  227. data/spec/instructions/exec/exec_equal_q_spec.rb +50 -0
  228. data/spec/instructions/exec/exec_flush_spec.rb +37 -0
  229. data/spec/instructions/exec/exec_if_spec.rb +51 -0
  230. data/spec/instructions/exec/exec_k_spec.rb +39 -0
  231. data/spec/instructions/exec/exec_pop_spec.rb +38 -0
  232. data/spec/instructions/exec/exec_rotate_spec.rb +40 -0
  233. data/spec/instructions/exec/exec_s_spec.rb +41 -0
  234. data/spec/instructions/exec/exec_shove_spec.rb +68 -0
  235. data/spec/instructions/exec/exec_swap_spec.rb +41 -0
  236. data/spec/instructions/exec/exec_y_spec.rb +41 -0
  237. data/spec/instructions/exec/exec_yank_spec.rb +66 -0
  238. data/spec/instructions/exec/exec_yankdup_spec.rb +69 -0
  239. data/spec/instructions/float/float_abs_spec.rb +50 -0
  240. data/spec/instructions/float/float_add_spec.rb +50 -0
  241. data/spec/instructions/float/float_cosine_spec.rb +61 -0
  242. data/spec/instructions/float/float_define_spec.rb +69 -0
  243. data/spec/instructions/float/float_depth_spec.rb +39 -0
  244. data/spec/instructions/float/float_divide_spec.rb +59 -0
  245. data/spec/instructions/float/float_equal_q_spec.rb +53 -0
  246. data/spec/instructions/float/float_flush_spec.rb +37 -0
  247. data/spec/instructions/float/float_greater_than_q_spec.rb +59 -0
  248. data/spec/instructions/float/float_if_spec.rb +49 -0
  249. data/spec/instructions/float/float_less_than_q_spec.rb +59 -0
  250. data/spec/instructions/float/float_max_spec.rb +51 -0
  251. data/spec/instructions/float/float_min_spec.rb +51 -0
  252. data/spec/instructions/float/float_modulo_spec.rb +59 -0
  253. data/spec/instructions/float/float_multiply_spec.rb +51 -0
  254. data/spec/instructions/float/float_negative_spec.rb +51 -0
  255. data/spec/instructions/float/float_power_spec.rb +59 -0
  256. data/spec/instructions/float/float_random_spec.rb +36 -0
  257. data/spec/instructions/float/float_shove_spec.rb +67 -0
  258. data/spec/instructions/float/float_sine_spec.rb +61 -0
  259. data/spec/instructions/float/float_sqrt_spec.rb +60 -0
  260. data/spec/instructions/float/float_subtract_spec.rb +51 -0
  261. data/spec/instructions/float/float_tangent_spec.rb +62 -0
  262. data/spec/instructions/float/float_yank_spec.rb +65 -0
  263. data/spec/instructions/float/float_yankdup_spec.rb +70 -0
  264. data/spec/instructions/instruction_class_spec.rb +31 -0
  265. data/spec/instructions/int/int_abs_spec.rb +61 -0
  266. data/spec/instructions/int/int_add_spec.rb +60 -0
  267. data/spec/instructions/int/int_define_spec.rb +73 -0
  268. data/spec/instructions/int/int_depth_spec.rb +37 -0
  269. data/spec/instructions/int/int_divide_spec.rb +69 -0
  270. data/spec/instructions/int/int_equal_q_spec.rb +52 -0
  271. data/spec/instructions/int/int_flush_spec.rb +37 -0
  272. data/spec/instructions/int/int_greater_than_q_spec.rb +59 -0
  273. data/spec/instructions/int/int_if_spec.rb +48 -0
  274. data/spec/instructions/int/int_less_than_q_spec.rb +59 -0
  275. data/spec/instructions/int/int_max_spec.rb +61 -0
  276. data/spec/instructions/int/int_min_spec.rb +61 -0
  277. data/spec/instructions/int/int_modulo_spec.rb +69 -0
  278. data/spec/instructions/int/int_multiply_spec.rb +61 -0
  279. data/spec/instructions/int/int_negative_spec.rb +61 -0
  280. data/spec/instructions/int/int_power_spec.rb +73 -0
  281. data/spec/instructions/int/int_random_spec.rb +36 -0
  282. data/spec/instructions/int/int_shove_spec.rb +67 -0
  283. data/spec/instructions/int/int_subtract_spec.rb +61 -0
  284. data/spec/instructions/int/int_yank_spec.rb +85 -0
  285. data/spec/instructions/int/int_yankdup_spec.rb +70 -0
  286. data/spec/instructions/name/name_depth_spec.rb +39 -0
  287. data/spec/instructions/name/name_disable_lookup_spec.rb +47 -0
  288. data/spec/instructions/name/name_equal_q_spec.rb +38 -0
  289. data/spec/instructions/name/name_flush_spec.rb +37 -0
  290. data/spec/instructions/name/name_next_spec.rb +39 -0
  291. data/spec/instructions/name/name_random_bound_spec.rb +57 -0
  292. data/spec/instructions/name/name_shove_spec.rb +67 -0
  293. data/spec/instructions/name/name_unbind_spec.rb +62 -0
  294. data/spec/instructions/name/name_yank_spec.rb +65 -0
  295. data/spec/instructions/name/name_yankdup_spec.rb +69 -0
  296. data/spec/instructions/split_these/bool_stack_spec.rb +95 -0
  297. data/spec/instructions/split_these/conversions_spec.rb +103 -0
  298. data/spec/instructions/split_these/float_stack_spec.rb +92 -0
  299. data/spec/instructions/split_these/int_stack_spec.rb +81 -0
  300. data/spec/instructions/split_these/name_stack_spec.rb +84 -0
  301. data/spec/interpreter/codeblock_point_spec.rb +164 -0
  302. data/spec/interpreter/codetype_spec.rb +219 -185
  303. data/spec/interpreter/instruction_spec.rb +87 -25
  304. data/spec/interpreter/interpreter_spec.rb +230 -36
  305. data/spec/interpreter/nil_point_spec.rb +32 -0
  306. data/spec/interpreter/nudge_program_spec.rb +774 -0
  307. data/spec/interpreter/reference_point_spec.rb +73 -0
  308. data/spec/interpreter/stack_spec.rb +1 -1
  309. data/spec/interpreter/treetophelpers.rb +94 -1
  310. data/spec/interpreter/types_spec.rb +125 -77
  311. data/spec/interpreter/value_point_spec.rb +173 -0
  312. data/spec/parsers/nudge_program_parser_spec.rb +86 -0
  313. data/spec/spec_helper.rb +26 -2
  314. metadata +464 -664
  315. data/_spikes/couch_document_spike.rb +0 -24
  316. data/_spikes/nested_parsing/nested.treetop +0 -6
  317. data/_spikes/nudge3_syntax_spike.txt +0 -23
  318. data/_spikes/nudgeview/init.rb +0 -19
  319. data/_spikes/nudgeview/public/javascripts/app.js +0 -12
  320. data/_spikes/nudgeview/public/javascripts/jquery.js +0 -4376
  321. data/_spikes/nudgeview/public/javascripts/jquery.svg.js +0 -1325
  322. data/_spikes/nudgeview/views/index.erb +0 -18
  323. data/_spikes/nudgeview/views/index.haml +0 -8
  324. data/_spikes/simplestWeb/simplest.rb +0 -44
  325. data/_spikes/simplestWeb/views/main.erb +0 -19
  326. data/_spikes/sketches/nudgecode_spike.rb +0 -146
  327. data/_spikes/sketches/searchDSL_spike.rb +0 -25
  328. data/_spikes/sketches/search_operator_sketch_spike.txt +0 -287
  329. data/_spikes/sketches/searchspace_spike.rb +0 -96
  330. data/_spikes/symbolic_regression/activate.rb +0 -35
  331. data/_spikes/symbolic_regression/config/environment.rb +0 -340
  332. data/_spikes/symbolic_regression/config/environments/deployment.rb +0 -0
  333. data/_spikes/symbolic_regression/config/environments/development.rb +0 -0
  334. data/_spikes/symbolic_regression/experiment/objectives/programLength.rb +0 -2
  335. data/_spikes/symbolic_regression/experiment/objectives/summedSquaredError.rb +0 -2
  336. data/_spikes/symbolic_regression/lib/tasks/run.rake +0 -0
  337. data/app_generators/nudge/USAGE +0 -5
  338. data/app_generators/nudge/nudge_generator.rb +0 -73
  339. data/app_generators/nudge/templates/activate.rb +0 -0
  340. data/bin/nudge +0 -17
  341. data/doc/classes/BlockNode.html +0 -146
  342. data/doc/classes/BlockNode.src/M000246.html +0 -18
  343. data/doc/classes/BoolAndInstruction.html +0 -218
  344. data/doc/classes/BoolAndInstruction.src/M000003.html +0 -15
  345. data/doc/classes/BoolAndInstruction.src/M000004.html +0 -16
  346. data/doc/classes/BoolAndInstruction.src/M000005.html +0 -15
  347. data/doc/classes/BoolAndInstruction.src/M000006.html +0 -15
  348. data/doc/classes/BoolEqualQInstruction.html +0 -218
  349. data/doc/classes/BoolEqualQInstruction.src/M000015.html +0 -15
  350. data/doc/classes/BoolEqualQInstruction.src/M000016.html +0 -16
  351. data/doc/classes/BoolEqualQInstruction.src/M000017.html +0 -15
  352. data/doc/classes/BoolEqualQInstruction.src/M000018.html +0 -15
  353. data/doc/classes/BoolFromFloatInstruction.html +0 -218
  354. data/doc/classes/BoolFromFloatInstruction.src/M000071.html +0 -15
  355. data/doc/classes/BoolFromFloatInstruction.src/M000072.html +0 -15
  356. data/doc/classes/BoolFromFloatInstruction.src/M000073.html +0 -15
  357. data/doc/classes/BoolFromFloatInstruction.src/M000074.html +0 -15
  358. data/doc/classes/BoolFromIntInstruction.html +0 -218
  359. data/doc/classes/BoolFromIntInstruction.src/M000067.html +0 -15
  360. data/doc/classes/BoolFromIntInstruction.src/M000068.html +0 -15
  361. data/doc/classes/BoolFromIntInstruction.src/M000069.html +0 -15
  362. data/doc/classes/BoolFromIntInstruction.src/M000070.html +0 -15
  363. data/doc/classes/BoolNotInstruction.html +0 -218
  364. data/doc/classes/BoolNotInstruction.src/M000019.html +0 -15
  365. data/doc/classes/BoolNotInstruction.src/M000020.html +0 -15
  366. data/doc/classes/BoolNotInstruction.src/M000021.html +0 -15
  367. data/doc/classes/BoolNotInstruction.src/M000022.html +0 -15
  368. data/doc/classes/BoolOrInstruction.html +0 -218
  369. data/doc/classes/BoolOrInstruction.src/M000007.html +0 -15
  370. data/doc/classes/BoolOrInstruction.src/M000008.html +0 -16
  371. data/doc/classes/BoolOrInstruction.src/M000009.html +0 -15
  372. data/doc/classes/BoolOrInstruction.src/M000010.html +0 -15
  373. data/doc/classes/BoolRandomInstruction.html +0 -218
  374. data/doc/classes/BoolRandomInstruction.src/M000187.html +0 -15
  375. data/doc/classes/BoolRandomInstruction.src/M000188.html +0 -14
  376. data/doc/classes/BoolRandomInstruction.src/M000189.html +0 -15
  377. data/doc/classes/BoolRandomInstruction.src/M000190.html +0 -15
  378. data/doc/classes/BoolType.html +0 -196
  379. data/doc/classes/BoolType.src/M000240.html +0 -16
  380. data/doc/classes/BoolType.src/M000241.html +0 -15
  381. data/doc/classes/BoolType.src/M000242.html +0 -15
  382. data/doc/classes/BoolXorInstruction.html +0 -218
  383. data/doc/classes/BoolXorInstruction.src/M000011.html +0 -15
  384. data/doc/classes/BoolXorInstruction.src/M000012.html +0 -16
  385. data/doc/classes/BoolXorInstruction.src/M000013.html +0 -15
  386. data/doc/classes/BoolXorInstruction.src/M000014.html +0 -15
  387. data/doc/classes/ChannelNode.html +0 -161
  388. data/doc/classes/ChannelNode.src/M000249.html +0 -15
  389. data/doc/classes/ChannelNode.src/M000250.html +0 -16
  390. data/doc/classes/CodeType.html +0 -269
  391. data/doc/classes/CodeType.src/M000219.html +0 -38
  392. data/doc/classes/CodeType.src/M000220.html +0 -16
  393. data/doc/classes/CodeType.src/M000221.html +0 -16
  394. data/doc/classes/CodeType.src/M000222.html +0 -16
  395. data/doc/classes/CodeType.src/M000223.html +0 -24
  396. data/doc/classes/CodeType.src/M000224.html +0 -42
  397. data/doc/classes/ERCNode.html +0 -183
  398. data/doc/classes/ERCNode.src/M000254.html +0 -15
  399. data/doc/classes/ERCNode.src/M000255.html +0 -16
  400. data/doc/classes/ERCNode.src/M000256.html +0 -16
  401. data/doc/classes/ExecPopInstruction.html +0 -218
  402. data/doc/classes/ExecPopInstruction.src/M000075.html +0 -15
  403. data/doc/classes/ExecPopInstruction.src/M000076.html +0 -14
  404. data/doc/classes/ExecPopInstruction.src/M000077.html +0 -15
  405. data/doc/classes/ExecPopInstruction.src/M000078.html +0 -14
  406. data/doc/classes/FloatAbsInstruction.html +0 -218
  407. data/doc/classes/FloatAbsInstruction.src/M000107.html +0 -15
  408. data/doc/classes/FloatAbsInstruction.src/M000108.html +0 -15
  409. data/doc/classes/FloatAbsInstruction.src/M000109.html +0 -15
  410. data/doc/classes/FloatAbsInstruction.src/M000110.html +0 -15
  411. data/doc/classes/FloatAddInstruction.html +0 -218
  412. data/doc/classes/FloatAddInstruction.src/M000079.html +0 -15
  413. data/doc/classes/FloatAddInstruction.src/M000080.html +0 -16
  414. data/doc/classes/FloatAddInstruction.src/M000081.html +0 -15
  415. data/doc/classes/FloatAddInstruction.src/M000082.html +0 -15
  416. data/doc/classes/FloatCosineInstruction.html +0 -218
  417. data/doc/classes/FloatCosineInstruction.src/M000123.html +0 -15
  418. data/doc/classes/FloatCosineInstruction.src/M000124.html +0 -15
  419. data/doc/classes/FloatCosineInstruction.src/M000125.html +0 -15
  420. data/doc/classes/FloatCosineInstruction.src/M000126.html +0 -15
  421. data/doc/classes/FloatDivideInstruction.html +0 -218
  422. data/doc/classes/FloatDivideInstruction.src/M000091.html +0 -15
  423. data/doc/classes/FloatDivideInstruction.src/M000092.html +0 -16
  424. data/doc/classes/FloatDivideInstruction.src/M000093.html +0 -20
  425. data/doc/classes/FloatDivideInstruction.src/M000094.html +0 -15
  426. data/doc/classes/FloatFromBoolInstruction.html +0 -218
  427. data/doc/classes/FloatFromBoolInstruction.src/M000055.html +0 -15
  428. data/doc/classes/FloatFromBoolInstruction.src/M000056.html +0 -15
  429. data/doc/classes/FloatFromBoolInstruction.src/M000057.html +0 -15
  430. data/doc/classes/FloatFromBoolInstruction.src/M000058.html +0 -15
  431. data/doc/classes/FloatFromIntInstruction.html +0 -218
  432. data/doc/classes/FloatFromIntInstruction.src/M000063.html +0 -15
  433. data/doc/classes/FloatFromIntInstruction.src/M000064.html +0 -15
  434. data/doc/classes/FloatFromIntInstruction.src/M000065.html +0 -15
  435. data/doc/classes/FloatFromIntInstruction.src/M000066.html +0 -15
  436. data/doc/classes/FloatGreaterThanQInstruction.html +0 -218
  437. data/doc/classes/FloatGreaterThanQInstruction.src/M000035.html +0 -15
  438. data/doc/classes/FloatGreaterThanQInstruction.src/M000036.html +0 -16
  439. data/doc/classes/FloatGreaterThanQInstruction.src/M000037.html +0 -15
  440. data/doc/classes/FloatGreaterThanQInstruction.src/M000038.html +0 -15
  441. data/doc/classes/FloatIfInstruction.html +0 -218
  442. data/doc/classes/FloatIfInstruction.src/M000047.html +0 -16
  443. data/doc/classes/FloatIfInstruction.src/M000048.html +0 -15
  444. data/doc/classes/FloatIfInstruction.src/M000049.html +0 -14
  445. data/doc/classes/FloatIfInstruction.src/M000050.html +0 -17
  446. data/doc/classes/FloatLessThanQInstruction.html +0 -218
  447. data/doc/classes/FloatLessThanQInstruction.src/M000039.html +0 -15
  448. data/doc/classes/FloatLessThanQInstruction.src/M000040.html +0 -16
  449. data/doc/classes/FloatLessThanQInstruction.src/M000041.html +0 -15
  450. data/doc/classes/FloatLessThanQInstruction.src/M000042.html +0 -15
  451. data/doc/classes/FloatMaxInstruction.html +0 -218
  452. data/doc/classes/FloatMaxInstruction.src/M000095.html +0 -15
  453. data/doc/classes/FloatMaxInstruction.src/M000096.html +0 -16
  454. data/doc/classes/FloatMaxInstruction.src/M000097.html +0 -15
  455. data/doc/classes/FloatMaxInstruction.src/M000098.html +0 -15
  456. data/doc/classes/FloatMinInstruction.html +0 -218
  457. data/doc/classes/FloatMinInstruction.src/M000099.html +0 -15
  458. data/doc/classes/FloatMinInstruction.src/M000100.html +0 -16
  459. data/doc/classes/FloatMinInstruction.src/M000101.html +0 -15
  460. data/doc/classes/FloatMinInstruction.src/M000102.html +0 -15
  461. data/doc/classes/FloatMultiplyInstruction.html +0 -218
  462. data/doc/classes/FloatMultiplyInstruction.src/M000083.html +0 -15
  463. data/doc/classes/FloatMultiplyInstruction.src/M000084.html +0 -16
  464. data/doc/classes/FloatMultiplyInstruction.src/M000085.html +0 -15
  465. data/doc/classes/FloatMultiplyInstruction.src/M000086.html +0 -15
  466. data/doc/classes/FloatNegativeInstruction.html +0 -218
  467. data/doc/classes/FloatNegativeInstruction.src/M000103.html +0 -15
  468. data/doc/classes/FloatNegativeInstruction.src/M000104.html +0 -15
  469. data/doc/classes/FloatNegativeInstruction.src/M000105.html +0 -15
  470. data/doc/classes/FloatNegativeInstruction.src/M000106.html +0 -15
  471. data/doc/classes/FloatPowerInstruction.html +0 -218
  472. data/doc/classes/FloatPowerInstruction.src/M000111.html +0 -15
  473. data/doc/classes/FloatPowerInstruction.src/M000112.html +0 -16
  474. data/doc/classes/FloatPowerInstruction.src/M000113.html +0 -20
  475. data/doc/classes/FloatPowerInstruction.src/M000114.html +0 -15
  476. data/doc/classes/FloatRandomInstruction.html +0 -218
  477. data/doc/classes/FloatRandomInstruction.src/M000191.html +0 -15
  478. data/doc/classes/FloatRandomInstruction.src/M000192.html +0 -14
  479. data/doc/classes/FloatRandomInstruction.src/M000193.html +0 -15
  480. data/doc/classes/FloatRandomInstruction.src/M000194.html +0 -15
  481. data/doc/classes/FloatSineInstruction.html +0 -218
  482. data/doc/classes/FloatSineInstruction.src/M000119.html +0 -15
  483. data/doc/classes/FloatSineInstruction.src/M000120.html +0 -15
  484. data/doc/classes/FloatSineInstruction.src/M000121.html +0 -15
  485. data/doc/classes/FloatSineInstruction.src/M000122.html +0 -15
  486. data/doc/classes/FloatSqrtInstruction.html +0 -218
  487. data/doc/classes/FloatSqrtInstruction.src/M000115.html +0 -15
  488. data/doc/classes/FloatSqrtInstruction.src/M000116.html +0 -15
  489. data/doc/classes/FloatSqrtInstruction.src/M000117.html +0 -19
  490. data/doc/classes/FloatSqrtInstruction.src/M000118.html +0 -15
  491. data/doc/classes/FloatSubtractInstruction.html +0 -218
  492. data/doc/classes/FloatSubtractInstruction.src/M000087.html +0 -15
  493. data/doc/classes/FloatSubtractInstruction.src/M000088.html +0 -16
  494. data/doc/classes/FloatSubtractInstruction.src/M000089.html +0 -15
  495. data/doc/classes/FloatSubtractInstruction.src/M000090.html +0 -15
  496. data/doc/classes/FloatTangentInstruction.html +0 -218
  497. data/doc/classes/FloatTangentInstruction.src/M000127.html +0 -15
  498. data/doc/classes/FloatTangentInstruction.src/M000128.html +0 -15
  499. data/doc/classes/FloatTangentInstruction.src/M000129.html +0 -15
  500. data/doc/classes/FloatTangentInstruction.src/M000130.html +0 -15
  501. data/doc/classes/FloatType.html +0 -196
  502. data/doc/classes/FloatType.src/M000243.html +0 -19
  503. data/doc/classes/FloatType.src/M000244.html +0 -15
  504. data/doc/classes/FloatType.src/M000245.html +0 -15
  505. data/doc/classes/Helpers.html +0 -161
  506. data/doc/classes/Helpers.src/M000343.html +0 -21
  507. data/doc/classes/Helpers.src/M000344.html +0 -24
  508. data/doc/classes/Instruction/InstructionMethodError.html +0 -110
  509. data/doc/classes/Instruction/NaNResultError.html +0 -110
  510. data/doc/classes/Instruction/NotEnoughStackItems.html +0 -110
  511. data/doc/classes/Instruction.html +0 -500
  512. data/doc/classes/Instruction.src/M000131.html +0 -17
  513. data/doc/classes/Instruction.src/M000132.html +0 -15
  514. data/doc/classes/Instruction.src/M000133.html +0 -15
  515. data/doc/classes/Instruction.src/M000134.html +0 -15
  516. data/doc/classes/Instruction.src/M000135.html +0 -15
  517. data/doc/classes/Instruction.src/M000136.html +0 -15
  518. data/doc/classes/Instruction.src/M000137.html +0 -15
  519. data/doc/classes/Instruction.src/M000138.html +0 -15
  520. data/doc/classes/Instruction.src/M000139.html +0 -22
  521. data/doc/classes/Instruction.src/M000140.html +0 -15
  522. data/doc/classes/Instruction.src/M000141.html +0 -25
  523. data/doc/classes/Instruction.src/M000142.html +0 -15
  524. data/doc/classes/Instruction.src/M000143.html +0 -15
  525. data/doc/classes/Instruction.src/M000144.html +0 -15
  526. data/doc/classes/Instruction.src/M000145.html +0 -15
  527. data/doc/classes/Instruction.src/M000146.html +0 -15
  528. data/doc/classes/InstructionNode.html +0 -161
  529. data/doc/classes/InstructionNode.src/M000247.html +0 -15
  530. data/doc/classes/InstructionNode.src/M000248.html +0 -16
  531. data/doc/classes/IntAbsInstruction.html +0 -218
  532. data/doc/classes/IntAbsInstruction.src/M000175.html +0 -15
  533. data/doc/classes/IntAbsInstruction.src/M000176.html +0 -15
  534. data/doc/classes/IntAbsInstruction.src/M000177.html +0 -15
  535. data/doc/classes/IntAbsInstruction.src/M000178.html +0 -15
  536. data/doc/classes/IntAddInstruction.html +0 -218
  537. data/doc/classes/IntAddInstruction.src/M000147.html +0 -15
  538. data/doc/classes/IntAddInstruction.src/M000148.html +0 -16
  539. data/doc/classes/IntAddInstruction.src/M000149.html +0 -15
  540. data/doc/classes/IntAddInstruction.src/M000150.html +0 -15
  541. data/doc/classes/IntDepthInstruction.html +0 -218
  542. data/doc/classes/IntDepthInstruction.src/M000211.html +0 -15
  543. data/doc/classes/IntDepthInstruction.src/M000212.html +0 -14
  544. data/doc/classes/IntDepthInstruction.src/M000213.html +0 -15
  545. data/doc/classes/IntDepthInstruction.src/M000214.html +0 -15
  546. data/doc/classes/IntDivideInstruction.html +0 -218
  547. data/doc/classes/IntDivideInstruction.src/M000155.html +0 -15
  548. data/doc/classes/IntDivideInstruction.src/M000156.html +0 -16
  549. data/doc/classes/IntDivideInstruction.src/M000157.html +0 -20
  550. data/doc/classes/IntDivideInstruction.src/M000158.html +0 -15
  551. data/doc/classes/IntDuplicateInstruction.html +0 -218
  552. data/doc/classes/IntDuplicateInstruction.src/M000203.html +0 -15
  553. data/doc/classes/IntDuplicateInstruction.src/M000204.html +0 -15
  554. data/doc/classes/IntDuplicateInstruction.src/M000205.html +0 -15
  555. data/doc/classes/IntDuplicateInstruction.src/M000206.html +0 -15
  556. data/doc/classes/IntEqualQInstruction.html +0 -218
  557. data/doc/classes/IntEqualQInstruction.src/M000023.html +0 -15
  558. data/doc/classes/IntEqualQInstruction.src/M000024.html +0 -16
  559. data/doc/classes/IntEqualQInstruction.src/M000025.html +0 -15
  560. data/doc/classes/IntEqualQInstruction.src/M000026.html +0 -15
  561. data/doc/classes/IntFlushInstruction.html +0 -218
  562. data/doc/classes/IntFlushInstruction.src/M000215.html +0 -15
  563. data/doc/classes/IntFlushInstruction.src/M000216.html +0 -14
  564. data/doc/classes/IntFlushInstruction.src/M000217.html +0 -14
  565. data/doc/classes/IntFlushInstruction.src/M000218.html +0 -15
  566. data/doc/classes/IntFromBoolInstruction.html +0 -218
  567. data/doc/classes/IntFromBoolInstruction.src/M000051.html +0 -15
  568. data/doc/classes/IntFromBoolInstruction.src/M000052.html +0 -15
  569. data/doc/classes/IntFromBoolInstruction.src/M000053.html +0 -15
  570. data/doc/classes/IntFromBoolInstruction.src/M000054.html +0 -15
  571. data/doc/classes/IntFromFloatInstruction.html +0 -218
  572. data/doc/classes/IntFromFloatInstruction.src/M000059.html +0 -15
  573. data/doc/classes/IntFromFloatInstruction.src/M000060.html +0 -15
  574. data/doc/classes/IntFromFloatInstruction.src/M000061.html +0 -15
  575. data/doc/classes/IntFromFloatInstruction.src/M000062.html +0 -15
  576. data/doc/classes/IntGreaterThanQInstruction.html +0 -218
  577. data/doc/classes/IntGreaterThanQInstruction.src/M000031.html +0 -15
  578. data/doc/classes/IntGreaterThanQInstruction.src/M000032.html +0 -16
  579. data/doc/classes/IntGreaterThanQInstruction.src/M000033.html +0 -15
  580. data/doc/classes/IntGreaterThanQInstruction.src/M000034.html +0 -15
  581. data/doc/classes/IntIfInstruction.html +0 -218
  582. data/doc/classes/IntIfInstruction.src/M000043.html +0 -16
  583. data/doc/classes/IntIfInstruction.src/M000044.html +0 -15
  584. data/doc/classes/IntIfInstruction.src/M000045.html +0 -14
  585. data/doc/classes/IntIfInstruction.src/M000046.html +0 -17
  586. data/doc/classes/IntLessThanQInstruction.html +0 -218
  587. data/doc/classes/IntLessThanQInstruction.src/M000027.html +0 -15
  588. data/doc/classes/IntLessThanQInstruction.src/M000028.html +0 -16
  589. data/doc/classes/IntLessThanQInstruction.src/M000029.html +0 -15
  590. data/doc/classes/IntLessThanQInstruction.src/M000030.html +0 -15
  591. data/doc/classes/IntMaxInstruction.html +0 -218
  592. data/doc/classes/IntMaxInstruction.src/M000167.html +0 -15
  593. data/doc/classes/IntMaxInstruction.src/M000168.html +0 -16
  594. data/doc/classes/IntMaxInstruction.src/M000169.html +0 -16
  595. data/doc/classes/IntMaxInstruction.src/M000170.html +0 -15
  596. data/doc/classes/IntMinInstruction.html +0 -218
  597. data/doc/classes/IntMinInstruction.src/M000171.html +0 -15
  598. data/doc/classes/IntMinInstruction.src/M000172.html +0 -16
  599. data/doc/classes/IntMinInstruction.src/M000173.html +0 -16
  600. data/doc/classes/IntMinInstruction.src/M000174.html +0 -15
  601. data/doc/classes/IntModuloInstruction.html +0 -218
  602. data/doc/classes/IntModuloInstruction.src/M000163.html +0 -15
  603. data/doc/classes/IntModuloInstruction.src/M000164.html +0 -16
  604. data/doc/classes/IntModuloInstruction.src/M000165.html +0 -20
  605. data/doc/classes/IntModuloInstruction.src/M000166.html +0 -15
  606. data/doc/classes/IntMultiplyInstruction.html +0 -218
  607. data/doc/classes/IntMultiplyInstruction.src/M000151.html +0 -15
  608. data/doc/classes/IntMultiplyInstruction.src/M000152.html +0 -16
  609. data/doc/classes/IntMultiplyInstruction.src/M000153.html +0 -15
  610. data/doc/classes/IntMultiplyInstruction.src/M000154.html +0 -15
  611. data/doc/classes/IntNegativeInstruction.html +0 -218
  612. data/doc/classes/IntNegativeInstruction.src/M000179.html +0 -15
  613. data/doc/classes/IntNegativeInstruction.src/M000180.html +0 -15
  614. data/doc/classes/IntNegativeInstruction.src/M000181.html +0 -15
  615. data/doc/classes/IntNegativeInstruction.src/M000182.html +0 -15
  616. data/doc/classes/IntPopInstruction.html +0 -218
  617. data/doc/classes/IntPopInstruction.src/M000195.html +0 -15
  618. data/doc/classes/IntPopInstruction.src/M000196.html +0 -15
  619. data/doc/classes/IntPopInstruction.src/M000197.html +0 -14
  620. data/doc/classes/IntPopInstruction.src/M000198.html +0 -14
  621. data/doc/classes/IntRandomInstruction.html +0 -218
  622. data/doc/classes/IntRandomInstruction.src/M000183.html +0 -15
  623. data/doc/classes/IntRandomInstruction.src/M000184.html +0 -14
  624. data/doc/classes/IntRandomInstruction.src/M000185.html +0 -15
  625. data/doc/classes/IntRandomInstruction.src/M000186.html +0 -15
  626. data/doc/classes/IntRotateInstruction.html +0 -218
  627. data/doc/classes/IntRotateInstruction.src/M000207.html +0 -15
  628. data/doc/classes/IntRotateInstruction.src/M000208.html +0 -17
  629. data/doc/classes/IntRotateInstruction.src/M000209.html +0 -14
  630. data/doc/classes/IntRotateInstruction.src/M000210.html +0 -17
  631. data/doc/classes/IntSubtractInstruction.html +0 -218
  632. data/doc/classes/IntSubtractInstruction.src/M000159.html +0 -15
  633. data/doc/classes/IntSubtractInstruction.src/M000160.html +0 -16
  634. data/doc/classes/IntSubtractInstruction.src/M000161.html +0 -16
  635. data/doc/classes/IntSubtractInstruction.src/M000162.html +0 -15
  636. data/doc/classes/IntSwapInstruction.html +0 -218
  637. data/doc/classes/IntSwapInstruction.src/M000199.html +0 -15
  638. data/doc/classes/IntSwapInstruction.src/M000200.html +0 -16
  639. data/doc/classes/IntSwapInstruction.src/M000201.html +0 -14
  640. data/doc/classes/IntSwapInstruction.src/M000202.html +0 -16
  641. data/doc/classes/IntType.html +0 -240
  642. data/doc/classes/IntType.src/M000235.html +0 -15
  643. data/doc/classes/IntType.src/M000236.html +0 -15
  644. data/doc/classes/IntType.src/M000237.html +0 -18
  645. data/doc/classes/IntType.src/M000238.html +0 -15
  646. data/doc/classes/IntType.src/M000239.html +0 -15
  647. data/doc/classes/LiteralNode.html +0 -183
  648. data/doc/classes/LiteralNode.src/M000251.html +0 -15
  649. data/doc/classes/LiteralNode.src/M000252.html +0 -16
  650. data/doc/classes/LiteralNode.src/M000253.html +0 -16
  651. data/doc/classes/Nudge/Channel.html +0 -437
  652. data/doc/classes/Nudge/Channel.src/M000286.html +0 -15
  653. data/doc/classes/Nudge/Channel.src/M000287.html +0 -19
  654. data/doc/classes/Nudge/Channel.src/M000288.html +0 -15
  655. data/doc/classes/Nudge/Channel.src/M000289.html +0 -15
  656. data/doc/classes/Nudge/Channel.src/M000290.html +0 -15
  657. data/doc/classes/Nudge/Channel.src/M000291.html +0 -19
  658. data/doc/classes/Nudge/Channel.src/M000292.html +0 -19
  659. data/doc/classes/Nudge/Channel.src/M000293.html +0 -17
  660. data/doc/classes/Nudge/Channel.src/M000294.html +0 -15
  661. data/doc/classes/Nudge/Channel.src/M000295.html +0 -20
  662. data/doc/classes/Nudge/Channel.src/M000296.html +0 -15
  663. data/doc/classes/Nudge/Channel.src/M000297.html +0 -17
  664. data/doc/classes/Nudge/Channel.src/M000298.html +0 -15
  665. data/doc/classes/Nudge/CodeBlock.html +0 -331
  666. data/doc/classes/Nudge/CodeBlock.src/M000263.html +0 -15
  667. data/doc/classes/Nudge/CodeBlock.src/M000264.html +0 -15
  668. data/doc/classes/Nudge/CodeBlock.src/M000265.html +0 -15
  669. data/doc/classes/Nudge/CodeBlock.src/M000266.html +0 -15
  670. data/doc/classes/Nudge/CodeBlock.src/M000267.html +0 -15
  671. data/doc/classes/Nudge/CodeBlock.src/M000268.html +0 -17
  672. data/doc/classes/Nudge/CodeBlock.src/M000269.html +0 -20
  673. data/doc/classes/Nudge/CodeBlock.src/M000270.html +0 -15
  674. data/doc/classes/Nudge/CodeBlock.src/M000271.html +0 -19
  675. data/doc/classes/Nudge/DeadLocation.html +0 -152
  676. data/doc/classes/Nudge/DeadLocation.src/M000334.html +0 -17
  677. data/doc/classes/Nudge/Erc.html +0 -335
  678. data/doc/classes/Nudge/Erc.src/M000278.html +0 -16
  679. data/doc/classes/Nudge/Erc.src/M000279.html +0 -15
  680. data/doc/classes/Nudge/Erc.src/M000280.html +0 -15
  681. data/doc/classes/Nudge/Erc.src/M000281.html +0 -15
  682. data/doc/classes/Nudge/Erc.src/M000282.html +0 -18
  683. data/doc/classes/Nudge/Erc.src/M000283.html +0 -15
  684. data/doc/classes/Nudge/Erc.src/M000284.html +0 -17
  685. data/doc/classes/Nudge/Erc.src/M000285.html +0 -15
  686. data/doc/classes/Nudge/Individual.html +0 -313
  687. data/doc/classes/Nudge/Individual.src/M000314.html +0 -21
  688. data/doc/classes/Nudge/Individual.src/M000315.html +0 -15
  689. data/doc/classes/Nudge/Individual.src/M000316.html +0 -15
  690. data/doc/classes/Nudge/Individual.src/M000317.html +0 -17
  691. data/doc/classes/Nudge/Individual.src/M000318.html +0 -25
  692. data/doc/classes/Nudge/InstructionPoint/InstructionNotFoundError.html +0 -110
  693. data/doc/classes/Nudge/InstructionPoint.html +0 -350
  694. data/doc/classes/Nudge/InstructionPoint.src/M000299.html +0 -15
  695. data/doc/classes/Nudge/InstructionPoint.src/M000300.html +0 -15
  696. data/doc/classes/Nudge/InstructionPoint.src/M000301.html +0 -17
  697. data/doc/classes/Nudge/InstructionPoint.src/M000302.html +0 -15
  698. data/doc/classes/Nudge/InstructionPoint.src/M000303.html +0 -17
  699. data/doc/classes/Nudge/InstructionPoint.src/M000304.html +0 -17
  700. data/doc/classes/Nudge/InstructionPoint.src/M000305.html +0 -17
  701. data/doc/classes/Nudge/InstructionPoint.src/M000306.html +0 -15
  702. data/doc/classes/Nudge/Interpreter.html +0 -369
  703. data/doc/classes/Nudge/Interpreter.src/M000257.html +0 -20
  704. data/doc/classes/Nudge/Interpreter.src/M000258.html +0 -19
  705. data/doc/classes/Nudge/Interpreter.src/M000259.html +0 -15
  706. data/doc/classes/Nudge/Interpreter.src/M000260.html +0 -19
  707. data/doc/classes/Nudge/Interpreter.src/M000261.html +0 -17
  708. data/doc/classes/Nudge/LiteralPoint.html +0 -291
  709. data/doc/classes/Nudge/LiteralPoint.src/M000272.html +0 -16
  710. data/doc/classes/Nudge/LiteralPoint.src/M000273.html +0 -15
  711. data/doc/classes/Nudge/LiteralPoint.src/M000274.html +0 -15
  712. data/doc/classes/Nudge/LiteralPoint.src/M000275.html +0 -18
  713. data/doc/classes/Nudge/LiteralPoint.src/M000276.html +0 -17
  714. data/doc/classes/Nudge/LiteralPoint.src/M000277.html +0 -15
  715. data/doc/classes/Nudge/Location.html +0 -525
  716. data/doc/classes/Nudge/Location.src/M000319.html +0 -19
  717. data/doc/classes/Nudge/Location.src/M000320.html +0 -15
  718. data/doc/classes/Nudge/Location.src/M000321.html +0 -26
  719. data/doc/classes/Nudge/Location.src/M000322.html +0 -15
  720. data/doc/classes/Nudge/Location.src/M000323.html +0 -20
  721. data/doc/classes/Nudge/Location.src/M000324.html +0 -16
  722. data/doc/classes/Nudge/Location.src/M000325.html +0 -25
  723. data/doc/classes/Nudge/Location.src/M000326.html +0 -15
  724. data/doc/classes/Nudge/Location.src/M000327.html +0 -21
  725. data/doc/classes/Nudge/Location.src/M000328.html +0 -16
  726. data/doc/classes/Nudge/Location.src/M000329.html +0 -15
  727. data/doc/classes/Nudge/Location.src/M000330.html +0 -16
  728. data/doc/classes/Nudge/Location.src/M000331.html +0 -20
  729. data/doc/classes/Nudge/Location.src/M000332.html +0 -17
  730. data/doc/classes/Nudge/Location.src/M000333.html +0 -17
  731. data/doc/classes/Nudge/NondominatedSubset.html +0 -196
  732. data/doc/classes/Nudge/NondominatedSubset.src/M000005.html +0 -19
  733. data/doc/classes/Nudge/NondominatedSubset.src/M000006.html +0 -19
  734. data/doc/classes/Nudge/NondominatedSubset.src/M000007.html +0 -25
  735. data/doc/classes/Nudge/NondominatedSubset.src/M000339.html +0 -19
  736. data/doc/classes/Nudge/NondominatedSubset.src/M000340.html +0 -19
  737. data/doc/classes/Nudge/NondominatedSubset.src/M000341.html +0 -25
  738. data/doc/classes/Nudge/PopulationResample.html +0 -175
  739. data/doc/classes/Nudge/PopulationResample.src/M000003.html +0 -22
  740. data/doc/classes/Nudge/PopulationResample.src/M000337.html +0 -22
  741. data/doc/classes/Nudge/ProgramPoint.html +0 -148
  742. data/doc/classes/Nudge/ProgramPoint.src/M000262.html +0 -15
  743. data/doc/classes/Nudge/RandomGuess.html +0 -176
  744. data/doc/classes/Nudge/RandomGuess.src/M000002.html +0 -21
  745. data/doc/classes/Nudge/RandomGuess.src/M000336.html +0 -21
  746. data/doc/classes/Nudge/ResampleValues.html +0 -169
  747. data/doc/classes/Nudge/ResampleValues.src/M000004.html +0 -36
  748. data/doc/classes/Nudge/ResampleValues.src/M000338.html +0 -36
  749. data/doc/classes/Nudge/SearchOperator.html +0 -175
  750. data/doc/classes/Nudge/SearchOperator.src/M000001.html +0 -15
  751. data/doc/classes/Nudge/SearchOperator.src/M000335.html +0 -15
  752. data/doc/classes/Nudge/Stack.html +0 -350
  753. data/doc/classes/Nudge/Stack.src/M000307.html +0 -15
  754. data/doc/classes/Nudge/Stack.src/M000308.html +0 -15
  755. data/doc/classes/Nudge/Stack.src/M000309.html +0 -18
  756. data/doc/classes/Nudge/Stack.src/M000310.html +0 -15
  757. data/doc/classes/Nudge/Stack.src/M000311.html +0 -15
  758. data/doc/classes/Nudge/Stack.src/M000312.html +0 -15
  759. data/doc/classes/Nudge/Stack.src/M000313.html +0 -15
  760. data/doc/classes/Nudge/UniformBackboneCrossover.html +0 -152
  761. data/doc/classes/Nudge/UniformBackboneCrossover.src/M000008.html +0 -35
  762. data/doc/classes/Nudge/UniformBackboneCrossover.src/M000342.html +0 -35
  763. data/doc/classes/Nudge.html +0 -174
  764. data/doc/classes/NudgeType.html +0 -363
  765. data/doc/classes/NudgeType.src/M000225.html +0 -17
  766. data/doc/classes/NudgeType.src/M000226.html +0 -15
  767. data/doc/classes/NudgeType.src/M000227.html +0 -15
  768. data/doc/classes/NudgeType.src/M000228.html +0 -15
  769. data/doc/classes/NudgeType.src/M000229.html +0 -15
  770. data/doc/classes/NudgeType.src/M000230.html +0 -15
  771. data/doc/classes/NudgeType.src/M000231.html +0 -15
  772. data/doc/classes/NudgeType.src/M000232.html +0 -15
  773. data/doc/classes/NudgeType.src/M000233.html +0 -15
  774. data/doc/classes/NudgeType.src/M000234.html +0 -15
  775. data/doc/created.rid +0 -1
  776. data/doc/files/lib/instructions/bool_basics_rb.html +0 -90
  777. data/doc/files/lib/instructions/comparisons_rb.html +0 -90
  778. data/doc/files/lib/instructions/conditionals_rb.html +0 -90
  779. data/doc/files/lib/instructions/conversions_rb.html +0 -90
  780. data/doc/files/lib/instructions/exec_rb.html +0 -90
  781. data/doc/files/lib/instructions/float_arithmetic_rb.html +0 -90
  782. data/doc/files/lib/instructions/float_transcendental_rb.html +0 -90
  783. data/doc/files/lib/instructions/infrastructure_rb.html +0 -100
  784. data/doc/files/lib/instructions/int_arithmetic_rb.html +0 -90
  785. data/doc/files/lib/instructions/random_value_rb.html +0 -90
  786. data/doc/files/lib/instructions/stack_manipulation_rb.html +0 -90
  787. data/doc/files/lib/interpreter/grammars/nudge_language_helpers_rb.html +0 -97
  788. data/doc/files/lib/interpreter/grammars/nudge_language_treetop.html +0 -180
  789. data/doc/files/lib/interpreter/interpreter_rb.html +0 -90
  790. data/doc/files/lib/interpreter/programPoints_rb.html +0 -90
  791. data/doc/files/lib/interpreter/stack_rb.html +0 -90
  792. data/doc/files/lib/interpreter/types/codeType_rb.html +0 -157
  793. data/doc/files/lib/interpreter/types/codeType_rb.src/M000001.html +0 -15
  794. data/doc/files/lib/interpreter/types/codeType_rb.src/M000002.html +0 -15
  795. data/doc/files/lib/interpreter/types/pushTypes_rb.html +0 -107
  796. data/doc/files/lib/nudge_rb.html +0 -152
  797. data/doc/files/lib/search/evaluators/structural_complexity_rb.html +0 -90
  798. data/doc/files/lib/search/helpers_rb.html +0 -90
  799. data/doc/files/lib/search/individual/individual_rb.html +0 -90
  800. data/doc/files/lib/search/locations/location_rb.html +0 -100
  801. data/doc/files/lib/search/operators/basic_operators_rb.html +0 -90
  802. data/doc/fr_class_index.html +0 -191
  803. data/doc/fr_file_index.html +0 -71
  804. data/doc/fr_method_index.html +0 -711
  805. data/doc/index.html +0 -21
  806. data/doc/rdoc-style.css +0 -299
  807. data/features/parser_recognizes_nudge_language.feature +0 -9
  808. data/lib/instructions/bool_basics.rb +0 -85
  809. data/lib/instructions/comparisons.rb +0 -152
  810. data/lib/instructions/conditionals.rb +0 -44
  811. data/lib/instructions/conversions.rb +0 -94
  812. data/lib/instructions/exec.rb +0 -154
  813. data/lib/instructions/float_arithmetic.rb +0 -201
  814. data/lib/instructions/float_transcendental.rb +0 -47
  815. data/lib/instructions/int_arithmetic.rb +0 -160
  816. data/lib/instructions/name_basics.rb +0 -44
  817. data/lib/instructions/name_bindings.rb +0 -65
  818. data/lib/instructions/random_value.rb +0 -43
  819. data/lib/instructions/stack_manipulation.rb +0 -739
  820. data/lib/interpreter/grammars/nudge_language.treetop +0 -83
  821. data/lib/interpreter/grammars/nudge_language_helpers.rb +0 -64
  822. data/lib/search/experiments/experiment.rb +0 -53
  823. data/lib/search/helpers.rb +0 -22
  824. data/lib/search/individual/batch.rb +0 -25
  825. data/lib/search/individual/individual.rb +0 -145
  826. data/lib/search/operators/basic_operators.rb +0 -230
  827. data/lib/search/operators/evaluators.rb +0 -107
  828. data/lib/search/operators/samplers_and_selectors.rb +0 -123
  829. data/lib/search/stations/station.rb +0 -147
  830. data/nudge.gemspec +0 -706
  831. data/push_language_coverage.md +0 -177
  832. data/script/console +0 -10
  833. data/script/destroy +0 -14
  834. data/script/generate +0 -14
  835. data/spec/data/couchdb_spec.rb +0 -2
  836. data/spec/instructions/bool_basics_spec.rb +0 -97
  837. data/spec/instructions/bool_stack_spec.rb +0 -391
  838. data/spec/instructions/code_basics_spec.rb +0 -43
  839. data/spec/instructions/code_stack_spec.rb +0 -382
  840. data/spec/instructions/comparisons_spec.rb +0 -486
  841. data/spec/instructions/conditionals_spec.rb +0 -162
  842. data/spec/instructions/conversions_spec.rb +0 -92
  843. data/spec/instructions/exec_spec.rb +0 -883
  844. data/spec/instructions/float_calculations_spec.rb +0 -148
  845. data/spec/instructions/float_stack_spec.rb +0 -382
  846. data/spec/instructions/float_transcendental_spec.rb +0 -89
  847. data/spec/instructions/int_calculations_spec.rb +0 -125
  848. data/spec/instructions/int_stack_spec.rb +0 -398
  849. data/spec/instructions/name_basics_spec.rb +0 -158
  850. data/spec/instructions/name_bindings_spec.rb +0 -257
  851. data/spec/instructions/name_stack_spec.rb +0 -382
  852. data/spec/instructions/random_values_spec.rb +0 -68
  853. data/spec/integration/search_integration.rb +0 -67
  854. data/spec/interpreter/channel_spec.rb +0 -92
  855. data/spec/interpreter/codeblock_spec.rb +0 -135
  856. data/spec/interpreter/erc_spec.rb +0 -130
  857. data/spec/interpreter/literal_spec.rb +0 -94
  858. data/spec/interpreter/parser_spec.rb +0 -324
  859. data/spec/search/batch_spec.rb +0 -30
  860. data/spec/search/experiments/experiment_spec.rb +0 -101
  861. data/spec/search/helpers_spec.rb +0 -59
  862. data/spec/search/individual_spec.rb +0 -356
  863. data/spec/search/operators/any_one_sampler_spec.rb +0 -40
  864. data/spec/search/operators/dominated_quantile_spec.rb +0 -111
  865. data/spec/search/operators/duplicate_genomes_spec.rb +0 -35
  866. data/spec/search/operators/evaluators/program_point_evaluator_spec.rb +0 -43
  867. data/spec/search/operators/evaluators/test_case_evaluator_spec.rb +0 -133
  868. data/spec/search/operators/infrastructure_spec.rb +0 -47
  869. data/spec/search/operators/most_dominated_subset_spec.rb +0 -47
  870. data/spec/search/operators/nondominated_subset_spec.rb +0 -97
  871. data/spec/search/operators/pointCrossover_spec.rb +0 -55
  872. data/spec/search/operators/pointDeletion_spec.rb +0 -57
  873. data/spec/search/operators/pointMutation_spec.rb +0 -71
  874. data/spec/search/operators/random_guess_spec.rb +0 -51
  875. data/spec/search/operators/resample_and_clone_spec.rb +0 -50
  876. data/spec/search/operators/resample_values_spec.rb +0 -126
  877. data/spec/search/operators/sizePreservingMutation_spec.rb +0 -2
  878. data/spec/search/operators/uniformBackboneCrossover_spec.rb +0 -63
  879. data/spec/search/stations/station_spec.rb +0 -496
  880. data/test/test_generator_helper.rb +0 -29
  881. data/test/test_nudge_generator.rb +0 -43
  882. /data/lib/instructions/{code_basics.rb → code/code_noop.rb} +0 -0
  883. /data/{_spikes/nested_parsing/nested.rb → spec/support/shared_examples.rb} +0 -0
@@ -1,252 +1,286 @@
1
+ #encoding: utf-8
1
2
  require File.join(File.dirname(__FILE__), "/../spec_helper")
2
3
  include Nudge
4
+
5
+
3
6
  describe "Code Type" do
4
7
 
5
- it "should return the result of self.randomize when it receives an #any_value call" do
6
- CodeType.should_receive(:random_value).and_return("hi there!")
7
- CodeType.any_value(Interpreter.new).should == "hi there!"
8
+ it "should have a #recognizes? method that returns true if the arg is a string" do
9
+ CodeType.recognizes?("").should == true
10
+ CodeType.recognizes?(NudgeProgram.new("")).should == false
11
+ CodeType.recognizes?(992).should == false
8
12
  end
9
13
 
10
14
 
15
+ it "should respond to #any_value by returning a string" do
16
+ CodeType.any_value.should be_a_kind_of(String)
17
+ end
11
18
 
12
- describe "#random_skeleton" do
13
- it "should accept params for points and branchiness" do
14
- lambda{CodeType.random_skeleton(3,1)}.should_not raise_error
19
+
20
+ it "should pass along an options Hash, if passed in" do
21
+ lambda{CodeType.any_value(target_size_in_points:2)}.should_not raise_error
22
+ NudgeProgram.new(CodeType.any_value(target_size_in_points:2)).points.should == 2
23
+ NudgeProgram.new(CodeType.any_value(target_size_in_points:33)).points.should == 33
24
+ NudgeProgram.new(CodeType.any_value).points.should == 20
25
+ end
26
+
27
+
28
+ describe StringRewritingGenerator do
29
+ before(:each) do
30
+ @sg = StringRewritingGenerator.new
15
31
  end
16
32
 
17
- it "should return a string filled with asterisks and 'block{}'" do
18
- CodeType.random_skeleton(3,0).should == "block {**}"
19
- CodeType.random_skeleton(3,1).should == "block {**}"
20
- CodeType.random_skeleton(1,1).should == "block {}"
21
- CodeType.random_skeleton(2,2).should == "block { block {}}"
22
- CodeType.random_skeleton(20,3).count("}").should == 3
33
+ it "should store the incoming options Hash in self#incoming_options" do
34
+ StringRewritingGenerator.new(foo:"bar", baz:123).incoming_options.should ==
35
+ {foo:"bar", baz:123}
23
36
  end
24
37
 
25
- it "should limit range-check the blocks parameter" do
26
- CodeType.random_skeleton(1,40).should == "block {}"
27
- CodeType.random_skeleton(4,20).count("}").should == 4
28
- CodeType.random_skeleton(4,-20).count("}").should == 1
29
- CodeType.random_skeleton(1,-20).should == "*"
38
+ it "should have defaults for everything it needs" do
39
+ lambda{StringRewritingGenerator.new()}.should_not raise_error
30
40
  end
31
- end
32
-
33
-
34
-
35
- describe "any_type" do
36
- before(:each) do
37
- @context = Interpreter.new
41
+
42
+ it "should accept options Hash argument" do
43
+ lambda{StringRewritingGenerator.new(options = {hi:"there"})}.should_not raise_error
38
44
  end
39
45
 
40
- it "should return a single sample from the #types method of the context passed in" do
41
- @context = Interpreter.new
42
- @context.disable_all_types
43
- @context.enable(IntType)
44
- CodeType.any_type(@context.types).should == IntType
46
+ it "should capture options[:target_size_in_points]" do
47
+ StringRewritingGenerator.new(target_size_in_points:7).target_size_in_points.should == 7
45
48
  end
46
49
 
47
- it "should default to the list of active types in the context" do
48
- @context.disable_all_types
49
- @context.enable(IntType)
50
- CodeType.any_type(@context.types).should == IntType
50
+ it "should have a default target_size_in_points set to 20" do
51
+ StringRewritingGenerator.new.target_size_in_points.should == 20
51
52
  end
52
53
 
53
- it "should raise an error if the list of active_types is empty and none is passed in" do
54
- @context.disable_all_types
55
- lambda{CodeType.any_type(@context.types)}.should raise_error(ArgumentError)
54
+ it "should generate a String when #generate is called" do
55
+ StringRewritingGenerator.new.generate.should be_a_kind_of(String)
56
56
  end
57
57
 
58
- it "should raise an error if the list of types passed in is empty" do
59
- @context.disable_all_types
60
- lambda{CodeType.any_type(@context.types)}.should raise_error(ArgumentError)
58
+ it "should have a default self#probabilities set to [1,1,1,1]" do
59
+ @sg.probabilities.should == {b:1, r:1, v:1, i:1}
61
60
  end
62
- end
63
-
64
-
65
-
66
- describe "any_instruction" do
67
- before(:each) do
68
- @context = Interpreter.new
61
+
62
+ it "should capture options[:probabilities] into self#probabilities" do
63
+ biased = StringRewritingGenerator.new(:probabilities => {b:3, r:97, v:0, i:0})
64
+ biased.probabilities.should == {b:3, r:97, v:0, i:0}
69
65
  end
70
66
 
71
- it "should return a single sample from the context passed in (no implied validation)" do
72
- @context.disable_all_instructions
73
- @context.enable(IntAddInstruction)
74
- CodeType.any_instruction(@context.instructions).should == IntAddInstruction
67
+ it "should raise an exception if the :probabilities hash doesn't have exactly the keys [b,r,v,i]" do
68
+ lambda{StringRewritingGenerator.new(:probabilities => {b:1, r:1, v:0, i:0})}.should_not raise_error
69
+ lambda{StringRewritingGenerator.new(:probabilities => {b:1})}.should raise_error(ArgumentError)
70
+ lambda{StringRewritingGenerator.new(:probabilities => {})}.should raise_error(ArgumentError)
71
+ lambda{StringRewritingGenerator.new(:probabilities => {b:1, r:1, v:0, i:0, q:9999})}.should
72
+ raise_error(ArgumentError)
75
73
  end
76
74
 
77
- it "should raise an error if the no instructions are active in the context and none are passed in" do
78
- @context.disable_all_instructions
79
- lambda{CodeType.any_instruction(@context.instructions)}.should raise_error(ArgumentError)
75
+ it "should raise an exception if there are no positive values in the probabilities table" do
76
+ lambda{StringRewritingGenerator.new(:probabilities => {b:0, r:0, v:0, i:0})}.should raise_error
77
+ lambda{StringRewritingGenerator.new(:probabilities => {b:-2, r:-8, v:1, i:9})}.should raise_error
80
78
  end
81
- end
82
-
83
- describe "any_reference" do
84
- before(:each) do
85
- @context = Interpreter.new
79
+
80
+ it "should capture an Array in options[:reference_names] into self#reference_names" do
81
+ lambda{StringRewritingGenerator.new(reference_names:["a"])}.should_not raise_error
82
+ StringRewritingGenerator.new(reference_names:["b"]).reference_names.should == ["b"]
86
83
  end
87
-
88
- it "should return a random reference from the context" do
89
- @context.reset_variables
90
- @context.bind_variable("x",LiteralPoint.new(:int,12))
91
- CodeType.any_reference(@context.references).should == "x"
84
+
85
+ it "should capture an Array in options[:type_names] into self#type_names" do
86
+ lambda{StringRewritingGenerator.new(type_names:["int"])}.should_not raise_error
87
+ StringRewritingGenerator.new(type_names:["code"]).type_names.should == ["code"]
88
+ end
89
+
90
+ it "should default #type_names to NudgeType::all_types" do
91
+ @sg.type_names.should == NudgeType::all_types.collect {|t| t.to_nudgecode.to_s}
92
92
  end
93
93
 
94
+ it "should capture an Array in options[:instruction_names] into self#instruction_names" do
95
+ lambda{StringRewritingGenerator.new(instruction_names:["int_add"])}.should_not raise_error
96
+ StringRewritingGenerator.new(instruction_names:["code_dup"]).instruction_names.should == ["code_dup"]
97
+ end
94
98
 
95
- it "should raise an error if the list of active references is empty" do
96
- @context.reset_variables
97
- @context.reset_names
98
- lambda{CodeType.any_reference(@context.references)}.should raise_error(ArgumentError)
99
+ it "should default #instruction_names to Instruction.all_instructions" do
100
+ @sg.instruction_names.should == Instruction.all_instructions.collect {|i| i.to_nudgecode.to_s}
99
101
  end
100
- end
101
-
102
-
103
-
104
- describe "#random_value" do
105
- before(:each) do
106
- @context = Interpreter.new
107
- @context.reset_variables
108
- @context.reset_names
109
- @context.disable_all_instructions
110
- @context.disable_all_types
102
+
103
+ it "should return an empty string if :target_size_in_points => 0" do
104
+ StringRewritingGenerator.new(target_size_in_points:0).generate.should == ""
111
105
  end
112
106
 
113
- describe "skeletons" do
114
- before(:each) do
115
- @context.enable(IntType)
107
+ it "should use #backbone to build a framework string of the right size" do
108
+ @sg.backbone.should == "*"* 20
109
+ StringRewritingGenerator.new(target_size_in_points:8).backbone.should == "********"
110
+ end
111
+
112
+ it "should use #open_framework to fill in 'b', 'i', 'v' and 'r' in all positions" do
113
+ @sg.open_framework.should be_a_kind_of(String)
114
+ @sg.open_framework.match(/[^bivr]/).should == nil
115
+ end
116
+
117
+ it "should place a 'b' at the front of the open_framework if points > 1" do
118
+ blockless = StringRewritingGenerator.new(probabilities:{b:0,i:2,v:0,r:0}, target_size_in_points:7)
119
+ blockless.open_framework.should == "biiiiii"
120
+ end
121
+
122
+ it "should use #open_framework to produce the defined proportions of letters" do
123
+ vr_only = StringRewritingGenerator.new(probabilities:{b:0,i:0,v:100,r:10}, target_size_in_points:1000)
124
+ one_possible_framework = vr_only.open_framework
125
+ vs = one_possible_framework.count "v"
126
+ rs = one_possible_framework.count "r"
127
+ bs = one_possible_framework.count "b"
128
+ bs.should == 1
129
+ (vs/rs).should > 1
130
+ end
131
+
132
+ it "should use #closed_framework to fill in a final brace" do
133
+ @sg.closed_framework("i").should == "i"
134
+ @sg.closed_framework("v").should == "v"
135
+ @sg.closed_framework("r").should == "r"
136
+ @sg.closed_framework("b").should == "b{}"
137
+ @sg.closed_framework("biiii").should == "b{iiii}"
138
+ @sg.closed_framework("birvriviiriv").should == "b{irvriviiriv}"
139
+ end
140
+
141
+ it "should use #closed_framework to fill in internal braces" do
142
+ long = @sg.closed_framework("b"*100)
143
+ long.count('{').should == long.count('}')
144
+ long.index('}{').should == nil
145
+ long.index('b}').should == nil
146
+ end
147
+
148
+ describe "filling in the program point statements with #filled_framework" do
149
+ it "should return a Hash of two new strings, with keys :code_part and :footnote_part" do
150
+ @sg.filled_framework.should be_a_kind_of(Hash)
151
+ @sg.filled_framework.length.should == 2
152
+ @sg.filled_framework.keys.should == [:code_part, :footnote_part]
153
+ @sg.filled_framework.values.each {|v| v.should be_a_kind_of(String)}
116
154
  end
117
155
 
118
- it "should use a points parameter to set the length" do
119
- rp = CodeType.random_value(@context,:points => 3)
156
+ it "should replace all the 'b' characters with the string 'block ' in the :code_part" do
157
+ @sg.filled_framework('b{}')[:code_part].should == 'block {}'
158
+ @sg.filled_framework('b{b{}b{b{}}}')[:code_part].should == 'block {block {}block {block {}}}'
159
+ end
160
+
161
+ it "should replace all the 'i' characters with the string 'do [inst_name]' in the :code_part" do
162
+ one_choice = StringRewritingGenerator.new(instruction_names:["foo"])
163
+ one_choice.filled_framework('i')[:code_part].should == 'do foo'
164
+ one_choice.filled_framework('b{i}')[:code_part].should include('{do foo')
165
+ one_choice.filled_framework('b{ii}')[:code_part].should include("do foo do foo")
120
166
  end
121
167
 
122
- it "should by default generate a random skeleton" do
123
- CodeType.should_receive(:random_skeleton).and_return("**")
124
- rp = CodeType.random_value(@context,:points => 2)
168
+ it "should sample the instruction_names randomly" do
169
+ two_choices = StringRewritingGenerator.new(instruction_names:["foo", "bar"])
170
+ two_choices.instruction_names.should_receive(:sample).exactly(2).times.
171
+ and_return(["foo", "bar"].sample)
172
+ two_choices.filled_framework('b{ii}')[:code_part]
125
173
  end
126
174
 
127
- it "should allow a skeleton to be passed in as a param" do
128
- CodeType.should_not_receive(:random_skeleton)
129
- rp = CodeType.random_value(@context,:skeleton => "**")
175
+ it "should replace all the 'r' characters with the string 'ref [ref_name]' in the :code_part" do
176
+ one_choice = StringRewritingGenerator.new(reference_names:["x1"])
177
+ one_choice.filled_framework('r')[:code_part].should == 'ref x1'
178
+ one_choice.filled_framework('b{r}')[:code_part].should == 'block {ref x1 }'
179
+ one_choice.filled_framework('b{rr}')[:code_part].should == "block {ref x1 ref x1 }"
130
180
  end
131
181
 
132
- it "should allow a partially filled-in skeleton to be passed in" do
133
- rp = CodeType.random_value(@context,:skeleton => "* do thing")
134
- rp.should include(" do thing")
135
- rp.should_not include("*")
182
+ it "should sample the reference_names randomly" do
183
+ two_choices = StringRewritingGenerator.new(reference_names:["x", "y"])
184
+ two_choices.reference_names.should_receive(:sample).exactly(2).times.
185
+ and_return("x","y")
186
+ two_choices.filled_framework('b{rr}')[:code_part].should == "block {ref x ref y }"
136
187
  end
137
188
 
138
- it "should always return a one-line program listing (no linefeeds)" do
139
- rp = CodeType.random_value(@context, :points => 10, :blocks => 5)
140
- rp.should_not include("\n")
189
+ it "should generate a novel (and non-conflicting) ref_name if there are none defined" do
190
+ no_choices = StringRewritingGenerator.new
191
+ no_choices.filled_framework('r')[:code_part].should == "ref aaa001"
192
+ no_choices.filled_framework('r')[:code_part].should == "ref aaa002"
193
+ no_choices.filled_framework('b{rr}')[:code_part].should == "block {ref aaa003 ref aaa004 }"
141
194
  end
142
195
 
143
- it "should use '@' as a placeholder that is not replaced with code" do
144
- rp = CodeType.random_value(@context, :skeleton => "@ do thing")
145
- rp.should == "@ do thing"
196
+ it "should replace all the 'v' characters with the string 'value «[ref_name]»' in the :code_part" do
197
+ one_choice = StringRewritingGenerator.new(type_names:["int"])
198
+ one_choice.filled_framework('v')[:code_part].should == 'value «int»'
199
+ one_choice.filled_framework('b{v}')[:code_part].should == 'block {value «int» }'
200
+ one_choice.filled_framework('b{vv}')[:code_part].should == "block {value «int» value «int» }"
146
201
  end
147
- end
148
-
149
- describe "argument checking" do
150
- it "should raise an ArgumentError if there are no Instructions, References or Types" do
151
- @context.reset_variables
152
- @context.reset_names
153
- @context.disable_all_types
154
- @context.disable_all_instructions
155
- lambda{CodeType.random_value(@context)}.should raise_error
202
+
203
+ it "should sample the type_names randomly" do
204
+ two_choices = StringRewritingGenerator.new(type_names:["foo", "bar"])
205
+ two_choices.type_names.should_receive(:sample).exactly(2).times.
206
+ and_return("foo","bar")
207
+ two_choices.filled_framework('b{vv}')[:code_part].should == "block {value «foo» value «bar» }"
156
208
  end
157
- end
158
-
159
- describe "program leaves" do
160
- describe "instructions" do
161
- it "should work when there are no active instructions" do
162
- @context.bind_variable("x",LiteralPoint.new(:int,12))
163
- @context.enable(IntType)
164
- lambda{CodeType.random_value(@context)}.should_not raise_error
165
- end
166
-
167
- it "should default to a sample of the active instructions" do
168
- @context.should_receive(:instructions).and_return([IntAddInstruction])
169
- CodeType.random_value(@context)
170
- end
209
+
210
+ it "should generate a footnote even if there is no class defined for the type" do
211
+ no_choices = StringRewritingGenerator.new(type_names:[])
212
+ no_choices.filled_framework('v')[:code_part].should == "value «unknown»"
213
+ no_choices.filled_framework('v')[:footnote_part].should == "«unknown»"
171
214
 
172
- it "should allow a list of instructions to be passed in as a param" do
173
- lambda{CodeType.random_value(@context,:instructions => [IntAddInstruction])}.should_not raise_error
174
- end
215
+ two_choices = StringRewritingGenerator.new(type_names:["baz", "qux"])
216
+ two_choices.type_names.should_receive(:sample).exactly(2).times.
217
+ and_return("baz","qux")
218
+ two_choices.filled_framework('b{vv}')[:footnote_part].should == "«baz» \n«qux»"
175
219
  end
176
220
 
177
- describe "channels" do
178
- it "should work when there are no active channels" do
179
- @context.enable(IntAddInstruction)
180
- @context.enable(IntType)
181
- lambda{CodeType.random_value(@context)}.should_not raise_error
182
- end
221
+ it "should generate a footnote if there is a defined random_value method for that type" do
222
+ one_choice = StringRewritingGenerator.new(type_names:["int"])
223
+ IntType.should_receive(:any_value).and_return(129)
224
+ one_choice.filled_framework('v')[:footnote_part].should == "«int» 129"
183
225
 
184
- it "should default to a sample of active variables and names" do
185
- @context.should_receive(:references).and_return(["x"])
186
- CodeType.random_value(@context)
187
- end
226
+ one_choice = StringRewritingGenerator.new(type_names:["bool"])
227
+ BoolType.should_receive(:any_value).and_return(false)
228
+ one_choice.filled_framework('v')[:footnote_part].should == "«bool» false"
188
229
 
189
- it "should allow a list of channel names to be passed in as a param" do
190
- lambda{CodeType.random_value(@context,:references => ["x"])}.should_not raise_error
191
- end
230
+ one_choice = StringRewritingGenerator.new(type_names:["float"])
231
+ FloatType.should_receive(:any_value).and_return(0.1234)
232
+ one_choice.filled_framework('v')[:footnote_part].should == "«float» 0.1234"
192
233
  end
193
234
 
194
- describe "types" do
195
- it "should work when there are no active types" do
196
- @context.bind_variable("x",LiteralPoint.new(:int,12))
197
- @context.enable(IntAddInstruction)
198
- lambda{CodeType.random_value(@context)}.should_not raise_error
235
+ describe "should work for :code values as well!" do
236
+ it "should use the CodeType.any_value call" do
237
+ one_scary_choice = StringRewritingGenerator.new(type_names:["code"])
238
+ CodeType.should_receive(:any_value).and_return("block {}")
239
+ one_scary_choice.filled_framework('v')[:footnote_part].should == "«code» block {}"
199
240
  end
200
241
 
201
- it "should default to a sample of active types" do
202
- @context.should_receive(:types).and_return([IntType])
203
- CodeType.random_value(@context)
242
+
243
+ it "should reduce the :target_size_in_points in every recursive call" do
244
+ one_scary_choice = StringRewritingGenerator.new(type_names:["code"], target_size_in_points:8)
245
+ CodeType.should_receive(:any_value).with(hash_not_including(:target_size_in_points => 8))
246
+ one_scary_choice.filled_framework('v')
247
+ # this could be more accurate; at present it just checks the value changes
248
+ # writing the rspec matcher for the actual test would be better
204
249
  end
205
250
 
206
- it "should allow a list of types to be passed in as a param" do
207
- lambda{CodeType.random_value(@context,:types => [BoolType])}.should_not raise_error
251
+ it "should add footnotes at the end of :footnote_part in the order they're added in code" do
252
+ three_types = StringRewritingGenerator.new(type_names:["int", "bool", "float"])
253
+ diceroll = three_types.filled_framework('b{vvvvvvvvv}')
254
+ diceroll[:code_part].scan(/«(...|....)»/).should ==
255
+ diceroll[:footnote_part].scan(/«(...|....)»/)
208
256
  end
257
+
258
+ it "should generate any needed sub-footnote values from within other footnote values" do
259
+ nestable = StringRewritingGenerator.new(
260
+ type_names:["int", "code"], probabilities:{b:0,v:10,r:0,i:0})
261
+ # test this by generating a pile of nested footnotes and cycling them through the parser
262
+ diceroll = nestable.filled_framework('b{vvvvvvvvvvvvv}')
263
+ as_nudge = NudgeProgram.new("#{diceroll[:code_part]}\n#{diceroll[:footnote_part]}")
264
+ cycled = as_nudge.blueprint
265
+ cycled.scan(/«(...|....)»/).should ==
266
+ (diceroll[:code_part]+diceroll[:footnote_part]).scan(/«(...|....)»/)
267
+ end
209
268
  end
210
269
  end
211
- end
212
-
213
-
214
-
215
- describe "roulette_wheel" do
216
- it "should take three lists as parameters" do
217
- lambda{CodeType.roulette_wheel()}.should raise_error
218
- lambda{CodeType.roulette_wheel([1])}.should raise_error
219
- lambda{CodeType.roulette_wheel([1],[2])}.should raise_error
220
- lambda{CodeType.roulette_wheel([1],[2],[3])}.should_not raise_error
221
- end
222
-
223
- it "should map its three lists to (references, instructions, types) respectively" do
224
- CodeType.should_receive(:rand).and_return(1)
225
- CodeType.roulette_wheel([1],[2],[3]).should == "reference"
226
- CodeType.should_receive(:rand).and_return(2)
227
- CodeType.roulette_wheel([1],[2],[3]).should == "instruction"
228
- CodeType.should_receive(:rand).and_return(3)
229
- CodeType.roulette_wheel([1],[2],[3]).should == "sample"
230
- end
231
-
232
- it "should raise an exception if a bad value is returned (for next spec)" do
233
- CodeType.should_receive(:rand).and_return(99)
234
- lambda{CodeType.roulette_wheel([1],[2],[3])}.should raise_error
235
- end
236
-
237
- it "should have a uniform probability of picking any item" do
238
- CodeType.should_receive(:rand).and_return(1)
239
- CodeType.roulette_wheel([1],[2,3],[4,5,6]).should == "reference"
240
- CodeType.should_receive(:rand).and_return(3)
241
- CodeType.roulette_wheel([1],[2,3],[4,5,6]).should == "instruction"
242
- CodeType.should_receive(:rand).and_return(6)
243
- CodeType.roulette_wheel([1],[2,3],[4,5,6]).should == "sample"
270
+
271
+
272
+ it "should have a expected number of points" do
273
+ stubby = StringRewritingGenerator.new(target_size_in_points:1)
274
+ frilly = StringRewritingGenerator.new(target_size_in_points:100, probabilities:{b:10,i:1,v:0,r:0})
275
+ rambly = StringRewritingGenerator.new(target_size_in_points:20, probabilities:{b:0,i:0,v:1,r:0},
276
+ type_names:["code","int"])
244
277
 
245
- # OK here's the logic: if it's one higher, it'll fail because every entry gets exactly one
246
- CodeType.should_receive(:rand).and_return(6,7)
247
- lambda{CodeType.roulette_wheel([1,2,3],[4,5],[6])}.should_not raise_error
248
- lambda{CodeType.roulette_wheel([1,2,3],[4,5],[6])}.should raise_error
278
+
279
+ NudgeProgram.new(stubby.generate).points.should == 1
280
+ NudgeProgram.new(frilly.generate).points.should == 100
281
+ NudgeProgram.new(rambly.generate).points.should == 20
249
282
  end
283
+
250
284
  end
251
285
 
252
286
  end
@@ -33,6 +33,20 @@ describe "InstructionPoint" do
33
33
  end
34
34
  end
35
35
 
36
+ describe "#blueprint_parts" do
37
+ it "should return an Array containing (1) InstructionPoint#tidy and (2) an empty string" do
38
+ myIP = InstructionPoint.new("bah_8")
39
+ myIP.blueprint_parts.should == [myIP.tidy,""]
40
+ end
41
+ end
42
+
43
+ describe "#blueprint" do
44
+ it "should work just like #tidy" do
45
+ InstructionPoint.new("low_ball").blueprint.should == "do low_ball"
46
+ end
47
+ end
48
+
49
+
36
50
  [["plant_water","PlantWaterInstruction"],["opinion_greaterthan?", "OpinionGreaterthan?Instruction"]].each do |inp|
37
51
  it "should know the appropriate class name for the Instruction singleton for #{inp}" do
38
52
  pointName = inp[0]
@@ -49,8 +63,8 @@ describe "InstructionPoint" do
49
63
  myI = InstructionPoint.new("my_thing")
50
64
  myI.classLookup.should == MyThingInstruction
51
65
  end
52
-
53
- it "should raise a InstructionNotFoundError if the class doesn't exist" do
66
+
67
+ it "should raise an InstructionNotFoundError if the class doesn't exist" do
54
68
  myI = InstructionPoint.new("foo_baz")
55
69
  lambda{myI.classLookup}.should raise_error(InstructionPoint::InstructionNotFoundError)
56
70
  end
@@ -62,36 +76,84 @@ describe "InstructionPoint" do
62
76
  context.instructions_library[IntAddInstruction].should_receive(:go)
63
77
  myI = InstructionPoint.new("int_add").go(context)
64
78
  end
65
- end
66
-
67
- describe "randomize" do
68
- before(:each) do
69
- @context = Interpreter.new
70
- @context.enable_all_instructions
79
+
80
+ it "should push an :error ValuePoint if the instruction is not active" do
81
+ context = Interpreter.new
82
+ context.disable(IntAddInstruction)
83
+ myI = InstructionPoint.new("int_add").go(context)
84
+ context.stacks[:error].depth.should == 1
85
+ context.stacks[:error].peek.raw.should ==
86
+ "IntAddInstruction is not an active instruction in this context"
71
87
  end
72
88
 
73
- it "should return one of the active instructions" do
74
- myInstrP = InstructionPoint.new("float_multiply")
75
- @context.disable_all_instructions
76
- @context.enable(IntAddInstruction)
77
- myInstrP.randomize(@context)
78
- myInstrP.name.should == "int_add"
89
+ it "should push an :error ValuePoint if the instruction doesn't exist" do
90
+ context = Interpreter.new
91
+ myI = InstructionPoint.new("i_will_fail").go(context)
92
+ context.stacks[:error].depth.should == 1
93
+ context.stacks[:error].peek.raw.should include("IWillFailInstruction")
79
94
  end
95
+
80
96
  end
81
97
 
82
- describe "any" do
83
- before(:each) do
84
- @context = Interpreter.new
85
- @context.enable_all_instructions
98
+
99
+ describe "#needs" do
100
+ it "should check the stack depth" do
101
+ context = Interpreter.new
102
+ 2.times {context.stacks[:foo].push ValuePoint.new("foo")}
103
+ dummy = Instruction.new(context)
104
+ context.stacks[:foo].should_receive(:depth).and_return(2)
105
+ dummy.needs(:foo)
106
+ end
107
+
108
+ it "should check there's at least one thing on a stack, if the number isn't specified" do
109
+ context = Interpreter.new
110
+ 2.times {context.stacks[:foo].push ValuePoint.new("foo")}
111
+ dummy = Instruction.new(context)
112
+ lambda{dummy.needs :foo}.should_not raise_error
113
+ lambda{dummy.needs :bar}.should raise_error
114
+ end
115
+
116
+ it "should check there's enough things on a stack, if the number is specified" do
117
+ context = Interpreter.new
118
+ 2.times {context.stacks[:foo].push ValuePoint.new("foo")}
119
+ dummy = Instruction.new(context)
120
+ lambda{dummy.needs :foo, 2}.should_not raise_error
121
+ lambda{dummy.needs :foo, 9}.should raise_error
122
+ end
123
+
124
+ it "should return 'true' if it works" do
125
+ context = Interpreter.new
126
+ 1.times {context.stacks[:foo].push ValuePoint.new("foo")}
127
+ dummy = Instruction.new(context)
128
+ dummy.needs(:foo).should == true
129
+ lambda{dummy.needs :foo, 2}.should raise_error
86
130
  end
87
131
 
88
- it "should return a new instance of an instruction, invoking randomize" do
89
- someI = InstructionPoint.any(@context)
90
- someI.should be_a_kind_of(InstructionPoint)
91
- @context.disable_all_instructions
92
- @context.enable(FloatSubtractInstruction)
93
- someI = InstructionPoint.any(@context)
94
- someI.name.should == "float_subtract"
132
+ it "should alternately accept an instruction class name (in constant form)" do
133
+ context = Interpreter.new
134
+ context.enable(IntAddInstruction)
135
+ dummy = Instruction.new(context)
136
+ lambda{dummy.needs(IntAddInstruction)}.should_not raise_error
137
+ end
138
+
139
+ it "should return true if that instruction class constant is an active instruction" do
140
+ context = Interpreter.new
141
+ context.enable(IntAddInstruction)
142
+ dummy = Instruction.new(context)
143
+ dummy.needs(IntAddInstruction).should == true
144
+ end
145
+
146
+ it "should raise an exception if the class is not active" do
147
+ context = Interpreter.new
148
+ context.disable(IntAddInstruction)
149
+ dummy = Instruction.new(context)
150
+ lambda{dummy.needs(IntAddInstruction)}.should raise_error(Instruction::MissingInstructionError)
151
+ end
152
+
153
+ it "should raise an ActiveSupport exception if the class is not defined" do
154
+ context = Interpreter.new
155
+ lambda{Instruction.new(context).needs(FooBazInstruction)}.should raise_error(ArgumentError,
156
+ "Anonymous modules have no name to be referenced by")
95
157
  end
96
158
  end
97
159
  end