tp_plus 0.0.73

Sign up to get free protection for your applications and to get access to all the features.
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