tp_plus 0.0.73 → 0.0.74

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 (72) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +74 -65
  3. data/Rakefile +35 -21
  4. data/bin/tpp +73 -73
  5. data/lib/tp_plus/interpreter.rb +152 -129
  6. data/lib/tp_plus/namespace.rb +66 -66
  7. data/lib/tp_plus/nodes/abort_node.rb +9 -9
  8. data/lib/tp_plus/nodes/address_node.rb +22 -0
  9. data/lib/tp_plus/nodes/argument_node.rb +20 -19
  10. data/lib/tp_plus/nodes/assignment_node.rb +45 -45
  11. data/lib/tp_plus/nodes/call_node.rb +34 -34
  12. data/lib/tp_plus/nodes/case_condition_node.rb +26 -26
  13. data/lib/tp_plus/nodes/case_node.rb +33 -33
  14. data/lib/tp_plus/nodes/comment_node.rb +22 -22
  15. data/lib/tp_plus/nodes/conditional_node.rb +60 -54
  16. data/lib/tp_plus/nodes/definition_node.rb +22 -22
  17. data/lib/tp_plus/nodes/digit_node.rb +22 -21
  18. data/lib/tp_plus/nodes/empty_stmt_node.rb +9 -0
  19. data/lib/tp_plus/nodes/eval_node.rb +13 -13
  20. data/lib/tp_plus/nodes/expression_node.rb +68 -65
  21. data/lib/tp_plus/nodes/for_node.rb +20 -20
  22. data/lib/tp_plus/nodes/header_node.rb +27 -27
  23. data/lib/tp_plus/nodes/indirect_node.rb +51 -49
  24. data/lib/tp_plus/nodes/inline_conditional_node.rb +40 -40
  25. data/lib/tp_plus/nodes/io_method_node.rb +55 -55
  26. data/lib/tp_plus/nodes/io_node.rb +31 -30
  27. data/lib/tp_plus/nodes/jump_node.rb +23 -23
  28. data/lib/tp_plus/nodes/label_definition_node.rb +21 -21
  29. data/lib/tp_plus/nodes/motion_node.rb +62 -62
  30. data/lib/tp_plus/nodes/namespace_node.rb +16 -16
  31. data/lib/tp_plus/nodes/namespaced_var_node.rb +38 -38
  32. data/lib/tp_plus/nodes/numreg_node.rb +26 -25
  33. data/lib/tp_plus/nodes/offset_node.rb +27 -27
  34. data/lib/tp_plus/nodes/operator_node.rb +78 -72
  35. data/lib/tp_plus/nodes/paren_expression_node.rb +17 -0
  36. data/lib/tp_plus/nodes/pause_node.rb +9 -9
  37. data/lib/tp_plus/nodes/position_data_node.rb +64 -50
  38. data/lib/tp_plus/nodes/position_node.rb +26 -25
  39. data/lib/tp_plus/nodes/posreg_node.rb +64 -48
  40. data/lib/tp_plus/nodes/raise_node.rb +13 -13
  41. data/lib/tp_plus/nodes/real_node.rb +27 -27
  42. data/lib/tp_plus/nodes/set_skip_node.rb +14 -0
  43. data/lib/tp_plus/nodes/skip_node.rb +22 -22
  44. data/lib/tp_plus/nodes/speed_node.rb +29 -29
  45. data/lib/tp_plus/nodes/string_node.rb +13 -13
  46. data/lib/tp_plus/nodes/string_register_node.rb +26 -25
  47. data/lib/tp_plus/nodes/termination_node.rb +23 -18
  48. data/lib/tp_plus/nodes/terminator_node.rb +16 -16
  49. data/lib/tp_plus/nodes/time_node.rb +24 -24
  50. data/lib/tp_plus/nodes/timer_method_node.rb +37 -37
  51. data/lib/tp_plus/nodes/timer_node.rb +16 -21
  52. data/lib/tp_plus/nodes/units_node.rb +20 -20
  53. data/lib/tp_plus/nodes/use_node.rb +21 -21
  54. data/lib/tp_plus/nodes/user_alarm_node.rb +16 -15
  55. data/lib/tp_plus/nodes/var_method_node.rb +23 -23
  56. data/lib/tp_plus/nodes/var_node.rb +39 -39
  57. data/lib/tp_plus/nodes/vision_register_node.rb +22 -21
  58. data/lib/tp_plus/nodes/wait_for_node.rb +54 -54
  59. data/lib/tp_plus/nodes/wait_until_node.rb +65 -65
  60. data/lib/tp_plus/nodes/while_node.rb +42 -36
  61. data/lib/tp_plus/parser.rb +1682 -1592
  62. data/lib/tp_plus/scanner.rb +283 -383
  63. data/lib/tp_plus/token.rb +97 -0
  64. data/lib/tp_plus/version.rb +3 -3
  65. data/lib/tp_plus.rb +66 -62
  66. data/test/test_helper.rb +5 -5
  67. data/test/tp_plus/test_interpreter.rb +1309 -1168
  68. data/test/tp_plus/test_parser.rb +496 -489
  69. data/test/tp_plus/test_scanner.rb +577 -522
  70. data/tp_plus.gemspec +31 -28
  71. metadata +61 -14
  72. data/lib/tp_plus/nodes/set_node.rb +0 -22
@@ -0,0 +1,97 @@
1
+ module TPPlus
2
+ class Token
3
+ KEYWORDS = {
4
+ "abort" => :ABORT,
5
+ "after" => :AFTER,
6
+ "at" => :AT,
7
+ "case" => :CASE,
8
+ "circular_move" => :MOVE,
9
+ "else" => :ELSE,
10
+ "end" => :END,
11
+ "eval" => :EVAL,
12
+ "for" => :FOR,
13
+ "group" => :GROUP,
14
+ "if" => :IF,
15
+ "indirect" => :INDIRECT,
16
+ "in" => :IN,
17
+ "joint_move" => :MOVE,
18
+ "jump_to" => :JUMP,
19
+ "linear_move" => :MOVE,
20
+ "namespace" => :NAMESPACE,
21
+ "offset" => :OFFSET,
22
+ "pause" => :PAUSE,
23
+ "position_data" => :POSITION_DATA,
24
+ "pulse" => :IO_METHOD,
25
+ "raise" => :RAISE,
26
+ "reset" => :TIMER_METHOD,
27
+ "restart" => :TIMER_METHOD,
28
+ "run" => :RUN,
29
+ "skip_to" => :SKIP,
30
+ "start" => :TIMER_METHOD,
31
+ "stop" => :TIMER_METHOD,
32
+ "term" => :TERM,
33
+ "time_after" => :TIME_SEGMENT,
34
+ "time_before" => :TIME_SEGMENT,
35
+ "timeout_to" => :TIMEOUT,
36
+ "toggle" => :IO_METHOD,
37
+ "tool_offset" => :OFFSET,
38
+ "turn_on" => :IO_METHOD,
39
+ "turn_off" => :IO_METHOD,
40
+ "to" => :TO,
41
+ "unless" => :UNLESS,
42
+ "vision_offset" => :OFFSET,
43
+ "wait_for" => :WAIT_FOR,
44
+ "wait_until" => :WAIT_UNTIL,
45
+ "when" => :WHEN,
46
+ "while" => :WHILE,
47
+
48
+ "DIV" => :DIV,
49
+
50
+ "true" => :TRUE_FALSE,
51
+ "false" => :TRUE_FALSE,
52
+
53
+ "TP_IGNORE_PAUSE" => :TP_HEADER,
54
+ "TP_COMMENT" => :TP_HEADER,
55
+ "TP_GROUPMASK" => :TP_HEADER,
56
+ "TP_SUBTYPE" => :TP_HEADER,
57
+
58
+ "set_skip_condition" => :SET_SKIP_CONDITION,
59
+ "use_payload" => :FANUC_USE,
60
+ "use_uframe" => :FANUC_USE,
61
+ "use_utool" => :FANUC_USE
62
+ }
63
+
64
+
65
+ DATA = {
66
+ "R" => :NUMREG,
67
+ "P" => :POSITION,
68
+ "PR" => :POSREG,
69
+ "VR" => :VREG,
70
+ "SR" => :SREG,
71
+ "AR" => :ARG,
72
+ "TIMER" => :TIMER,
73
+ "UALM" => :UALM,
74
+
75
+ "F" => :OUTPUT,
76
+ "DO" => :OUTPUT,
77
+ "RO" => :OUTPUT,
78
+ "UO" => :OUTPUT,
79
+ "SO" => :OUTPUT,
80
+ "GO" => :OUTPUT,
81
+
82
+ "DI" => :INPUT,
83
+ "RI" => :INPUT,
84
+ "UI" => :INPUT,
85
+ "SI" => :INPUT,
86
+ "GI" => :INPUT
87
+ }
88
+
89
+ def self.lookup(string)
90
+ KEYWORDS[string] || :WORD
91
+ end
92
+
93
+ def self.lookup_data(string)
94
+ DATA[string] || :WORD
95
+ end
96
+ end
97
+ end
@@ -1,3 +1,3 @@
1
- module TPPlus
2
- VERSION = '0.0.73'
3
- end
1
+ module TPPlus
2
+ VERSION = '0.0.74'
3
+ end
data/lib/tp_plus.rb CHANGED
@@ -1,62 +1,66 @@
1
- module TPPlus
2
- end
3
-
4
- require 'tp_plus/nodes/abort_node'
5
- require 'tp_plus/nodes/argument_node'
6
- require 'tp_plus/nodes/assignment_node'
7
- require 'tp_plus/nodes/call_node'
8
- require 'tp_plus/nodes/case_node'
9
- require 'tp_plus/nodes/case_condition_node'
10
- require 'tp_plus/nodes/comment_node'
11
- require 'tp_plus/nodes/conditional_node'
12
- require 'tp_plus/nodes/definition_node'
13
- require 'tp_plus/nodes/digit_node'
14
- require 'tp_plus/nodes/eval_node'
15
- require 'tp_plus/nodes/expression_node'
16
- require 'tp_plus/nodes/for_node'
17
- require 'tp_plus/nodes/header_node'
18
- require 'tp_plus/nodes/indirect_node'
19
- require 'tp_plus/nodes/inline_conditional_node'
20
- require 'tp_plus/nodes/io_node'
21
- require 'tp_plus/nodes/io_method_node'
22
- require 'tp_plus/nodes/jump_node'
23
- require 'tp_plus/nodes/label_definition_node'
24
- require 'tp_plus/nodes/motion_node'
25
- require 'tp_plus/nodes/namespace_node'
26
- require 'tp_plus/nodes/namespaced_var_node'
27
- require 'tp_plus/nodes/numreg_node'
28
- require 'tp_plus/nodes/offset_node'
29
- require 'tp_plus/nodes/operator_node'
30
- require 'tp_plus/nodes/pause_node'
31
- require 'tp_plus/nodes/position_node'
32
- require 'tp_plus/nodes/position_data_node'
33
- require 'tp_plus/nodes/posreg_node'
34
- require 'tp_plus/nodes/raise_node'
35
- require 'tp_plus/nodes/real_node'
36
- require 'tp_plus/nodes/set_node'
37
- require 'tp_plus/nodes/skip_node'
38
- require 'tp_plus/nodes/speed_node'
39
- require 'tp_plus/nodes/string_node'
40
- require 'tp_plus/nodes/string_register_node'
41
- require 'tp_plus/nodes/termination_node'
42
- require 'tp_plus/nodes/terminator_node'
43
- require 'tp_plus/nodes/time_node'
44
- require 'tp_plus/nodes/timer_node'
45
- require 'tp_plus/nodes/timer_method_node'
46
- require 'tp_plus/nodes/units_node'
47
- require 'tp_plus/nodes/use_node'
48
- require 'tp_plus/nodes/user_alarm_node'
49
- require 'tp_plus/nodes/var_node'
50
- require 'tp_plus/nodes/var_method_node'
51
- require 'tp_plus/nodes/vision_register_node'
52
- require 'tp_plus/nodes/wait_for_node'
53
- require 'tp_plus/nodes/wait_until_node'
54
- require 'tp_plus/nodes/while_node'
55
-
56
- require 'tp_plus/interpreter'
57
- require 'tp_plus/namespace'
58
- require 'tp_plus/parser'
59
- require 'tp_plus/scanner'
60
- require 'tp_plus/version'
61
-
62
-
1
+ module TPPlus
2
+ end
3
+
4
+ require_relative 'tp_plus/nodes/abort_node'
5
+ require_relative 'tp_plus/nodes/argument_node'
6
+ require_relative 'tp_plus/nodes/assignment_node'
7
+ require_relative 'tp_plus/nodes/address_node'
8
+ require_relative 'tp_plus/nodes/call_node'
9
+ require_relative 'tp_plus/nodes/case_node'
10
+ require_relative 'tp_plus/nodes/case_condition_node'
11
+ require_relative 'tp_plus/nodes/comment_node'
12
+ require_relative 'tp_plus/nodes/conditional_node'
13
+ require_relative 'tp_plus/nodes/definition_node'
14
+ require_relative 'tp_plus/nodes/digit_node'
15
+ require_relative 'tp_plus/nodes/empty_stmt_node'
16
+ require_relative 'tp_plus/nodes/eval_node'
17
+ require_relative 'tp_plus/nodes/expression_node'
18
+ require_relative 'tp_plus/nodes/for_node'
19
+ require_relative 'tp_plus/nodes/header_node'
20
+ require_relative 'tp_plus/nodes/indirect_node'
21
+ require_relative 'tp_plus/nodes/inline_conditional_node'
22
+ require_relative 'tp_plus/nodes/io_node'
23
+ require_relative 'tp_plus/nodes/io_method_node'
24
+ require_relative 'tp_plus/nodes/jump_node'
25
+ require_relative 'tp_plus/nodes/label_definition_node'
26
+ require_relative 'tp_plus/nodes/motion_node'
27
+ require_relative 'tp_plus/nodes/namespace_node'
28
+ require_relative 'tp_plus/nodes/namespaced_var_node'
29
+ require_relative 'tp_plus/nodes/numreg_node'
30
+ require_relative 'tp_plus/nodes/offset_node'
31
+ require_relative 'tp_plus/nodes/operator_node'
32
+ require_relative 'tp_plus/nodes/paren_expression_node'
33
+ require_relative 'tp_plus/nodes/pause_node'
34
+ require_relative 'tp_plus/nodes/position_node'
35
+ require_relative 'tp_plus/nodes/position_data_node'
36
+ require_relative 'tp_plus/nodes/posreg_node'
37
+ require_relative 'tp_plus/nodes/raise_node'
38
+ require_relative 'tp_plus/nodes/real_node'
39
+ require_relative 'tp_plus/nodes/set_skip_node'
40
+ require_relative 'tp_plus/nodes/skip_node'
41
+ require_relative 'tp_plus/nodes/speed_node'
42
+ require_relative 'tp_plus/nodes/string_node'
43
+ require_relative 'tp_plus/nodes/string_register_node'
44
+ require_relative 'tp_plus/nodes/termination_node'
45
+ require_relative 'tp_plus/nodes/terminator_node'
46
+ require_relative 'tp_plus/nodes/time_node'
47
+ require_relative 'tp_plus/nodes/timer_node'
48
+ require_relative 'tp_plus/nodes/timer_method_node'
49
+ require_relative 'tp_plus/nodes/units_node'
50
+ require_relative 'tp_plus/nodes/use_node'
51
+ require_relative 'tp_plus/nodes/user_alarm_node'
52
+ require_relative 'tp_plus/nodes/var_node'
53
+ require_relative 'tp_plus/nodes/var_method_node'
54
+ require_relative 'tp_plus/nodes/vision_register_node'
55
+ require_relative 'tp_plus/nodes/wait_for_node'
56
+ require_relative 'tp_plus/nodes/wait_until_node'
57
+ require_relative 'tp_plus/nodes/while_node'
58
+
59
+ require_relative 'tp_plus/interpreter'
60
+ require_relative 'tp_plus/namespace'
61
+ require_relative 'tp_plus/parser'
62
+ require_relative 'tp_plus/scanner'
63
+ require_relative 'tp_plus/token'
64
+ require_relative 'tp_plus/version'
65
+
66
+
data/test/test_helper.rb CHANGED
@@ -1,5 +1,5 @@
1
- require 'rubygems'
2
- require 'bundler/setup'
3
-
4
- require 'tp_plus'
5
- require 'test/unit'
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+
4
+ require 'tp_plus'
5
+ require 'test/unit'