tp_plus 0.0.73

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 (67) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +65 -0
  3. data/Rakefile +21 -0
  4. data/bin/tpp +73 -0
  5. data/lib/tp_plus/interpreter.rb +129 -0
  6. data/lib/tp_plus/namespace.rb +66 -0
  7. data/lib/tp_plus/nodes/abort_node.rb +9 -0
  8. data/lib/tp_plus/nodes/argument_node.rb +19 -0
  9. data/lib/tp_plus/nodes/assignment_node.rb +45 -0
  10. data/lib/tp_plus/nodes/call_node.rb +34 -0
  11. data/lib/tp_plus/nodes/case_condition_node.rb +26 -0
  12. data/lib/tp_plus/nodes/case_node.rb +33 -0
  13. data/lib/tp_plus/nodes/comment_node.rb +22 -0
  14. data/lib/tp_plus/nodes/conditional_node.rb +54 -0
  15. data/lib/tp_plus/nodes/definition_node.rb +22 -0
  16. data/lib/tp_plus/nodes/digit_node.rb +21 -0
  17. data/lib/tp_plus/nodes/eval_node.rb +13 -0
  18. data/lib/tp_plus/nodes/expression_node.rb +65 -0
  19. data/lib/tp_plus/nodes/for_node.rb +20 -0
  20. data/lib/tp_plus/nodes/header_node.rb +27 -0
  21. data/lib/tp_plus/nodes/indirect_node.rb +49 -0
  22. data/lib/tp_plus/nodes/inline_conditional_node.rb +40 -0
  23. data/lib/tp_plus/nodes/io_method_node.rb +55 -0
  24. data/lib/tp_plus/nodes/io_node.rb +30 -0
  25. data/lib/tp_plus/nodes/jump_node.rb +23 -0
  26. data/lib/tp_plus/nodes/label_definition_node.rb +21 -0
  27. data/lib/tp_plus/nodes/motion_node.rb +62 -0
  28. data/lib/tp_plus/nodes/namespace_node.rb +16 -0
  29. data/lib/tp_plus/nodes/namespaced_var_node.rb +38 -0
  30. data/lib/tp_plus/nodes/numreg_node.rb +25 -0
  31. data/lib/tp_plus/nodes/offset_node.rb +27 -0
  32. data/lib/tp_plus/nodes/operator_node.rb +72 -0
  33. data/lib/tp_plus/nodes/pause_node.rb +9 -0
  34. data/lib/tp_plus/nodes/position_data_node.rb +50 -0
  35. data/lib/tp_plus/nodes/position_node.rb +25 -0
  36. data/lib/tp_plus/nodes/posreg_node.rb +48 -0
  37. data/lib/tp_plus/nodes/raise_node.rb +13 -0
  38. data/lib/tp_plus/nodes/real_node.rb +27 -0
  39. data/lib/tp_plus/nodes/set_node.rb +22 -0
  40. data/lib/tp_plus/nodes/skip_node.rb +22 -0
  41. data/lib/tp_plus/nodes/speed_node.rb +29 -0
  42. data/lib/tp_plus/nodes/string_node.rb +13 -0
  43. data/lib/tp_plus/nodes/string_register_node.rb +25 -0
  44. data/lib/tp_plus/nodes/termination_node.rb +18 -0
  45. data/lib/tp_plus/nodes/terminator_node.rb +16 -0
  46. data/lib/tp_plus/nodes/time_node.rb +24 -0
  47. data/lib/tp_plus/nodes/timer_method_node.rb +37 -0
  48. data/lib/tp_plus/nodes/timer_node.rb +21 -0
  49. data/lib/tp_plus/nodes/units_node.rb +20 -0
  50. data/lib/tp_plus/nodes/use_node.rb +21 -0
  51. data/lib/tp_plus/nodes/user_alarm_node.rb +15 -0
  52. data/lib/tp_plus/nodes/var_method_node.rb +23 -0
  53. data/lib/tp_plus/nodes/var_node.rb +39 -0
  54. data/lib/tp_plus/nodes/vision_register_node.rb +21 -0
  55. data/lib/tp_plus/nodes/wait_for_node.rb +54 -0
  56. data/lib/tp_plus/nodes/wait_until_node.rb +65 -0
  57. data/lib/tp_plus/nodes/while_node.rb +36 -0
  58. data/lib/tp_plus/parser.rb +1592 -0
  59. data/lib/tp_plus/scanner.rb +383 -0
  60. data/lib/tp_plus/version.rb +3 -0
  61. data/lib/tp_plus.rb +62 -0
  62. data/test/test_helper.rb +5 -0
  63. data/test/tp_plus/test_interpreter.rb +1168 -0
  64. data/test/tp_plus/test_parser.rb +489 -0
  65. data/test/tp_plus/test_scanner.rb +522 -0
  66. data/tp_plus.gemspec +28 -0
  67. metadata +156 -0
@@ -0,0 +1,522 @@
1
+ require 'test_helper'
2
+
3
+ class TestScanner < Test::Unit::TestCase
4
+ def setup
5
+ @scanner = TPPlus::Scanner.new
6
+ end
7
+
8
+ def assert_token(token, text)
9
+ assert_equal [token,text], @scanner.next_token
10
+ end
11
+
12
+ def test_blank_string
13
+ @scanner.scan_setup ""
14
+ assert_nil @scanner.next_token
15
+ end
16
+
17
+ def test_ignore_whitespace
18
+ @scanner.scan_setup " "
19
+ assert_nil @scanner.next_token
20
+ end
21
+
22
+ def test_newline
23
+ @scanner.scan_setup "\n"
24
+ assert_token :NEWLINE, "\n"
25
+ end
26
+
27
+ def test_no_combine_newlines
28
+ @scanner.scan_setup "\n\n"
29
+ assert_token :NEWLINE, "\n"
30
+ assert_token :NEWLINE, "\n"
31
+ end
32
+
33
+ def test_semicolon
34
+ @scanner.scan_setup ";"
35
+ assert_token :SEMICOLON,";"
36
+ end
37
+
38
+ def test_real_with_dot
39
+ @scanner.scan_setup "3.14"
40
+ assert_token :REAL, 3.14
41
+ end
42
+
43
+ def test_real_with_no_lead
44
+ @scanner.scan_setup ".10"
45
+ assert_token :REAL, 0.1
46
+ end
47
+
48
+ def test_digit
49
+ @scanner.scan_setup "42"
50
+ assert_token :DIGIT, 42
51
+ end
52
+
53
+ def test_true
54
+ @scanner.scan_setup "true"
55
+ assert_token :TRUE_FALSE, true
56
+ end
57
+
58
+ def test_false
59
+ @scanner.scan_setup "false"
60
+ assert_token :TRUE_FALSE, false
61
+ end
62
+
63
+ def test_numreg
64
+ @scanner.scan_setup "R[42]"
65
+ assert_token :NUMREG, "R"
66
+ end
67
+
68
+ def test_posreg
69
+ @scanner.scan_setup "PR[42]"
70
+ assert_token :POSREG, "PR"
71
+ end
72
+
73
+ def test_timer
74
+ @scanner.scan_setup "TIMER[1]"
75
+ assert_token :TIMER, "TIMER"
76
+ end
77
+
78
+ def test_position
79
+ @scanner.scan_setup "P[42]"
80
+ assert_token :POSITION, "P"
81
+ end
82
+
83
+ def test_vreg
84
+ @scanner.scan_setup "VR[1]"
85
+ assert_token :VREG, "VR"
86
+ end
87
+
88
+ def test_sreg
89
+ @scanner.scan_setup "SR[1]"
90
+ assert_token :SREG, "SR"
91
+ end
92
+
93
+ def test_flag
94
+ @scanner.scan_setup "F[1]"
95
+ assert_token :OUTPUT, "F"
96
+ end
97
+
98
+ def test_di
99
+ @scanner.scan_setup "DI[1]"
100
+ assert_token :INPUT, "DI"
101
+ end
102
+
103
+ def test_do
104
+ @scanner.scan_setup "DO[1]"
105
+ assert_token :OUTPUT, "DO"
106
+ end
107
+
108
+ def test_ri
109
+ @scanner.scan_setup "RI[1]"
110
+ assert_token :INPUT, "RI"
111
+ end
112
+
113
+ def test_ro
114
+ @scanner.scan_setup "RO[1]"
115
+ assert_token :OUTPUT, "RO"
116
+ end
117
+
118
+ def test_ui
119
+ @scanner.scan_setup "UI[1]"
120
+ assert_token :INPUT, "UI"
121
+ end
122
+
123
+ def test_uo
124
+ @scanner.scan_setup "UO[1]"
125
+ assert_token :OUTPUT, "UO"
126
+ end
127
+
128
+ def test_si
129
+ @scanner.scan_setup "SI[1]"
130
+ assert_token :INPUT, "SI"
131
+ end
132
+
133
+ def test_so
134
+ @scanner.scan_setup "SO[1]"
135
+ assert_token :OUTPUT, "SO"
136
+ end
137
+
138
+ def test_equal
139
+ @scanner.scan_setup "="
140
+ assert_token :EQUAL, "="
141
+ end
142
+
143
+ def test_not_equal
144
+ @scanner.scan_setup "<>"
145
+ assert_token :NOTEQUAL, "<>"
146
+ @scanner.scan_setup "!="
147
+ assert_token :NOTEQUAL, "!="
148
+ end
149
+
150
+ def test_eequal
151
+ @scanner.scan_setup "=="
152
+ assert_token :EEQUAL, "=="
153
+ end
154
+
155
+ def test_gte
156
+ @scanner.scan_setup ">="
157
+ assert_token :GTE, ">="
158
+ end
159
+
160
+ def test_lte
161
+ @scanner.scan_setup "<="
162
+ assert_token :LTE, "<="
163
+ end
164
+
165
+ def test_lt
166
+ @scanner.scan_setup "<"
167
+ assert_token :LT, "<"
168
+ end
169
+
170
+ def test_gt
171
+ @scanner.scan_setup ">"
172
+ assert_token :GT, ">"
173
+ end
174
+
175
+ def test_plus
176
+ @scanner.scan_setup "+"
177
+ assert_token :PLUS, "+"
178
+ end
179
+
180
+ def test_minus
181
+ @scanner.scan_setup "-"
182
+ assert_token :MINUS, "-"
183
+ end
184
+
185
+ def test_star
186
+ @scanner.scan_setup "*"
187
+ assert_token :STAR, "*"
188
+ end
189
+
190
+ def test_slash
191
+ @scanner.scan_setup "/"
192
+ assert_token :SLASH, "/"
193
+ end
194
+
195
+ def test_and
196
+ @scanner.scan_setup "&&"
197
+ assert_token :AND, "&&"
198
+ end
199
+
200
+ def test_or
201
+ @scanner.scan_setup "||"
202
+ assert_token :OR, "||"
203
+ end
204
+
205
+ def test_mod
206
+ @scanner.scan_setup "%"
207
+ assert_token :MOD, "%"
208
+ end
209
+
210
+ def test_comment
211
+ @scanner.scan_setup "# foo"
212
+ assert_token :COMMENT, "# foo"
213
+ end
214
+
215
+ def test_assign
216
+ @scanner.scan_setup ":="
217
+ assert_token :ASSIGN, ":="
218
+ end
219
+
220
+ def test_at_sym
221
+ @scanner.scan_setup "@"
222
+ assert_token :AT_SYM, "@"
223
+ end
224
+
225
+ def test_jump_to
226
+ @scanner.scan_setup "jump_to"
227
+ assert_token :JUMP, "jump_to"
228
+ end
229
+
230
+ def test_turn_on
231
+ @scanner.scan_setup "turn_on"
232
+ assert_token :IO_METHOD, "turn_on"
233
+ end
234
+
235
+ def test_turn_off
236
+ @scanner.scan_setup "turn_off"
237
+ assert_token :IO_METHOD, "turn_off"
238
+ end
239
+
240
+ def test_toggle
241
+ @scanner.scan_setup "toggle"
242
+ assert_token :IO_METHOD, "toggle"
243
+ end
244
+
245
+ def test_linear_move
246
+ @scanner.scan_setup "linear_move"
247
+ assert_token :MOVE, "linear_move"
248
+ end
249
+
250
+ def test_joint_move
251
+ @scanner.scan_setup "joint_move"
252
+ assert_token :MOVE, "joint_move"
253
+ end
254
+
255
+ def test_circular_move
256
+ @scanner.scan_setup "circular_move"
257
+ assert_token :MOVE, "circular_move"
258
+ end
259
+
260
+ def test_dot
261
+ @scanner.scan_setup "."
262
+ assert_token :DOT, "."
263
+ end
264
+
265
+ def test_to
266
+ @scanner.scan_setup "to"
267
+ assert_token :TO, "to"
268
+ end
269
+
270
+ def test_at
271
+ @scanner.scan_setup "at"
272
+ assert_token :AT, "at"
273
+ end
274
+
275
+ def test_term
276
+ @scanner.scan_setup "term"
277
+ assert_token :TERM, "term"
278
+ end
279
+
280
+ def test_if
281
+ @scanner.scan_setup "if"
282
+ assert_token :IF, "if"
283
+ end
284
+
285
+ def test_else
286
+ @scanner.scan_setup "else"
287
+ assert_token :ELSE, "else"
288
+ end
289
+
290
+ def test_end
291
+ @scanner.scan_setup "end"
292
+ assert_token :END, "end"
293
+ end
294
+
295
+ def test_unless
296
+ @scanner.scan_setup "unless"
297
+ assert_token :UNLESS, "unless"
298
+ end
299
+
300
+ def test_carriage_return_newline_as_one
301
+ @scanner.scan_setup "\r\n"
302
+ assert_token :NEWLINE, "\r\n"
303
+ end
304
+
305
+ def test_use_uframe
306
+ @scanner.scan_setup "use_uframe"
307
+ assert_token :FANUC_USE, "use_uframe"
308
+ end
309
+
310
+ def test_use_utool
311
+ @scanner.scan_setup "use_utool"
312
+ assert_token :FANUC_USE, "use_utool"
313
+ end
314
+
315
+ def test_use_payload
316
+ @scanner.scan_setup "use_payload"
317
+ assert_token :FANUC_USE, "use_payload"
318
+ end
319
+
320
+ def test_offset
321
+ @scanner.scan_setup "offset"
322
+ assert_token :OFFSET, "offset"
323
+ end
324
+
325
+ def test_time_before
326
+ @scanner.scan_setup "time_before"
327
+ assert_token :TIME_SEGMENT, "time_before"
328
+ end
329
+
330
+ def test_time_after
331
+ @scanner.scan_setup "time_after"
332
+ assert_token :TIME_SEGMENT, "time_after"
333
+ end
334
+
335
+ def test_word_with_end_in_it
336
+ @scanner.scan_setup "end_zone"
337
+ assert_token :WORD, "end_zone"
338
+ end
339
+
340
+ def test_scan_wait_for
341
+ @scanner.scan_setup "wait_for"
342
+ assert_token :WAIT_FOR, "wait_for"
343
+ end
344
+
345
+ def test_scan_wait_until
346
+ @scanner.scan_setup "wait_until"
347
+ assert_token :WAIT_UNTIL, "wait_until"
348
+ end
349
+
350
+ def test_scan_case
351
+ @scanner.scan_setup "case"
352
+ assert_token :CASE, "case"
353
+ end
354
+
355
+ def test_scan_when
356
+ @scanner.scan_setup "when"
357
+ assert_token :WHEN, "when"
358
+ end
359
+
360
+ def test_scan_argument
361
+ @scanner.scan_setup "AR[1]"
362
+ assert_token :ARG, "AR"
363
+ end
364
+
365
+ def test_scan_set_uframe
366
+ @scanner.scan_setup "set_uframe"
367
+ assert_token :FANUC_SET, "set_uframe"
368
+ end
369
+
370
+ def test_scan_set_skip_condition
371
+ @scanner.scan_setup "set_skip_condition"
372
+ assert_token :FANUC_SET, "set_skip_condition"
373
+ end
374
+
375
+ def test_scan_skip_to
376
+ @scanner.scan_setup "skip_to"
377
+ assert_token :SKIP, "skip_to"
378
+ end
379
+
380
+ def test_scans_bang_separate_from_word
381
+ @scanner.scan_setup "!foo"
382
+ assert_token :BANG, "!"
383
+ assert_token :WORD, "foo"
384
+ end
385
+
386
+ def test_timeout_to
387
+ @scanner.scan_setup "timeout_to"
388
+ assert_token :TIMEOUT, "timeout_to"
389
+ end
390
+
391
+ def test_after
392
+ @scanner.scan_setup "after"
393
+ assert_token :AFTER, "after"
394
+ end
395
+
396
+ def test_scanning_single_quoted_string
397
+ @scanner.scan_setup "'string'"
398
+ assert_token :STRING, "string"
399
+ end
400
+
401
+ def test_scanning_double_quoted_string
402
+ @scanner.scan_setup '"string"'
403
+ assert_token :STRING, "string"
404
+ end
405
+
406
+ def test_scan_namespace
407
+ @scanner.scan_setup "namespace"
408
+ assert_token :NAMESPACE, "namespace"
409
+ end
410
+
411
+ def test_scan_eval
412
+ @scanner.scan_setup "eval"
413
+ assert_token :EVAL, "eval"
414
+ end
415
+
416
+ def test_scan_for
417
+ @scanner.scan_setup "for"
418
+ assert_token :FOR, "for"
419
+ end
420
+
421
+ def test_scan_in
422
+ @scanner.scan_setup "in"
423
+ assert_token :IN, "in"
424
+ end
425
+
426
+ def test_scan_indirect
427
+ @scanner.scan_setup "indirect"
428
+ assert_token :INDIRECT, "indirect"
429
+ end
430
+
431
+ def test_scan_while
432
+ @scanner.scan_setup "while"
433
+ assert_token :WHILE, "while"
434
+ end
435
+
436
+ def test_start
437
+ @scanner.scan_setup "start"
438
+ assert_token :TIMER_METHOD, :start
439
+ end
440
+
441
+ def test_stop
442
+ @scanner.scan_setup "stop"
443
+ assert_token :TIMER_METHOD, :stop
444
+ end
445
+
446
+ def test_reset
447
+ @scanner.scan_setup "reset"
448
+ assert_token :TIMER_METHOD, :reset
449
+ end
450
+
451
+ def test_restart
452
+ @scanner.scan_setup "restart"
453
+ assert_token :TIMER_METHOD, :restart
454
+ end
455
+
456
+ def test_position_data
457
+ @scanner.scan_setup "position_data"
458
+ assert_token :POSITION_DATA, "position_data"
459
+ end
460
+
461
+ def test_pulse
462
+ @scanner.scan_setup "pulse"
463
+ assert_token :IO_METHOD, "pulse"
464
+ end
465
+
466
+ def test_scan_ualm
467
+ @scanner.scan_setup "UALM[1]"
468
+ assert_token :UALM, "UALM"
469
+ end
470
+
471
+ def test_scan_raise
472
+ @scanner.scan_setup "raise"
473
+ assert_token :RAISE, "raise"
474
+ end
475
+
476
+ def test_scan_run
477
+ @scanner.scan_setup "run"
478
+ assert_token :RUN, "run"
479
+ end
480
+
481
+ def test_tp_ignore_pause
482
+ @scanner.scan_setup "TP_IGNORE_PAUSE"
483
+ assert_token :TP_HEADER, "TP_IGNORE_PAUSE"
484
+ end
485
+
486
+ def test_tp_comment
487
+ @scanner.scan_setup "TP_COMMENT"
488
+ assert_token :TP_HEADER, "TP_COMMENT"
489
+ end
490
+
491
+ def test_tp_groupmask
492
+ @scanner.scan_setup "TP_GROUPMASK"
493
+ assert_token :TP_HEADER, "TP_GROUPMASK"
494
+ end
495
+
496
+ def test_tp_subtype
497
+ @scanner.scan_setup "TP_SUBTYPE"
498
+ assert_token :TP_HEADER, "TP_SUBTYPE"
499
+ end
500
+
501
+ def test_tool_offset
502
+ @scanner.scan_setup "tool_offset to toff"
503
+ assert_token :OFFSET, "tool_offset"
504
+ assert_token :TO, "to"
505
+ assert_token :WORD, "toff"
506
+ end
507
+
508
+ def test_vision_offset
509
+ @scanner.scan_setup "vision_offset"
510
+ assert_token :OFFSET, "vision_offset"
511
+ end
512
+
513
+ def test_pause
514
+ @scanner.scan_setup "pause"
515
+ assert_token :PAUSE, "pause"
516
+ end
517
+
518
+ def test_abort
519
+ @scanner.scan_setup "abort"
520
+ assert_token :ABORT, "abort"
521
+ end
522
+ end
data/tp_plus.gemspec ADDED
@@ -0,0 +1,28 @@
1
+ # encoding: utf-8
2
+ require File.expand_path('../lib/tp_plus/version', __FILE__)
3
+
4
+ Gem::Specification.new do |spec|
5
+ spec.add_development_dependency 'rexical', '~> 1.0'
6
+ spec.add_development_dependency 'racc', '~> 1.4'
7
+ spec.add_development_dependency 'test-unit', '~> 2.0'
8
+
9
+ spec.authors = ["Jay Strybis"]
10
+ spec.email = ['jay.strybis@gmail.com']
11
+
12
+ spec.name = 'tp_plus'
13
+ spec.description = %q{TP+}
14
+ spec.summary = 'A higher-level abstraction of FANUC TP'
15
+ spec.homepage = 'http://github.com/onerobotics/tp_plus/'
16
+ spec.licenses = ['MIT']
17
+ spec.version = TPPlus::VERSION
18
+
19
+ spec.executables = ['tpp']
20
+ spec.files = %w(README.md Rakefile tp_plus.gemspec)
21
+ spec.files += Dir.glob("lib/**/*.rb")
22
+ spec.files += Dir.glob("test/**/*")
23
+ spec.test_files = Dir.glob("test/**/*")
24
+
25
+ spec.require_paths = ['lib']
26
+ spec.required_rubygems_version = Gem::Requirement.new('>= 1.3.6')
27
+ end
28
+
metadata ADDED
@@ -0,0 +1,156 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: tp_plus
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.73
5
+ platform: ruby
6
+ authors:
7
+ - Jay Strybis
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-02-04 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rexical
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: racc
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: '1.4'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '1.4'
41
+ - !ruby/object:Gem::Dependency
42
+ name: test-unit
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: '2.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '2.0'
55
+ description: TP+
56
+ email:
57
+ - jay.strybis@gmail.com
58
+ executables:
59
+ - tpp
60
+ extensions: []
61
+ extra_rdoc_files: []
62
+ files:
63
+ - README.md
64
+ - Rakefile
65
+ - bin/tpp
66
+ - lib/tp_plus.rb
67
+ - lib/tp_plus/interpreter.rb
68
+ - lib/tp_plus/namespace.rb
69
+ - lib/tp_plus/nodes/abort_node.rb
70
+ - lib/tp_plus/nodes/argument_node.rb
71
+ - lib/tp_plus/nodes/assignment_node.rb
72
+ - lib/tp_plus/nodes/call_node.rb
73
+ - lib/tp_plus/nodes/case_condition_node.rb
74
+ - lib/tp_plus/nodes/case_node.rb
75
+ - lib/tp_plus/nodes/comment_node.rb
76
+ - lib/tp_plus/nodes/conditional_node.rb
77
+ - lib/tp_plus/nodes/definition_node.rb
78
+ - lib/tp_plus/nodes/digit_node.rb
79
+ - lib/tp_plus/nodes/eval_node.rb
80
+ - lib/tp_plus/nodes/expression_node.rb
81
+ - lib/tp_plus/nodes/for_node.rb
82
+ - lib/tp_plus/nodes/header_node.rb
83
+ - lib/tp_plus/nodes/indirect_node.rb
84
+ - lib/tp_plus/nodes/inline_conditional_node.rb
85
+ - lib/tp_plus/nodes/io_method_node.rb
86
+ - lib/tp_plus/nodes/io_node.rb
87
+ - lib/tp_plus/nodes/jump_node.rb
88
+ - lib/tp_plus/nodes/label_definition_node.rb
89
+ - lib/tp_plus/nodes/motion_node.rb
90
+ - lib/tp_plus/nodes/namespace_node.rb
91
+ - lib/tp_plus/nodes/namespaced_var_node.rb
92
+ - lib/tp_plus/nodes/numreg_node.rb
93
+ - lib/tp_plus/nodes/offset_node.rb
94
+ - lib/tp_plus/nodes/operator_node.rb
95
+ - lib/tp_plus/nodes/pause_node.rb
96
+ - lib/tp_plus/nodes/position_data_node.rb
97
+ - lib/tp_plus/nodes/position_node.rb
98
+ - lib/tp_plus/nodes/posreg_node.rb
99
+ - lib/tp_plus/nodes/raise_node.rb
100
+ - lib/tp_plus/nodes/real_node.rb
101
+ - lib/tp_plus/nodes/set_node.rb
102
+ - lib/tp_plus/nodes/skip_node.rb
103
+ - lib/tp_plus/nodes/speed_node.rb
104
+ - lib/tp_plus/nodes/string_node.rb
105
+ - lib/tp_plus/nodes/string_register_node.rb
106
+ - lib/tp_plus/nodes/termination_node.rb
107
+ - lib/tp_plus/nodes/terminator_node.rb
108
+ - lib/tp_plus/nodes/time_node.rb
109
+ - lib/tp_plus/nodes/timer_method_node.rb
110
+ - lib/tp_plus/nodes/timer_node.rb
111
+ - lib/tp_plus/nodes/units_node.rb
112
+ - lib/tp_plus/nodes/use_node.rb
113
+ - lib/tp_plus/nodes/user_alarm_node.rb
114
+ - lib/tp_plus/nodes/var_method_node.rb
115
+ - lib/tp_plus/nodes/var_node.rb
116
+ - lib/tp_plus/nodes/vision_register_node.rb
117
+ - lib/tp_plus/nodes/wait_for_node.rb
118
+ - lib/tp_plus/nodes/wait_until_node.rb
119
+ - lib/tp_plus/nodes/while_node.rb
120
+ - lib/tp_plus/parser.rb
121
+ - lib/tp_plus/scanner.rb
122
+ - lib/tp_plus/version.rb
123
+ - test/test_helper.rb
124
+ - test/tp_plus/test_interpreter.rb
125
+ - test/tp_plus/test_parser.rb
126
+ - test/tp_plus/test_scanner.rb
127
+ - tp_plus.gemspec
128
+ homepage: http://github.com/onerobotics/tp_plus/
129
+ licenses:
130
+ - MIT
131
+ metadata: {}
132
+ post_install_message:
133
+ rdoc_options: []
134
+ require_paths:
135
+ - lib
136
+ required_ruby_version: !ruby/object:Gem::Requirement
137
+ requirements:
138
+ - - '>='
139
+ - !ruby/object:Gem::Version
140
+ version: '0'
141
+ required_rubygems_version: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - '>='
144
+ - !ruby/object:Gem::Version
145
+ version: 1.3.6
146
+ requirements: []
147
+ rubyforge_project:
148
+ rubygems_version: 2.4.5
149
+ signing_key:
150
+ specification_version: 4
151
+ summary: A higher-level abstraction of FANUC TP
152
+ test_files:
153
+ - test/test_helper.rb
154
+ - test/tp_plus/test_interpreter.rb
155
+ - test/tp_plus/test_parser.rb
156
+ - test/tp_plus/test_scanner.rb