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.
- checksums.yaml +7 -0
- data/README.md +65 -0
- data/Rakefile +21 -0
- data/bin/tpp +73 -0
- data/lib/tp_plus/interpreter.rb +129 -0
- data/lib/tp_plus/namespace.rb +66 -0
- data/lib/tp_plus/nodes/abort_node.rb +9 -0
- data/lib/tp_plus/nodes/argument_node.rb +19 -0
- data/lib/tp_plus/nodes/assignment_node.rb +45 -0
- data/lib/tp_plus/nodes/call_node.rb +34 -0
- data/lib/tp_plus/nodes/case_condition_node.rb +26 -0
- data/lib/tp_plus/nodes/case_node.rb +33 -0
- data/lib/tp_plus/nodes/comment_node.rb +22 -0
- data/lib/tp_plus/nodes/conditional_node.rb +54 -0
- data/lib/tp_plus/nodes/definition_node.rb +22 -0
- data/lib/tp_plus/nodes/digit_node.rb +21 -0
- data/lib/tp_plus/nodes/eval_node.rb +13 -0
- data/lib/tp_plus/nodes/expression_node.rb +65 -0
- data/lib/tp_plus/nodes/for_node.rb +20 -0
- data/lib/tp_plus/nodes/header_node.rb +27 -0
- data/lib/tp_plus/nodes/indirect_node.rb +49 -0
- data/lib/tp_plus/nodes/inline_conditional_node.rb +40 -0
- data/lib/tp_plus/nodes/io_method_node.rb +55 -0
- data/lib/tp_plus/nodes/io_node.rb +30 -0
- data/lib/tp_plus/nodes/jump_node.rb +23 -0
- data/lib/tp_plus/nodes/label_definition_node.rb +21 -0
- data/lib/tp_plus/nodes/motion_node.rb +62 -0
- data/lib/tp_plus/nodes/namespace_node.rb +16 -0
- data/lib/tp_plus/nodes/namespaced_var_node.rb +38 -0
- data/lib/tp_plus/nodes/numreg_node.rb +25 -0
- data/lib/tp_plus/nodes/offset_node.rb +27 -0
- data/lib/tp_plus/nodes/operator_node.rb +72 -0
- data/lib/tp_plus/nodes/pause_node.rb +9 -0
- data/lib/tp_plus/nodes/position_data_node.rb +50 -0
- data/lib/tp_plus/nodes/position_node.rb +25 -0
- data/lib/tp_plus/nodes/posreg_node.rb +48 -0
- data/lib/tp_plus/nodes/raise_node.rb +13 -0
- data/lib/tp_plus/nodes/real_node.rb +27 -0
- data/lib/tp_plus/nodes/set_node.rb +22 -0
- data/lib/tp_plus/nodes/skip_node.rb +22 -0
- data/lib/tp_plus/nodes/speed_node.rb +29 -0
- data/lib/tp_plus/nodes/string_node.rb +13 -0
- data/lib/tp_plus/nodes/string_register_node.rb +25 -0
- data/lib/tp_plus/nodes/termination_node.rb +18 -0
- data/lib/tp_plus/nodes/terminator_node.rb +16 -0
- data/lib/tp_plus/nodes/time_node.rb +24 -0
- data/lib/tp_plus/nodes/timer_method_node.rb +37 -0
- data/lib/tp_plus/nodes/timer_node.rb +21 -0
- data/lib/tp_plus/nodes/units_node.rb +20 -0
- data/lib/tp_plus/nodes/use_node.rb +21 -0
- data/lib/tp_plus/nodes/user_alarm_node.rb +15 -0
- data/lib/tp_plus/nodes/var_method_node.rb +23 -0
- data/lib/tp_plus/nodes/var_node.rb +39 -0
- data/lib/tp_plus/nodes/vision_register_node.rb +21 -0
- data/lib/tp_plus/nodes/wait_for_node.rb +54 -0
- data/lib/tp_plus/nodes/wait_until_node.rb +65 -0
- data/lib/tp_plus/nodes/while_node.rb +36 -0
- data/lib/tp_plus/parser.rb +1592 -0
- data/lib/tp_plus/scanner.rb +383 -0
- data/lib/tp_plus/version.rb +3 -0
- data/lib/tp_plus.rb +62 -0
- data/test/test_helper.rb +5 -0
- data/test/tp_plus/test_interpreter.rb +1168 -0
- data/test/tp_plus/test_parser.rb +489 -0
- data/test/tp_plus/test_scanner.rb +522 -0
- data/tp_plus.gemspec +28 -0
- 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
|