gobstones 0.0.2 → 0.0.3

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 (168) hide show
  1. checksums.yaml +5 -5
  2. data/.rubocop.yml +133 -0
  3. data/.rubocop_todo.yml +75 -0
  4. data/.simplecov +1 -3
  5. data/.tool-versions +1 -0
  6. data/.travis.yml +9 -2
  7. data/Gemfile +11 -5
  8. data/Gemfile.lock +65 -39
  9. data/README.md +8 -1
  10. data/Rakefile +1 -1
  11. data/bin/gobstones +1 -1
  12. data/gobstones.gemspec +12 -11
  13. data/lib/gobstones/cli/printer.rb +41 -28
  14. data/lib/gobstones/cli/runner.rb +50 -15
  15. data/lib/gobstones/extensions/all.rb +1 -1
  16. data/lib/gobstones/extensions/boolean.rb +1 -5
  17. data/lib/gobstones/extensions/{fixnum.rb → integer.rb} +2 -4
  18. data/lib/gobstones/extensions/string.rb +1 -3
  19. data/lib/gobstones/lang/all.rb +3 -3
  20. data/lib/gobstones/lang/commands/all.rb +11 -10
  21. data/lib/gobstones/lang/commands/boom.rb +26 -0
  22. data/lib/gobstones/lang/commands/command_block.rb +23 -23
  23. data/lib/gobstones/lang/commands/conditional.rb +26 -0
  24. data/lib/gobstones/lang/commands/if.rb +13 -0
  25. data/lib/gobstones/lang/commands/if_then_else.rb +26 -0
  26. data/lib/gobstones/lang/commands/ir_al_origen.rb +15 -0
  27. data/lib/gobstones/lang/commands/mover.rb +23 -0
  28. data/lib/gobstones/lang/commands/multiple_assignment.rb +34 -21
  29. data/lib/gobstones/lang/commands/poner.rb +31 -0
  30. data/lib/gobstones/lang/commands/procedure_call.rb +8 -8
  31. data/lib/gobstones/lang/commands/repeat_with.rb +69 -0
  32. data/lib/gobstones/lang/commands/sacar.rb +29 -0
  33. data/lib/gobstones/lang/commands/single_assignment.rb +15 -20
  34. data/lib/gobstones/lang/commands/skip.rb +15 -0
  35. data/lib/gobstones/lang/commands/vaciar_tablero.rb +15 -0
  36. data/lib/gobstones/lang/commands/while.rb +20 -0
  37. data/lib/gobstones/lang/definitions/definition.rb +16 -23
  38. data/lib/gobstones/lang/definitions/definition_call.rb +7 -15
  39. data/lib/gobstones/lang/definitions/function.rb +1 -7
  40. data/lib/gobstones/lang/definitions/main.rb +1 -8
  41. data/lib/gobstones/lang/definitions/no_return_statement.rb +2 -8
  42. data/lib/gobstones/lang/definitions/procedure.rb +1 -7
  43. data/lib/gobstones/lang/definitions/return_from_function.rb +6 -13
  44. data/lib/gobstones/lang/definitions/return_from_main.rb +15 -10
  45. data/lib/gobstones/lang/definitions/var_tuple.rb +10 -12
  46. data/lib/gobstones/lang/expressions/arithmetic_expressions.rb +17 -27
  47. data/lib/gobstones/lang/expressions/boolean_expressions.rb +4 -10
  48. data/lib/gobstones/lang/expressions/comparison_expressions.rb +0 -16
  49. data/lib/gobstones/lang/expressions/enclosed_by_parens_expression.rb +3 -5
  50. data/lib/gobstones/lang/expressions/expression.rb +18 -0
  51. data/lib/gobstones/lang/expressions/function_call.rb +9 -6
  52. data/lib/gobstones/lang/expressions/one_arg_expression.rb +8 -16
  53. data/lib/gobstones/lang/expressions/primitive_functions.rb +24 -16
  54. data/lib/gobstones/lang/expressions/two_arg_expression.rb +9 -16
  55. data/lib/gobstones/lang/expressions/type_bound_functions.rb +30 -25
  56. data/lib/gobstones/lang/expressions/var_name.rb +9 -13
  57. data/lib/gobstones/lang/literals/all.rb +3 -3
  58. data/lib/gobstones/lang/literals/{booleans.rb → boolean.rb} +24 -22
  59. data/lib/gobstones/lang/literals/{colors.rb → color.rb} +4 -14
  60. data/lib/gobstones/lang/literals/{directions.rb → direction.rb} +3 -13
  61. data/lib/gobstones/lang/literals/literal.rb +35 -27
  62. data/lib/gobstones/lang/literals/number.rb +6 -8
  63. data/lib/gobstones/lang/program.rb +9 -16
  64. data/lib/gobstones/modules/equality_definition.rb +23 -0
  65. data/lib/gobstones/parser/ast/ast.rb +48 -70
  66. data/lib/gobstones/parser/parse_error.rb +2 -7
  67. data/lib/gobstones/parser/treetop_parser.rb +9 -14
  68. data/lib/gobstones/runner/board.rb +12 -15
  69. data/lib/gobstones/runner/cell.rb +14 -20
  70. data/lib/gobstones/runner/errors/all.rb +1 -1
  71. data/lib/gobstones/runner/errors/boom_error.rb +0 -5
  72. data/lib/gobstones/runner/errors/definition_not_found_error.rb +7 -7
  73. data/lib/gobstones/runner/errors/empty_cell_error.rb +0 -5
  74. data/lib/gobstones/runner/errors/gobstones_runtime_error.rb +0 -5
  75. data/lib/gobstones/runner/errors/gobstones_type_error.rb +2 -7
  76. data/lib/gobstones/runner/errors/out_of_board_error.rb +0 -5
  77. data/lib/gobstones/runner/errors/undefined_variable_error.rb +6 -4
  78. data/lib/gobstones/runner/errors/wrong_arguments_error.rb +0 -5
  79. data/lib/gobstones/runner/execution_context.rb +16 -33
  80. data/lib/gobstones/runner/head.rb +17 -20
  81. data/lib/gobstones/runner/program_result.rb +12 -0
  82. data/lib/gobstones/type_check_result.rb +0 -4
  83. data/spec/lang/commands/boom_spec.rb +7 -0
  84. data/spec/lang/commands/command_block_spec.rb +15 -0
  85. data/spec/lang/commands/if_spec.rb +32 -0
  86. data/spec/lang/commands/if_then_else_spec.rb +19 -0
  87. data/spec/lang/commands/ir_al_origen_spec.rb +11 -0
  88. data/spec/lang/commands/mover_spec.rb +30 -0
  89. data/spec/lang/commands/multiple_assignment_spec.rb +39 -22
  90. data/spec/lang/commands/poner_spec.rb +27 -0
  91. data/spec/lang/commands/procedure_call_spec.rb +26 -28
  92. data/spec/lang/commands/procedure_spec.rb +32 -32
  93. data/spec/lang/commands/repeat_with_spec.rb +64 -0
  94. data/spec/lang/commands/sacar_spec.rb +32 -0
  95. data/spec/lang/commands/single_assignment_spec.rb +5 -6
  96. data/spec/lang/commands/skip_spec.rb +10 -0
  97. data/spec/lang/commands/vaciar_tablero_spec.rb +10 -0
  98. data/spec/lang/commands/while_spec.rb +39 -0
  99. data/spec/lang/definitions/main_spec.rb +34 -0
  100. data/spec/lang/definitions/no_return_statement_spec.rb +4 -5
  101. data/spec/lang/definitions/var_tuple_spec.rb +4 -7
  102. data/spec/lang/expressions/arithmetic_expressions_spec.rb +37 -64
  103. data/spec/lang/expressions/boolean_expressions_spec.rb +25 -34
  104. data/spec/lang/expressions/comparison_expressions_spec.rb +109 -155
  105. data/spec/lang/expressions/enclosed_by_parens_expression_spec.rb +3 -7
  106. data/spec/lang/expressions/function_call_spec.rb +24 -20
  107. data/spec/lang/expressions/primitive_functions_spec.rb +28 -39
  108. data/spec/lang/expressions/type_bound_functions_spec.rb +10 -18
  109. data/spec/lang/expressions/var_name_spec.rb +8 -12
  110. data/spec/lang/literals/{booleans_spec.rb → boolean_spec.rb} +3 -5
  111. data/spec/lang/literals/color_spec.rb +19 -0
  112. data/spec/lang/literals/direction_spec.rb +46 -0
  113. data/spec/lang/literals/{numbers_spec.rb → number_spec.rb} +3 -4
  114. data/spec/matchers/parse_matcher.rb +9 -11
  115. data/spec/parser/arithmetic_expressions_spec.rb +51 -61
  116. data/spec/parser/assignments_spec.rb +21 -31
  117. data/spec/parser/boolean_expressions_spec.rb +35 -43
  118. data/spec/parser/command_block_spec.rb +18 -20
  119. data/spec/parser/data_types_spec.rb +9 -19
  120. data/spec/parser/function_calls_spec.rb +19 -19
  121. data/spec/parser/function_definitions_spec.rb +17 -22
  122. data/spec/parser/gobstones_program_spec.rb +30 -30
  123. data/spec/parser/if_command_spec.rb +19 -28
  124. data/spec/parser/main_definition_spec.rb +13 -16
  125. data/spec/parser/nested_expressions_spec.rb +20 -24
  126. data/spec/parser/primitive_expressions_spec.rb +33 -38
  127. data/spec/parser/procedure_calls_spec.rb +17 -18
  128. data/spec/parser/procedure_definitions_spec.rb +12 -15
  129. data/spec/parser/repeat_with_command_spec.rb +10 -10
  130. data/spec/parser/simple_commands_spec.rb +23 -37
  131. data/spec/parser/treetop_parser_spec.rb +87 -83
  132. data/spec/parser/var_tuple_spec.rb +8 -12
  133. data/spec/parser/while_command_spec.rb +11 -14
  134. data/spec/runner/board_spec.rb +28 -33
  135. data/spec/runner/cell_spec.rb +21 -28
  136. data/spec/runner/execution_context_spec.rb +18 -35
  137. data/spec/runner/head_spec.rb +54 -60
  138. data/spec/spec_helper.rb +10 -1
  139. data/spec/support/board_assertions.rb +18 -0
  140. data/spec/{gobstones_lang_test_objects.rb → support/gobstones_lang_test_objects.rb} +6 -4
  141. data/spec/type_checker_spec.rb +19 -25
  142. metadata +80 -56
  143. data/.ruby-version +0 -1
  144. data/lib/gobstones/lang/commands/boom_cmd.rb +0 -31
  145. data/lib/gobstones/lang/commands/conditional_cmd.rb +0 -31
  146. data/lib/gobstones/lang/commands/if_cmd.rb +0 -38
  147. data/lib/gobstones/lang/commands/ir_al_origen_cmd.rb +0 -19
  148. data/lib/gobstones/lang/commands/mover_cmd.rb +0 -27
  149. data/lib/gobstones/lang/commands/poner_cmd.rb +0 -35
  150. data/lib/gobstones/lang/commands/repeat_with_cmd.rb +0 -77
  151. data/lib/gobstones/lang/commands/sacar_cmd.rb +0 -33
  152. data/lib/gobstones/lang/commands/skip_cmd.rb +0 -19
  153. data/lib/gobstones/lang/commands/vaciar_tablero_cmd.rb +0 -19
  154. data/lib/gobstones/lang/commands/while_cmd.rb +0 -25
  155. data/lib/gobstones/modules/equal_by_class.rb +0 -13
  156. data/spec/lang/commands/boom_cmd_spec.rb +0 -8
  157. data/spec/lang/commands/cmd_block_spec.rb +0 -21
  158. data/spec/lang/commands/if_cmd_spec.rb +0 -50
  159. data/spec/lang/commands/ir_al_origen_cmd_spec.rb +0 -16
  160. data/spec/lang/commands/mover_cmd_spec.rb +0 -36
  161. data/spec/lang/commands/poner_cmd_spec.rb +0 -28
  162. data/spec/lang/commands/repeat_with_cmd_spec.rb +0 -60
  163. data/spec/lang/commands/sacar_cmd_spec.rb +0 -35
  164. data/spec/lang/commands/skip_cmd_spec.rb +0 -12
  165. data/spec/lang/commands/vaciar_tablero_cmd_spec.rb +0 -14
  166. data/spec/lang/commands/while_cmd_spec.rb +0 -43
  167. data/spec/lang/literals/colors_spec.rb +0 -13
  168. data/spec/lang/literals/directions_spec.rb +0 -45
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gobstones
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nahuel Garbezza
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-10 00:00:00.000000000 Z
11
+ date: 2020-02-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: treetop
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.6'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.6'
27
41
  description: Ruby implementation of the Gobstones programming language
28
42
  email:
29
43
  - n.garbezza@gmail.com
@@ -34,8 +48,10 @@ extra_rdoc_files: []
34
48
  files:
35
49
  - ".gitignore"
36
50
  - ".rspec"
37
- - ".ruby-version"
51
+ - ".rubocop.yml"
52
+ - ".rubocop_todo.yml"
38
53
  - ".simplecov"
54
+ - ".tool-versions"
39
55
  - ".travis.yml"
40
56
  - CHANGELOG
41
57
  - Gemfile
@@ -51,25 +67,26 @@ files:
51
67
  - lib/gobstones/cli/runner.rb
52
68
  - lib/gobstones/extensions/all.rb
53
69
  - lib/gobstones/extensions/boolean.rb
54
- - lib/gobstones/extensions/fixnum.rb
70
+ - lib/gobstones/extensions/integer.rb
55
71
  - lib/gobstones/extensions/string.rb
56
72
  - lib/gobstones/lang/all.rb
57
73
  - lib/gobstones/lang/commands/all.rb
58
- - lib/gobstones/lang/commands/boom_cmd.rb
74
+ - lib/gobstones/lang/commands/boom.rb
59
75
  - lib/gobstones/lang/commands/command_block.rb
60
- - lib/gobstones/lang/commands/conditional_cmd.rb
61
- - lib/gobstones/lang/commands/if_cmd.rb
62
- - lib/gobstones/lang/commands/ir_al_origen_cmd.rb
63
- - lib/gobstones/lang/commands/mover_cmd.rb
76
+ - lib/gobstones/lang/commands/conditional.rb
77
+ - lib/gobstones/lang/commands/if.rb
78
+ - lib/gobstones/lang/commands/if_then_else.rb
79
+ - lib/gobstones/lang/commands/ir_al_origen.rb
80
+ - lib/gobstones/lang/commands/mover.rb
64
81
  - lib/gobstones/lang/commands/multiple_assignment.rb
65
- - lib/gobstones/lang/commands/poner_cmd.rb
82
+ - lib/gobstones/lang/commands/poner.rb
66
83
  - lib/gobstones/lang/commands/procedure_call.rb
67
- - lib/gobstones/lang/commands/repeat_with_cmd.rb
68
- - lib/gobstones/lang/commands/sacar_cmd.rb
84
+ - lib/gobstones/lang/commands/repeat_with.rb
85
+ - lib/gobstones/lang/commands/sacar.rb
69
86
  - lib/gobstones/lang/commands/single_assignment.rb
70
- - lib/gobstones/lang/commands/skip_cmd.rb
71
- - lib/gobstones/lang/commands/vaciar_tablero_cmd.rb
72
- - lib/gobstones/lang/commands/while_cmd.rb
87
+ - lib/gobstones/lang/commands/skip.rb
88
+ - lib/gobstones/lang/commands/vaciar_tablero.rb
89
+ - lib/gobstones/lang/commands/while.rb
73
90
  - lib/gobstones/lang/definitions/all.rb
74
91
  - lib/gobstones/lang/definitions/definition.rb
75
92
  - lib/gobstones/lang/definitions/definition_call.rb
@@ -85,6 +102,7 @@ files:
85
102
  - lib/gobstones/lang/expressions/boolean_expressions.rb
86
103
  - lib/gobstones/lang/expressions/comparison_expressions.rb
87
104
  - lib/gobstones/lang/expressions/enclosed_by_parens_expression.rb
105
+ - lib/gobstones/lang/expressions/expression.rb
88
106
  - lib/gobstones/lang/expressions/function_call.rb
89
107
  - lib/gobstones/lang/expressions/one_arg_expression.rb
90
108
  - lib/gobstones/lang/expressions/primitive_functions.rb
@@ -92,13 +110,13 @@ files:
92
110
  - lib/gobstones/lang/expressions/type_bound_functions.rb
93
111
  - lib/gobstones/lang/expressions/var_name.rb
94
112
  - lib/gobstones/lang/literals/all.rb
95
- - lib/gobstones/lang/literals/booleans.rb
96
- - lib/gobstones/lang/literals/colors.rb
97
- - lib/gobstones/lang/literals/directions.rb
113
+ - lib/gobstones/lang/literals/boolean.rb
114
+ - lib/gobstones/lang/literals/color.rb
115
+ - lib/gobstones/lang/literals/direction.rb
98
116
  - lib/gobstones/lang/literals/literal.rb
99
117
  - lib/gobstones/lang/literals/number.rb
100
118
  - lib/gobstones/lang/program.rb
101
- - lib/gobstones/modules/equal_by_class.rb
119
+ - lib/gobstones/modules/equality_definition.rb
102
120
  - lib/gobstones/parser/ast/ast.rb
103
121
  - lib/gobstones/parser/grammar/gobstones.treetop
104
122
  - lib/gobstones/parser/parse_error.rb
@@ -117,23 +135,25 @@ files:
117
135
  - lib/gobstones/runner/errors/wrong_arguments_error.rb
118
136
  - lib/gobstones/runner/execution_context.rb
119
137
  - lib/gobstones/runner/head.rb
138
+ - lib/gobstones/runner/program_result.rb
120
139
  - lib/gobstones/type_check_result.rb
121
- - spec/gobstones_lang_test_objects.rb
122
- - spec/lang/commands/boom_cmd_spec.rb
123
- - spec/lang/commands/cmd_block_spec.rb
124
- - spec/lang/commands/if_cmd_spec.rb
125
- - spec/lang/commands/ir_al_origen_cmd_spec.rb
126
- - spec/lang/commands/mover_cmd_spec.rb
140
+ - spec/lang/commands/boom_spec.rb
141
+ - spec/lang/commands/command_block_spec.rb
142
+ - spec/lang/commands/if_spec.rb
143
+ - spec/lang/commands/if_then_else_spec.rb
144
+ - spec/lang/commands/ir_al_origen_spec.rb
145
+ - spec/lang/commands/mover_spec.rb
127
146
  - spec/lang/commands/multiple_assignment_spec.rb
128
- - spec/lang/commands/poner_cmd_spec.rb
147
+ - spec/lang/commands/poner_spec.rb
129
148
  - spec/lang/commands/procedure_call_spec.rb
130
149
  - spec/lang/commands/procedure_spec.rb
131
- - spec/lang/commands/repeat_with_cmd_spec.rb
132
- - spec/lang/commands/sacar_cmd_spec.rb
150
+ - spec/lang/commands/repeat_with_spec.rb
151
+ - spec/lang/commands/sacar_spec.rb
133
152
  - spec/lang/commands/single_assignment_spec.rb
134
- - spec/lang/commands/skip_cmd_spec.rb
135
- - spec/lang/commands/vaciar_tablero_cmd_spec.rb
136
- - spec/lang/commands/while_cmd_spec.rb
153
+ - spec/lang/commands/skip_spec.rb
154
+ - spec/lang/commands/vaciar_tablero_spec.rb
155
+ - spec/lang/commands/while_spec.rb
156
+ - spec/lang/definitions/main_spec.rb
137
157
  - spec/lang/definitions/no_return_statement_spec.rb
138
158
  - spec/lang/definitions/var_tuple_spec.rb
139
159
  - spec/lang/expressions/arithmetic_expressions_spec.rb
@@ -144,10 +164,10 @@ files:
144
164
  - spec/lang/expressions/primitive_functions_spec.rb
145
165
  - spec/lang/expressions/type_bound_functions_spec.rb
146
166
  - spec/lang/expressions/var_name_spec.rb
147
- - spec/lang/literals/booleans_spec.rb
148
- - spec/lang/literals/colors_spec.rb
149
- - spec/lang/literals/directions_spec.rb
150
- - spec/lang/literals/numbers_spec.rb
167
+ - spec/lang/literals/boolean_spec.rb
168
+ - spec/lang/literals/color_spec.rb
169
+ - spec/lang/literals/direction_spec.rb
170
+ - spec/lang/literals/number_spec.rb
151
171
  - spec/matchers/parse_matcher.rb
152
172
  - spec/parser/arithmetic_expressions_spec.rb
153
173
  - spec/parser/assignments_spec.rb
@@ -173,8 +193,10 @@ files:
173
193
  - spec/runner/execution_context_spec.rb
174
194
  - spec/runner/head_spec.rb
175
195
  - spec/spec_helper.rb
196
+ - spec/support/board_assertions.rb
197
+ - spec/support/gobstones_lang_test_objects.rb
176
198
  - spec/type_checker_spec.rb
177
- homepage: http://nahuelgarbezza.com.ar/gobstones-rb/
199
+ homepage: https://github.com/ngarbezza/gobstones-rb
178
200
  licenses:
179
201
  - GPLv3
180
202
  metadata: {}
@@ -186,35 +208,35 @@ required_ruby_version: !ruby/object:Gem::Requirement
186
208
  requirements:
187
209
  - - ">="
188
210
  - !ruby/object:Gem::Version
189
- version: 1.9.3
211
+ version: 2.5.1
190
212
  required_rubygems_version: !ruby/object:Gem::Requirement
191
213
  requirements:
192
214
  - - ">="
193
215
  - !ruby/object:Gem::Version
194
- version: 1.3.6
216
+ version: 2.7.6
195
217
  requirements: []
196
- rubyforge_project:
197
- rubygems_version: 2.4.5
218
+ rubygems_version: 3.1.2
198
219
  signing_key:
199
220
  specification_version: 4
200
221
  summary: Ruby implementation of the Gobstones programming language
201
222
  test_files:
202
- - spec/gobstones_lang_test_objects.rb
203
- - spec/lang/commands/boom_cmd_spec.rb
204
- - spec/lang/commands/cmd_block_spec.rb
205
- - spec/lang/commands/if_cmd_spec.rb
206
- - spec/lang/commands/ir_al_origen_cmd_spec.rb
207
- - spec/lang/commands/mover_cmd_spec.rb
223
+ - spec/lang/commands/boom_spec.rb
224
+ - spec/lang/commands/command_block_spec.rb
225
+ - spec/lang/commands/if_spec.rb
226
+ - spec/lang/commands/if_then_else_spec.rb
227
+ - spec/lang/commands/ir_al_origen_spec.rb
228
+ - spec/lang/commands/mover_spec.rb
208
229
  - spec/lang/commands/multiple_assignment_spec.rb
209
- - spec/lang/commands/poner_cmd_spec.rb
230
+ - spec/lang/commands/poner_spec.rb
210
231
  - spec/lang/commands/procedure_call_spec.rb
211
232
  - spec/lang/commands/procedure_spec.rb
212
- - spec/lang/commands/repeat_with_cmd_spec.rb
213
- - spec/lang/commands/sacar_cmd_spec.rb
233
+ - spec/lang/commands/repeat_with_spec.rb
234
+ - spec/lang/commands/sacar_spec.rb
214
235
  - spec/lang/commands/single_assignment_spec.rb
215
- - spec/lang/commands/skip_cmd_spec.rb
216
- - spec/lang/commands/vaciar_tablero_cmd_spec.rb
217
- - spec/lang/commands/while_cmd_spec.rb
236
+ - spec/lang/commands/skip_spec.rb
237
+ - spec/lang/commands/vaciar_tablero_spec.rb
238
+ - spec/lang/commands/while_spec.rb
239
+ - spec/lang/definitions/main_spec.rb
218
240
  - spec/lang/definitions/no_return_statement_spec.rb
219
241
  - spec/lang/definitions/var_tuple_spec.rb
220
242
  - spec/lang/expressions/arithmetic_expressions_spec.rb
@@ -225,10 +247,10 @@ test_files:
225
247
  - spec/lang/expressions/primitive_functions_spec.rb
226
248
  - spec/lang/expressions/type_bound_functions_spec.rb
227
249
  - spec/lang/expressions/var_name_spec.rb
228
- - spec/lang/literals/booleans_spec.rb
229
- - spec/lang/literals/colors_spec.rb
230
- - spec/lang/literals/directions_spec.rb
231
- - spec/lang/literals/numbers_spec.rb
250
+ - spec/lang/literals/boolean_spec.rb
251
+ - spec/lang/literals/color_spec.rb
252
+ - spec/lang/literals/direction_spec.rb
253
+ - spec/lang/literals/number_spec.rb
232
254
  - spec/matchers/parse_matcher.rb
233
255
  - spec/parser/arithmetic_expressions_spec.rb
234
256
  - spec/parser/assignments_spec.rb
@@ -254,4 +276,6 @@ test_files:
254
276
  - spec/runner/execution_context_spec.rb
255
277
  - spec/runner/head_spec.rb
256
278
  - spec/spec_helper.rb
279
+ - spec/support/board_assertions.rb
280
+ - spec/support/gobstones_lang_test_objects.rb
257
281
  - spec/type_checker_spec.rb
@@ -1 +0,0 @@
1
- 2.2.0
@@ -1,31 +0,0 @@
1
- require 'gobstones/runner/errors/boom_error'
2
- require 'gobstones/modules/equal_by_class'
3
-
4
- module Gobstones
5
-
6
- module Lang
7
-
8
- class Boom
9
-
10
- include Gobstones::EqualByClass
11
-
12
- attr_reader :message
13
-
14
- def initialize(message)
15
- @message = message
16
- end
17
-
18
- def ==(other)
19
- super(other) &&
20
- self.message == other.message
21
- end
22
-
23
- def evaluate(context)
24
- raise Gobstones::Runner::BoomError, message
25
- end
26
-
27
- end
28
-
29
- end
30
-
31
- end
@@ -1,31 +0,0 @@
1
- require 'gobstones/modules/equal_by_class'
2
-
3
- module Gobstones
4
-
5
- module Lang
6
-
7
- class ConditionalCmd
8
-
9
- include Gobstones::EqualByClass
10
-
11
- attr_reader :condition, :then_block
12
-
13
- def initialize(condition, then_block)
14
- @condition, @then_block = condition, then_block
15
- end
16
-
17
- def ==(other)
18
- super(other) &&
19
- self.condition == other.condition &&
20
- self.then_block == other.then_block
21
- end
22
-
23
- def evaluate_condition(context)
24
- condition.evaluate context
25
- end
26
-
27
- end
28
-
29
- end
30
-
31
- end
@@ -1,38 +0,0 @@
1
- require 'gobstones/lang/commands/conditional_cmd'
2
-
3
- module Gobstones
4
-
5
- module Lang
6
-
7
- class IfCmd < ConditionalCmd
8
-
9
- def evaluate(context)
10
- evaluate_condition(context).if_true(then_block, context)
11
- end
12
-
13
- end
14
-
15
- class IfElseCmd < IfCmd
16
-
17
- attr_reader :else_block
18
-
19
- def initialize(condition, then_block, else_block)
20
- super(condition, then_block)
21
- @else_block = else_block
22
- end
23
-
24
- def ==(other)
25
- super(other) && self.else_block == other.else_block
26
- end
27
-
28
- def evaluate(context)
29
- cond = evaluate_condition context
30
- cond.if_true then_block, context
31
- cond.if_false else_block, context
32
- end
33
-
34
- end
35
-
36
- end
37
-
38
- end
@@ -1,19 +0,0 @@
1
- require 'gobstones/modules/equal_by_class'
2
-
3
- module Gobstones
4
-
5
- module Lang
6
-
7
- class IrAlOrigen
8
-
9
- include Gobstones::EqualByClass
10
-
11
- def evaluate(context)
12
- context.head.go_to_origin
13
- end
14
-
15
- end
16
-
17
- end
18
-
19
- end
@@ -1,27 +0,0 @@
1
- require 'gobstones/lang/expressions/one_arg_expression'
2
-
3
- module Gobstones
4
-
5
- module Lang
6
-
7
- class Mover < OneArgExpression
8
-
9
- def evaluate(context)
10
- with_evaluated_argument_in(context) do |result|
11
- context.head.move result
12
- end
13
- end
14
-
15
- def undo(context)
16
- opposite.evaluate context
17
- end
18
-
19
- def opposite
20
- Mover.new argument.opposite
21
- end
22
-
23
- end
24
-
25
- end
26
-
27
- end
@@ -1,35 +0,0 @@
1
- require 'gobstones/lang/expressions/one_arg_expression'
2
- require 'gobstones/lang/commands/sacar_cmd'
3
- require 'gobstones/runner/errors/gobstones_type_error'
4
-
5
- module Gobstones
6
-
7
- module Lang
8
-
9
- class Poner < OneArgExpression
10
-
11
- def evaluate(context)
12
- with_evaluated_argument_in(context) do |result|
13
- context.head.put result
14
- end
15
- rescue RuntimeError => e
16
- raise Gobstones::Runner::GobstonesTypeError, e.message
17
- end
18
-
19
- def undo(context)
20
- # TODO maybe the command should use the original context
21
- # instead of this one (when it was executed)
22
- with_evaluated_argument_in(context) do |result|
23
- context.head.take_out result
24
- end
25
- end
26
-
27
- def opposite
28
- Sacar.new argument
29
- end
30
-
31
- end
32
-
33
- end
34
-
35
- end
@@ -1,77 +0,0 @@
1
- require 'gobstones/lang/commands/single_assignment'
2
- require 'gobstones/lang/commands/command_block'
3
- require 'gobstones/lang/commands/while_cmd'
4
- require 'gobstones/lang/expressions/comparison_expressions'
5
- require 'gobstones/lang/expressions/primitive_functions'
6
- require 'gobstones/runner/errors/gobstones_runtime_error'
7
- require 'gobstones/runner/errors/gobstones_type_error'
8
- require 'gobstones/modules/equal_by_class'
9
-
10
- module Gobstones
11
-
12
- module Lang
13
-
14
- class RepeatWithCmd
15
-
16
- include Gobstones::EqualByClass
17
-
18
- attr_reader :var_name, :range_min, :range_max, :cmd_block
19
-
20
- def initialize(var_name, range_min, range_max, cmd_block)
21
- @var_name = var_name
22
- @range_min = range_min
23
- @range_max = range_max
24
- @cmd_block = cmd_block
25
- end
26
-
27
- def ==(other)
28
- super(other) &&
29
- self.var_name == other.var_name &&
30
- self.range_min == other.range_min &&
31
- self.range_max == other.range_max &&
32
- self.cmd_block == other.cmd_block
33
- end
34
-
35
- def evaluate(context)
36
- validate_range_values context
37
- validate_index_variable_not_defined context
38
- while_based_equivalent_cmd.evaluate context
39
- clear_index_variable_from context
40
- end
41
-
42
- private
43
-
44
- def clear_index_variable_from(context)
45
- context.clear var_name
46
- end
47
-
48
- def validate_range_values(context)
49
- raise Gobstones::Runner::GobstonesTypeError, "types don't match in range values" \
50
- unless range_min.evaluate(context).same_type_as(range_max.evaluate(context))
51
- end
52
-
53
- def validate_index_variable_not_defined(context)
54
- raise Gobstones::Runner::GobstonesRuntimeError, "index variable can't be used because it's already defined" \
55
- if context.has_variable_named?(var_name.name)
56
- end
57
-
58
- def while_based_equivalent_cmd
59
- #
60
- # repeatWith var in min..max block
61
- # is equivalent to
62
- # if (min < max) { var := min; while (var < max) { block; var := siguiente(var) }; block }
63
- #
64
- assign_cmd = SingleAssignment.new var_name, range_min
65
- while_cond = LessThan.new var_name, range_max
66
- increment = SingleAssignment.new var_name, Siguiente.new(var_name)
67
- while_block = CommandBlock.new [cmd_block, increment]
68
- while_cmd = WhileCmd.new while_cond, while_block
69
- if_cond = LessThan.new range_min, range_max
70
- IfCmd.new if_cond, CommandBlock.new([assign_cmd, while_cmd, cmd_block])
71
- end
72
-
73
- end
74
-
75
- end
76
-
77
- end