rley 0.5.02 → 0.5.03

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 638178eefcf2e673a801018aeee17ff0ef7ed16b
4
- data.tar.gz: 894a767a871ba958b61047369e989783ae5fe88d
3
+ metadata.gz: bf5a9c73feeebf98f1714d89796bc073b406734e
4
+ data.tar.gz: 33aad5b8b337bb617bda98c55adfd94d9ebfba03
5
5
  SHA512:
6
- metadata.gz: 23571e5b06645c427ee3ac06e662d93a3aca87d64d1cb7b57ea133ee14fd9f6a0ac0d4bebde44dd8d70cefcbb8e4614d3e49752c76e4545ed8e0923c2cbdb1dc
7
- data.tar.gz: 47bdc2e63a242463221143098758c0cfc2ff65b64789c9b46ca6e5073d5dc9a8b07317b29a6edac79056cea7c3c41d334d9a5ad7b697780e4ba17258624a7526
6
+ metadata.gz: b1bb0f88617f3ce5c6b7f964c7849e70a016d7889a9568a3d2ba310d4f42f094cc76167f9ca64cb7cae7f71ca00af672f791afb4ba3460199e383dfbeece78c2
7
+ data.tar.gz: db471ad23ae2a0bdf4f1408ed8371635cfe808808b5daa4454fa3b1189cc107a4ac99514e50f805cdfb58e1ff3ff61cfba8840a5dbeadad9f5766118e7424075
@@ -54,6 +54,10 @@ EndOfLine:
54
54
  IndentationWidth :
55
55
  Enabled: false
56
56
 
57
+ # Disable this because it produces false negatives
58
+ Naming/HeredocDelimiterNaming:
59
+ Enabled: false
60
+
57
61
  # Enabled after end of support of Rubies < 2.3
58
62
  Layout/IndentHeredoc:
59
63
  Enabled: false
@@ -1,3 +1,8 @@
1
+ ### 0.5.03 / 2017-10-09
2
+ * [CHANGE] Refactoring code style to please Rubocop 0.50.0
3
+ * [CHANGE] File `.rubocop.yml`: Disabling heredoc cop because it produces false negatives
4
+ * [FIX] File `examples/general/calc_iter1/calc_ast_builder.rb`. Method CalcASTBuilder#new_leaf_node used old signature. Fixed
5
+
1
6
  ### 0.5.02 / 2017-10-08
2
7
  * [NEW] Addedsupport for ASTs (Abstract Syntax Tree)
3
8
  * [CHANGE] File `examples/data_formats/JSON/JSON_demo.rb` Added New command-line switches for details use --help option
@@ -9,12 +9,12 @@ require_relative 'json_ast_nodes'
9
9
  # nodes) and using a step by step approach.
10
10
  class JSONASTBuilder < Rley::Parser::ParseTreeBuilder
11
11
  Terminal2NodeClass = {
12
- 'false' => JSONBooleanNode,
13
- 'true' => JSONBooleanNode,
14
- 'null' => JSONNullNode,
15
- 'string' => JSONStringNode,
16
- 'number' => JSONNumberNode,
17
- }
12
+ 'false' => JSONBooleanNode,
13
+ 'true' => JSONBooleanNode,
14
+ 'null' => JSONNullNode,
15
+ 'string' => JSONStringNode,
16
+ 'number' => JSONNumberNode
17
+ }.freeze
18
18
 
19
19
  protected
20
20
 
@@ -39,12 +39,11 @@ class JSONASTBuilder < Rley::Parser::ParseTreeBuilder
39
39
  # @param terminal [Terminal] Terminal symbol associated with the token
40
40
  # @param aTokenPosition [Integer] Position of token in the input stream
41
41
  # @param aToken [Token] The input token
42
- def new_leaf_node(terminal, aTokenPosition, aToken)
42
+ def new_leaf_node(_production, terminal, aTokenPosition, aToken)
43
43
  klass = Terminal2NodeClass.fetch(terminal.name, JSONTerminalNode)
44
44
  return klass.new(aToken, aTokenPosition)
45
45
  end
46
46
 
47
-
48
47
  # Method to override.
49
48
  # Factory method for creating a parent node object.
50
49
  # @param aProduction [Production] Production rule
@@ -93,60 +92,60 @@ class JSONASTBuilder < Rley::Parser::ParseTreeBuilder
93
92
  end
94
93
 
95
94
  # rule 'object' => %w[begin-object member-list end-object]
96
- def reduce_object_0(aProduction, aRange, theTokens, theChildren)
95
+ def reduce_object_0(aProduction, _range, _tokens, theChildren)
97
96
  second_child = theChildren[1]
98
97
  second_child.symbol = aProduction.lhs
99
98
  return second_child
100
99
  end
101
100
 
102
101
  # rule 'object' => %w[begin-object end-object]
103
- def reduce_object_1(aRange, theTokens, theChildren)
102
+ def reduce_object_1(aProduction, _range, _tokens, _children)
104
103
  return JSONObjectNode.new(aProduction.lhs)
105
104
  end
106
105
 
107
106
  # rule 'member-list' => %w[member-list value-separator member]
108
- def reduce_member_list_0(aRange, theTokens, theChildren)
107
+ def reduce_member_list_0(_range, _tokens, theChildren)
109
108
  node = theChildren[0]
110
109
  node.members << theChildren.last
111
110
  return node
112
111
  end
113
112
 
114
113
  # rule 'member-list' => 'member'
115
- def reduce_member_list_1(aProduction, aRange, theTokens, theChildren)
114
+ def reduce_member_list_1(aProduction, _range, _tokens, theChildren)
116
115
  node = JSONObjectNode.new(aProduction.lhs)
117
116
  node.members << theChildren[0]
118
117
  return node
119
118
  end
120
119
 
121
120
  # rule 'member' => %w[string name-separator value]
122
- def reduce_member_0(aProduction, aRange, theTokens, theChildren)
121
+ def reduce_member_0(aProduction, _range, _tokens, theChildren)
123
122
  return JSONPair.new(theChildren[0], theChildren[2], aProduction.lhs)
124
123
  end
125
124
 
126
125
  # rule 'object' => %w[begin-object member-list end-object]
127
- def reduce_array_0(aProduction, aRange, theTokens, theChildren)
126
+ def reduce_array_0(aProduction, _range, _tokens, theChildren)
128
127
  second_child = theChildren[1]
129
128
  second_child.symbol = aProduction.lhs
130
129
  return second_child
131
130
  end
132
131
 
133
-
134
132
  # rule 'array' => %w[begin-array end-array]
135
- def reduce_array_1(aRange, theTokens, theChildren)
133
+ def reduce_array_1(_range, _tokens, _children)
136
134
  return JSONArrayNode.new
137
135
  end
138
136
 
139
137
  # rule 'array-items' => %w[array-items value-separator value]
140
- def reduce_array_items_0(aRange, theTokens, theChildren)
138
+ def reduce_array_items_0(_range, _tokens, theChildren)
141
139
  node = theChildren[0]
142
140
  node.children << theChildren[2]
143
141
  return node
144
142
  end
145
143
 
146
144
  # rule 'array-items' => %w[value]
147
- def reduce_array_items_1(aProduction, aRange, theTokens, theChildren)
145
+ def reduce_array_items_1(aProduction, _range, _tokens, theChildren)
148
146
  node = JSONArrayNode.new(aProduction.lhs)
149
147
  node.children << theChildren[0]
150
148
  return node
151
149
  end
152
- end # class
150
+ end # class
151
+ # End of file
@@ -15,18 +15,18 @@ JSONTerminalNode = Struct.new(:token, :value, :position) do
15
15
  end
16
16
 
17
17
  def symbol()
18
- self.token.terminal
18
+ token.terminal
19
19
  end
20
20
 
21
21
  def to_ruby()
22
- return value
22
+ value
23
23
  end
24
-
24
+
25
25
  # Part of the 'visitee' role in Visitor design pattern.
26
26
  # @param aVisitor[ParseTreeVisitor] the visitor
27
27
  def accept(aVisitor)
28
28
  aVisitor.visit_terminal(self)
29
- end
29
+ end
30
30
  end
31
31
 
32
32
 
@@ -45,7 +45,7 @@ end
45
45
  class JSONStringNode < JSONTerminalNode
46
46
  end
47
47
 
48
- class JSONNumberNode < JSONTerminalNode
48
+ class JSONNumberNode < JSONTerminalNode
49
49
  def init_value(aLiteral)
50
50
  case aLiteral
51
51
  when /^[+-]?\d+$/
@@ -63,7 +63,7 @@ class JSONCompositeNode
63
63
 
64
64
  def initialize(aSymbol)
65
65
  @symbol = aSymbol
66
- @children = []
66
+ @children = []
67
67
  end
68
68
 
69
69
  # Part of the 'visitee' role in Visitor design pattern.
@@ -71,9 +71,8 @@ class JSONCompositeNode
71
71
  def accept(aVisitor)
72
72
  aVisitor.visit_nonterminal(self)
73
73
  end
74
-
75
- alias subnodes children
76
74
 
75
+ alias subnodes children
77
76
  end # class
78
77
 
79
78
 
@@ -108,7 +107,7 @@ class JSONPair
108
107
  def children()
109
108
  return [name, value]
110
109
  end
111
-
110
+
112
111
  alias subnodes children
113
112
 
114
113
  # Part of the 'visitee' role in Visitor design pattern.
@@ -116,7 +115,6 @@ class JSONPair
116
115
  def accept(aVisitor)
117
116
  aVisitor.visit_nonterminal(self)
118
117
  end
119
-
120
118
  end # class
121
119
 
122
120
  class JSONObjectNode < JSONCompositeNode
@@ -137,5 +135,4 @@ class JSONObjectNode < JSONCompositeNode
137
135
 
138
136
  alias members children
139
137
  end # class
140
-
141
-
138
+ # End of file
@@ -43,7 +43,7 @@ case cli_options[:format]
43
43
  raise StandardError, msg if tree_rep == :cst
44
44
  end
45
45
 
46
- tree_builder = (tree_rep == :ast)? JSONASTBuilder : nil
46
+ tree_builder = tree_rep == :ast ? JSONASTBuilder : nil
47
47
 
48
48
  # Generate a parse tree from the parse result
49
49
  ptree = result.parse_tree(tree_builder)
@@ -10,7 +10,7 @@ require_relative 'calc_ast_nodes'
10
10
  class CalcASTBuilder < Rley::Parser::ParseTreeBuilder
11
11
  Terminal2NodeClass = {
12
12
  'NUMBER' => CalcNumberNode
13
- }
13
+ }.freeze
14
14
 
15
15
  protected
16
16
 
@@ -39,18 +39,17 @@ class CalcASTBuilder < Rley::Parser::ParseTreeBuilder
39
39
  # @param aTerminal [Terminal] Terminal symbol associated with the token
40
40
  # @param aTokenPosition [Integer] Position of token in the input stream
41
41
  # @param aToken [Token] The input token
42
- def new_leaf_node(aProduction, aTerminal, aTokenPosition, aToken)
42
+ def new_leaf_node(_production, aTerminal, aTokenPosition, aToken)
43
43
  klass = Terminal2NodeClass.fetch(aTerminal.name, CalcTerminalNode)
44
- if klass
45
- node = klass.new(aToken, aTokenPosition)
46
- else
47
- node = PTree::TerminalNode.new(aToken, aTokenPosition)
48
- end
49
-
44
+ node = if klass
45
+ klass.new(aToken, aTokenPosition)
46
+ else
47
+ PTree::TerminalNode.new(aToken, aTokenPosition)
48
+ end
49
+
50
50
  return node
51
51
  end
52
52
 
53
-
54
53
  # Method to override.
55
54
  # Factory method for creating a parent node object.
56
55
  # @param aProduction [Production] Production rule
@@ -83,15 +82,15 @@ class CalcASTBuilder < Rley::Parser::ParseTreeBuilder
83
82
 
84
83
  when 'add_operator[0]' # rule 'add_operator' => 'PLUS'
85
84
  reduce_add_operator_0(aProduction, aRange, theTokens, theChildren)
86
-
85
+
87
86
  when 'add_operator[1]' # rule 'add_operator' => 'MINUS'
88
- reduce_add_operator_1(aProduction, aRange, theTokens, theChildren)
87
+ reduce_add_operator_1(aProduction, aRange, theTokens, theChildren)
89
88
 
90
89
  when 'mul_operator[0]' # rule 'mul_operator' => 'STAR'
91
90
  reduce_mul_operator_0(aProduction, aRange, theTokens, theChildren)
92
-
91
+
93
92
  when 'mul_operator[1]' # rule 'mul_operator' => 'DIVIDE'
94
- reduce_mul_operator_1(aProduction, aRange, theTokens, theChildren)
93
+ reduce_mul_operator_1(aProduction, aRange, theTokens, theChildren)
95
94
 
96
95
  else
97
96
  raise StandardError, "Don't know production #{aProduction.name}"
@@ -99,44 +98,42 @@ class CalcASTBuilder < Rley::Parser::ParseTreeBuilder
99
98
 
100
99
  return node
101
100
  end
102
-
101
+
103
102
  def reduce_binary_operator(theChildren)
104
103
  operator_node = theChildren[1]
105
104
  operator_node.children << theChildren[0]
106
105
  operator_node.children << theChildren[2]
107
- return operator_node
106
+ return operator_node
108
107
  end
109
108
 
110
109
  # rule 'simple_expression' => %w[simple_expression add_operator term]
111
- def reduce_simple_expression_1(aProduction, aRange, theTokens, theChildren)
110
+ def reduce_simple_expression_1(_production, _range, _tokens, theChildren)
112
111
  reduce_binary_operator(theChildren)
113
112
  end
114
113
 
115
-
116
114
  # rule 'term' => %w[term mul_operator factor]
117
- def reduce_term_1(aProduction, aRange, theTokens, theChildren)
115
+ def reduce_term_1(_production, _range, _tokens, theChildren)
118
116
  reduce_binary_operator(theChildren)
119
117
  end
120
-
118
+
121
119
  # rule 'add_operator' => 'PLUS'
122
- def reduce_add_operator_0(aProduction, aRange, theTokens, theChildren)
120
+ def reduce_add_operator_0(_production, _range, _tokens, theChildren)
123
121
  return CalcAddNode.new(theChildren[0].symbol)
124
122
  end
125
-
123
+
126
124
  # rule 'add_operator' => 'MINUS'
127
- def reduce_add_operator_1(aProduction, aRange, theTokens, theChildren)
125
+ def reduce_add_operator_1(_production, _range, _tokens, theChildren)
128
126
  return CalcSubtractNode.new(theChildren[0].symbol)
129
127
  end
130
-
128
+
131
129
  # rule 'mul_operator' => 'STAR'
132
- def reduce_mul_operator_0(aProduction, aRange, theTokens, theChildren)
130
+ def reduce_mul_operator_0(_production, _range, _tokens, theChildren)
133
131
  return CalcMultiplyNode.new(theChildren[0].symbol)
134
132
  end
135
-
133
+
136
134
  # rule 'mul_operator' => 'DIVIDE'
137
- def reduce_mul_operator_1(aProduction, aRange, theTokens, theChildren)
135
+ def reduce_mul_operator_1(_production, _range, _tokens, theChildren)
138
136
  return CalcDivideNode.new(theChildren[0].symbol)
139
- end
140
-
141
-
142
- end # class
137
+ end
138
+ end # class
139
+ # End of file
@@ -15,7 +15,7 @@ CalcTerminalNode = Struct.new(:token, :value, :position) do
15
15
  end
16
16
 
17
17
  def symbol()
18
- self.token.terminal
18
+ token.terminal
19
19
  end
20
20
 
21
21
  def interpret()
@@ -29,7 +29,7 @@ CalcTerminalNode = Struct.new(:token, :value, :position) do
29
29
  end
30
30
  end
31
31
 
32
- class CalcNumberNode < CalcTerminalNode
32
+ class CalcNumberNode < CalcTerminalNode
33
33
  def init_value(aLiteral)
34
34
  case aLiteral
35
35
  when /^[+-]?\d+$/
@@ -57,7 +57,6 @@ class CalcCompositeNode
57
57
  end
58
58
 
59
59
  alias subnodes children
60
-
61
60
  end # class
62
61
 
63
62
  class CalcUnaryOpNode < CalcCompositeNode
@@ -89,7 +88,7 @@ class CalcBinaryOpNode < CalcCompositeNode
89
88
 
90
89
  protected
91
90
 
92
- def get_operands()
91
+ def retrieve_operands()
93
92
  operands = []
94
93
  children.each do |child|
95
94
  oper = child.respond_to?(:interpret) ? child.interpret : child
@@ -98,14 +97,12 @@ class CalcBinaryOpNode < CalcCompositeNode
98
97
 
99
98
  return operands
100
99
  end
101
-
102
100
  end # class
103
101
 
104
102
  class CalcAddNode < CalcBinaryOpNode
105
-
106
103
  # TODO
107
104
  def interpret()
108
- operands = get_operands
105
+ operands = retrieve_operands
109
106
 
110
107
  sum = operands[0] + operands[1]
111
108
  return sum
@@ -114,10 +111,9 @@ end # class
114
111
 
115
112
 
116
113
  class CalcSubtractNode < CalcBinaryOpNode
117
-
118
114
  # TODO
119
115
  def interpret()
120
- operands = get_operands
116
+ operands = retrieve_operands
121
117
 
122
118
  substraction = operands[0] - operands[1]
123
119
  return substraction
@@ -125,27 +121,22 @@ class CalcSubtractNode < CalcBinaryOpNode
125
121
  end # class
126
122
 
127
123
  class CalcMultiplyNode < CalcBinaryOpNode
128
-
129
124
  # TODO
130
125
  def interpret()
131
- operands = get_operands
126
+ operands = retrieve_operands
132
127
  multiplication = operands[0] * operands[1]
133
128
  return multiplication
134
129
  end
135
130
  end # class
136
131
 
137
132
  class CalcDivideNode < CalcBinaryOpNode
138
-
139
133
  # TODO
140
134
  def interpret()
141
- operands = get_operands
135
+ operands = retrieve_operands
142
136
  numerator = operands[0].to_f
143
137
  denominator = operands[1]
144
138
  division = numerator / denominator
145
139
  return division
146
140
  end
147
141
  end # class
148
-
149
-
150
-
151
-
142
+ # End of file
@@ -51,13 +51,13 @@ class CalcLexer
51
51
  # Single character token
52
52
  token = build_token(@@lexeme2name[curr_ch], scanner.getch)
53
53
 
54
- elsif lexeme = scanner.scan(/\*\*/)
54
+ elsif (lexeme = scanner.scan(/\*\*/))
55
55
  token = build_token(@@lexeme2name[lexeme], lexeme)
56
- elsif lexeme = scanner.scan(/\*/)
56
+ elsif (lexeme = scanner.scan(/\*/))
57
57
  token = build_token(@@lexeme2name[lexeme], lexeme)
58
- elsif lexeme = scanner.scan(/-?[0-9]+(\.[0-9]+)?([eE][-+]?[0-9])?/)
58
+ elsif (lexeme = scanner.scan(/-?[0-9]+(\.[0-9]+)?([eE][-+]?[0-9])?/))
59
59
  token = build_token('NUMBER', lexeme)
60
- elsif lexeme = scanner.scan(/-/)
60
+ elsif (lexeme = scanner.scan(/-/))
61
61
  token = build_token(@@lexeme2name[curr_ch], lexeme)
62
62
  else # Unknown token
63
63
  erroneous = curr_ch.nil? ? '' : curr_ch
@@ -77,5 +77,4 @@ class CalcLexer
77
77
  def skip_whitespaces()
78
78
  scanner.scan(/[ \t\f\n\r]+/)
79
79
  end
80
-
81
80
  end # class