jievro-parser 0.8.0 → 0.9.0
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 +4 -4
- data/Gemfile.lock +3 -3
- data/Rakefile +1 -1
- data/jievro-parser.gemspec +1 -1
- data/lib/jievro/parser/binary_operator.rb +27 -38
- data/lib/jievro/parser/grammar/code_block.treetop +1 -1
- data/lib/jievro/parser/grammar/declaration/constant_declaration.treetop +2 -8
- data/lib/jievro/parser/grammar/declaration/declaration.treetop +47 -5
- data/lib/jievro/parser/grammar/declaration/function_declaration.treetop +26 -105
- data/lib/jievro/parser/grammar/declaration/initializer_declaration.treetop +16 -0
- data/lib/jievro/parser/grammar/declaration/protocol_declaration.treetop +164 -0
- data/lib/jievro/parser/grammar/declaration/struct_declaration.treetop +49 -0
- data/lib/jievro/parser/grammar/declaration/typealias_declaration.treetop +64 -0
- data/lib/jievro/parser/grammar/declaration/variable_declaration.treetop +113 -9
- data/lib/jievro/parser/grammar/expression/binary_expression.treetop +5 -22
- data/lib/jievro/parser/grammar/expression/closure_expression.treetop +28 -86
- data/lib/jievro/parser/grammar/expression/expression.treetop +13 -13
- data/lib/jievro/parser/grammar/expression/function_call_expression.treetop +2 -6
- data/lib/jievro/parser/grammar/expression/literal_expression.treetop +1 -1
- data/lib/jievro/parser/grammar/expression/parenthesized_expression.treetop +15 -54
- data/lib/jievro/parser/grammar/expression/postfix_expression.treetop +1 -1
- data/lib/jievro/parser/grammar/expression/prefix_expression.treetop +1 -1
- data/lib/jievro/parser/grammar/expression/primary_expression.treetop +1 -1
- data/lib/jievro/parser/grammar/expression/range_expression.treetop +4 -18
- data/lib/jievro/parser/grammar/expression/self_expression.treetop +2 -7
- data/lib/jievro/parser/grammar/expression/super_expression.treetop +2 -7
- data/lib/jievro/parser/grammar/expression/wildcard_expression.treetop +1 -1
- data/lib/jievro/parser/grammar/generics/generic_argument_clause.treetop +8 -34
- data/lib/jievro/parser/grammar/generics/generics.treetop +2 -2
- data/lib/jievro/parser/grammar/grammar.treetop +35 -28
- data/lib/jievro/parser/grammar/identifier.treetop +2 -2
- data/lib/jievro/parser/grammar/implicit_parameter_name.treetop +1 -1
- data/lib/jievro/parser/grammar/literal/literal.treetop +25 -24
- data/lib/jievro/parser/grammar/literal/literal_array.treetop +12 -40
- data/lib/jievro/parser/grammar/literal/literal_boolean.treetop +5 -13
- data/lib/jievro/parser/grammar/literal/literal_decimal_floating_point.treetop +3 -9
- data/lib/jievro/parser/grammar/literal/literal_dictionary.treetop +18 -57
- data/lib/jievro/parser/grammar/literal/literal_hexadecimal_floating_point.treetop +3 -9
- data/lib/jievro/parser/grammar/literal/literal_integer_binary.treetop +3 -9
- data/lib/jievro/parser/grammar/literal/literal_integer_decimal.treetop +3 -9
- data/lib/jievro/parser/grammar/literal/literal_integer_hexadecimal.treetop +3 -9
- data/lib/jievro/parser/grammar/literal/literal_integer_octal.treetop +3 -9
- data/lib/jievro/parser/grammar/literal/literal_nil.treetop +2 -7
- data/lib/jievro/parser/grammar/literal/literal_numeric.treetop +11 -18
- data/lib/jievro/parser/grammar/literal/literal_string.treetop +14 -46
- data/lib/jievro/parser/grammar/operator.treetop +1 -1
- data/lib/jievro/parser/grammar/pattern/pattern.treetop +4 -4
- data/lib/jievro/parser/grammar/pattern/pattern_identifier.treetop +1 -1
- data/lib/jievro/parser/grammar/pattern/pattern_initializer.treetop +18 -70
- data/lib/jievro/parser/grammar/pattern/pattern_wildcard.treetop +1 -1
- data/lib/jievro/parser/grammar/statement/branch/branch.treetop +2 -2
- data/lib/jievro/parser/grammar/statement/branch/if.treetop +1 -1
- data/lib/jievro/parser/grammar/statement/loop/do_while.treetop +1 -1
- data/lib/jievro/parser/grammar/statement/loop/for.treetop +1 -1
- data/lib/jievro/parser/grammar/statement/loop/for_in.treetop +1 -1
- data/lib/jievro/parser/grammar/statement/loop/loop.treetop +5 -5
- data/lib/jievro/parser/grammar/statement/loop/while.treetop +1 -1
- data/lib/jievro/parser/grammar/statement/statement.treetop +3 -3
- data/lib/jievro/parser/grammar/type/type.treetop +7 -5
- data/lib/jievro/parser/grammar/type/type_annotation.treetop +1 -1
- data/lib/jievro/parser/grammar/type/type_array.treetop +1 -1
- data/lib/jievro/parser/grammar/type/type_dictionary.treetop +1 -1
- data/lib/jievro/parser/grammar/type/type_identifier.treetop +7 -14
- data/lib/jievro/parser/grammar/type/type_inheritance_clause.treetop +57 -0
- data/lib/jievro/parser/grammar/whitespace.treetop +1 -1
- data/lib/jievro/parser/grammar/wildcard.treetop +1 -1
- data/lib/jievro/parser/string_parser.rb +2 -7
- data/lib/jievro/parser/tools/converter/binary_string_to_int_converter.rb +6 -7
- data/lib/jievro/parser/tools/converter/converter.rb +1 -1
- data/lib/jievro/parser/tools/converter/decimal_float_string_to_float_converter.rb +5 -6
- data/lib/jievro/parser/tools/converter/decimal_string_to_int_converter.rb +5 -6
- data/lib/jievro/parser/tools/converter/hexadecimal_float_string_to_float_converter.rb +9 -14
- data/lib/jievro/parser/tools/converter/hexadecimal_string_to_int_converter.rb +5 -6
- data/lib/jievro/parser/tools/converter/octal_string_to_int_converter.rb +5 -6
- data/lib/jievro/parser/tools/quote_stripper.rb +1 -2
- data/lib/jievro/parser/tools/shunting_yard.rb +18 -32
- data/lib/jievro/parser/tools/tokens.rb +159 -0
- data/lib/jievro/parser/version.rb +1 -1
- metadata +24 -19
@@ -1,6 +1,4 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
module Kauri
|
1
|
+
module Jievro
|
4
2
|
grammar LiteralHexadecimalFloatingPoint
|
5
3
|
|
6
4
|
rule literal_hexadecimal_floating_point
|
@@ -11,16 +9,12 @@ module Kauri
|
|
11
9
|
) {
|
12
10
|
def tokens
|
13
11
|
[
|
14
|
-
|
15
|
-
type: 'T_LITERAL_FLOATING_POINT_HEXADECIMAL',
|
16
|
-
value: text_value
|
17
|
-
}
|
12
|
+
T_LITERAL_FLOATING_POINT_HEXADECIMAL(text_value)
|
18
13
|
]
|
19
14
|
end
|
20
15
|
|
21
16
|
def ast
|
22
|
-
|
23
|
-
converter = Kauri::Tools::Converter::HexadecimalFloatStringToFloatConverter.new
|
17
|
+
converter = Jievro::Tools::Converter::HexadecimalFloatStringToFloatConverter.new
|
24
18
|
|
25
19
|
[
|
26
20
|
{
|
@@ -1,22 +1,16 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
module Kauri
|
1
|
+
module Jievro
|
4
2
|
grammar LiteralIntegerBinary
|
5
3
|
|
6
4
|
rule literal_integer_binary
|
7
5
|
'0b' binary_digit binary_literal_characters? {
|
8
6
|
def tokens
|
9
7
|
[
|
10
|
-
|
11
|
-
type: 'T_LITERAL_INTEGER_BINARY',
|
12
|
-
value: text_value
|
13
|
-
}
|
8
|
+
T_LITERAL_INTEGER_BINARY(text_value)
|
14
9
|
]
|
15
10
|
end
|
16
11
|
|
17
12
|
def ast
|
18
|
-
|
19
|
-
converter = Kauri::Tools::Converter::BinaryStringToIntConverter.new
|
13
|
+
converter = Jievro::Tools::Converter::BinaryStringToIntConverter.new
|
20
14
|
|
21
15
|
[
|
22
16
|
{
|
@@ -1,22 +1,16 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
module Kauri
|
1
|
+
module Jievro
|
4
2
|
grammar LiteralIntegerDecimal
|
5
3
|
|
6
4
|
rule literal_integer_decimal
|
7
5
|
decimal_digit decimal_literal_characters? {
|
8
6
|
def tokens
|
9
7
|
[
|
10
|
-
|
11
|
-
type: 'T_LITERAL_INTEGER_DECIMAL',
|
12
|
-
value: text_value
|
13
|
-
}
|
8
|
+
T_LITERAL_INTEGER_DECIMAL(text_value)
|
14
9
|
]
|
15
10
|
end
|
16
11
|
|
17
12
|
def ast
|
18
|
-
|
19
|
-
converter = Kauri::Tools::Converter::DecimalStringToIntConverter.new
|
13
|
+
converter = Jievro::Tools::Converter::DecimalStringToIntConverter.new
|
20
14
|
|
21
15
|
[
|
22
16
|
{
|
@@ -1,22 +1,16 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
module Kauri
|
1
|
+
module Jievro
|
4
2
|
grammar LiteralIntegerHexadecimal
|
5
3
|
|
6
4
|
rule literal_integer_hexadecimal
|
7
5
|
'0x' hexadecimal_digit hexadecimal_literal_characters? {
|
8
6
|
def tokens
|
9
7
|
[
|
10
|
-
|
11
|
-
type: 'T_LITERAL_INTEGER_HEXADECIMAL',
|
12
|
-
value: text_value
|
13
|
-
}
|
8
|
+
T_LITERAL_INTEGER_HEXADECIMAL(text_value)
|
14
9
|
]
|
15
10
|
end
|
16
11
|
|
17
12
|
def ast
|
18
|
-
|
19
|
-
converter = Kauri::Tools::Converter::HexadecimalStringToIntConverter.new
|
13
|
+
converter = Jievro::Tools::Converter::HexadecimalStringToIntConverter.new
|
20
14
|
|
21
15
|
[
|
22
16
|
{
|
@@ -1,22 +1,16 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
module Kauri
|
1
|
+
module Jievro
|
4
2
|
grammar LiteralIntegerOctal
|
5
3
|
|
6
4
|
rule literal_integer_octal
|
7
5
|
'0o' octal_digit octal_literal_characters? {
|
8
6
|
def tokens
|
9
7
|
[
|
10
|
-
|
11
|
-
type: 'T_LITERAL_INTEGER_OCTAL',
|
12
|
-
value: text_value
|
13
|
-
}
|
8
|
+
T_LITERAL_INTEGER_OCTAL(text_value)
|
14
9
|
]
|
15
10
|
end
|
16
11
|
|
17
12
|
def ast
|
18
|
-
|
19
|
-
converter = Kauri::Tools::Converter::OctalStringToIntConverter.new
|
13
|
+
converter = Jievro::Tools::Converter::OctalStringToIntConverter.new
|
20
14
|
|
21
15
|
[
|
22
16
|
{
|
@@ -4,26 +4,24 @@ require 'jievro/parser/grammar/literal/literal_integer_decimal'
|
|
4
4
|
require 'jievro/parser/grammar/literal/literal_integer_hexadecimal'
|
5
5
|
require 'jievro/parser/grammar/literal/literal_decimal_floating_point'
|
6
6
|
require 'jievro/parser/grammar/literal/literal_hexadecimal_floating_point'
|
7
|
+
require 'jievro/parser/tools/converter/converter'
|
7
8
|
|
8
|
-
module
|
9
|
+
module Jievro
|
9
10
|
grammar LiteralNumeric
|
10
11
|
|
11
|
-
include
|
12
|
-
include
|
13
|
-
include
|
14
|
-
include
|
15
|
-
include
|
16
|
-
include
|
12
|
+
include Jievro::LiteralIntegerBinary
|
13
|
+
include Jievro::LiteralIntegerOctal
|
14
|
+
include Jievro::LiteralIntegerDecimal
|
15
|
+
include Jievro::LiteralIntegerHexadecimal
|
16
|
+
include Jievro::LiteralDecimalFloatingPoint
|
17
|
+
include Jievro::LiteralHexadecimalFloatingPoint
|
17
18
|
|
18
19
|
rule literal_numeric
|
19
20
|
minus:minus? numeric:(literal_floating_point / literal_integer) {
|
20
21
|
def tokens
|
21
22
|
tokens = []
|
22
23
|
|
23
|
-
unless minus.text_value.empty?
|
24
|
-
tokens.push(minus.tokens)
|
25
|
-
end
|
26
|
-
|
24
|
+
tokens.concat(minus.tokens) unless minus.text_value.empty?
|
27
25
|
tokens.concat(numeric.tokens)
|
28
26
|
|
29
27
|
tokens
|
@@ -32,9 +30,7 @@ module Kauri
|
|
32
30
|
def ast
|
33
31
|
ast = numeric.ast.first
|
34
32
|
|
35
|
-
unless minus.text_value.empty?
|
36
|
-
ast[:value] = -ast[:value]
|
37
|
-
end
|
33
|
+
ast[:value] = -ast[:value] unless minus.text_value.empty?
|
38
34
|
|
39
35
|
[ast]
|
40
36
|
end
|
@@ -58,10 +54,7 @@ module Kauri
|
|
58
54
|
rule minus
|
59
55
|
'-' {
|
60
56
|
def tokens
|
61
|
-
|
62
|
-
type: 'T_MINUS',
|
63
|
-
value: '-'
|
64
|
-
}
|
57
|
+
[T_OPERATOR('-')]
|
65
58
|
end
|
66
59
|
}
|
67
60
|
end
|
@@ -1,31 +1,19 @@
|
|
1
|
-
module
|
1
|
+
module Jievro
|
2
2
|
grammar LiteralString
|
3
3
|
|
4
4
|
rule literal_string
|
5
5
|
'"' quoted_text:quoted_text? '"' {
|
6
6
|
def tokens
|
7
|
+
tokens = []
|
7
8
|
|
8
|
-
tokens
|
9
|
-
|
10
|
-
|
11
|
-
value: '"'
|
12
|
-
}
|
13
|
-
]
|
14
|
-
|
15
|
-
unless quoted_text.text_value.empty?
|
16
|
-
tokens.concat(quoted_text.tokens)
|
17
|
-
end
|
18
|
-
|
19
|
-
tokens.push({
|
20
|
-
type: 'T_DOUBLE_QUOTE',
|
21
|
-
value: '"'
|
22
|
-
})
|
9
|
+
tokens.push(T_DOUBLE_QUOTE)
|
10
|
+
tokens.concat(quoted_text.tokens) unless quoted_text.text_value.empty?
|
11
|
+
tokens.push(T_DOUBLE_QUOTE)
|
23
12
|
|
24
13
|
tokens
|
25
14
|
end
|
26
15
|
|
27
16
|
def ast
|
28
|
-
|
29
17
|
if quoted_text.text_value.empty?
|
30
18
|
ast = [
|
31
19
|
{
|
@@ -56,7 +44,7 @@ module Kauri
|
|
56
44
|
ast = []
|
57
45
|
is_interpolated_string = false
|
58
46
|
last_node_is_literal_string = false
|
59
|
-
stripper =
|
47
|
+
stripper = Jievro::Tools::QuoteStripper.new
|
60
48
|
|
61
49
|
elements.each { |e|
|
62
50
|
if e.is_expression
|
@@ -64,7 +52,6 @@ module Kauri
|
|
64
52
|
last_node_is_literal_string = false
|
65
53
|
ast.push(e.ast)
|
66
54
|
else
|
67
|
-
|
68
55
|
if e.is_quoted_unicode_char
|
69
56
|
value = e.raw_value
|
70
57
|
else
|
@@ -104,12 +91,10 @@ module Kauri
|
|
104
91
|
rule sequence_of_chars
|
105
92
|
(escaped_character / standard_character)+ {
|
106
93
|
def tokens
|
107
|
-
stripper =
|
94
|
+
stripper = Jievro::Tools::QuoteStripper.new
|
95
|
+
|
108
96
|
[
|
109
|
-
|
110
|
-
type: 'T_LITERAL_STRING',
|
111
|
-
value: stripper.strip(text_value)
|
112
|
-
}
|
97
|
+
T_LITERAL_STRING(stripper.strip(text_value))
|
113
98
|
]
|
114
99
|
end
|
115
100
|
|
@@ -128,17 +113,9 @@ module Kauri
|
|
128
113
|
def tokens
|
129
114
|
tokens = []
|
130
115
|
|
131
|
-
tokens.push(
|
132
|
-
type: 'T_QUOTED_EXPRESSION_OPEN',
|
133
|
-
value: '\('
|
134
|
-
})
|
135
|
-
|
116
|
+
tokens.push(T_QUOTED_EXPRESSION_OPEN)
|
136
117
|
tokens.concat(expression.tokens)
|
137
|
-
|
138
|
-
tokens.push({
|
139
|
-
type: 'T_QUOTED_EXPRESSION_CLOSE',
|
140
|
-
value: ')'
|
141
|
-
})
|
118
|
+
tokens.push(T_QUOTED_EXPRESSION_CLOSE)
|
142
119
|
|
143
120
|
tokens
|
144
121
|
end
|
@@ -161,18 +138,9 @@ module Kauri
|
|
161
138
|
'\u{' unicode_scalar_digits:unicode_scalar_digits 1..8 '}' {
|
162
139
|
def tokens
|
163
140
|
[
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
},
|
168
|
-
{
|
169
|
-
type: 'T_UNICODE_CHAR',
|
170
|
-
value: unicode_scalar_digits.text_value
|
171
|
-
},
|
172
|
-
{
|
173
|
-
type: 'T_QUOTED_UNICODE_CHAR_CLOSE',
|
174
|
-
value: 125.chr
|
175
|
-
}
|
141
|
+
T_QUOTED_UNICODE_CHAR_OPEN,
|
142
|
+
T_UNICODE_CHAR(unicode_scalar_digits.text_value),
|
143
|
+
T_QUOTED_UNICODE_CHAR_CLOSE
|
176
144
|
]
|
177
145
|
end
|
178
146
|
|
@@ -2,12 +2,12 @@ require 'jievro/parser/grammar/pattern/pattern_wildcard'
|
|
2
2
|
require 'jievro/parser/grammar/pattern/pattern_identifier'
|
3
3
|
require 'jievro/parser/grammar/pattern/pattern_initializer'
|
4
4
|
|
5
|
-
module
|
5
|
+
module Jievro
|
6
6
|
grammar Pattern
|
7
7
|
|
8
|
-
include
|
9
|
-
include
|
10
|
-
include
|
8
|
+
include Jievro::PatternWildcard
|
9
|
+
include Jievro::PatternIdentifier
|
10
|
+
include Jievro::PatternInitializer
|
11
11
|
|
12
12
|
rule pattern
|
13
13
|
pattern_wildcard / pattern_identifier
|
@@ -1,4 +1,4 @@
|
|
1
|
-
module
|
1
|
+
module Jievro
|
2
2
|
grammar PatternInitializer
|
3
3
|
|
4
4
|
rule untyped_pattern_initializer
|
@@ -7,29 +7,20 @@ module Kauri
|
|
7
7
|
tokens = []
|
8
8
|
|
9
9
|
tokens.concat(pattern.tokens)
|
10
|
-
|
11
|
-
unless
|
12
|
-
tokens.concat(ws.tokens)
|
13
|
-
end
|
14
|
-
|
15
|
-
unless initializer.text_value.empty?
|
16
|
-
tokens.concat(initializer.tokens)
|
17
|
-
end
|
10
|
+
tokens.concat(ws.tokens) unless ws.text_value.empty?
|
11
|
+
tokens.concat(initializer.tokens) unless initializer.text_value.empty?
|
18
12
|
|
19
13
|
tokens
|
20
14
|
end
|
21
15
|
|
22
16
|
def ast
|
23
|
-
|
24
17
|
ast = {
|
25
18
|
pattern: pattern.ast.first
|
26
19
|
}
|
27
20
|
|
28
21
|
ast[:pattern] = pattern.ast.first
|
29
|
-
|
30
|
-
|
31
|
-
ast[:initializer] = initializer.ast.first
|
32
|
-
end
|
22
|
+
ast[:initializer] = initializer.ast.first \
|
23
|
+
unless initializer.text_value.empty?
|
33
24
|
|
34
25
|
ast
|
35
26
|
end
|
@@ -42,20 +33,10 @@ module Kauri
|
|
42
33
|
tokens = []
|
43
34
|
|
44
35
|
tokens.concat(pattern.tokens)
|
45
|
-
|
46
|
-
unless ws1.text_value.empty?
|
47
|
-
tokens.concat(ws1.tokens)
|
48
|
-
end
|
49
|
-
|
36
|
+
tokens.concat(ws1.tokens) unless ws1.text_value.empty?
|
50
37
|
tokens.concat(type_annotation.tokens)
|
51
|
-
|
52
|
-
unless
|
53
|
-
tokens.concat(ws2.tokens)
|
54
|
-
end
|
55
|
-
|
56
|
-
unless initializer.text_value.empty?
|
57
|
-
tokens.concat(initializer.tokens)
|
58
|
-
end
|
38
|
+
tokens.concat(ws2.tokens) unless ws2.text_value.empty?
|
39
|
+
tokens.concat(initializer.tokens) unless initializer.text_value.empty?
|
59
40
|
|
60
41
|
tokens
|
61
42
|
end
|
@@ -65,10 +46,8 @@ module Kauri
|
|
65
46
|
|
66
47
|
ast[:pattern] = pattern.ast.first
|
67
48
|
ast[:pattern][:type] = type_annotation.ast.first
|
68
|
-
|
69
|
-
|
70
|
-
ast[:initializer] = initializer.ast.first
|
71
|
-
end
|
49
|
+
ast[:initializer] = initializer.ast.first \
|
50
|
+
unless initializer.text_value.empty?
|
72
51
|
|
73
52
|
ast
|
74
53
|
end
|
@@ -90,30 +69,19 @@ module Kauri
|
|
90
69
|
rule pattern_initializer_list
|
91
70
|
head:pattern_initializer_list_head? ws:_ tail:pattern_initializer {
|
92
71
|
def tokens
|
93
|
-
|
94
72
|
tokens = []
|
95
73
|
|
96
|
-
unless head.text_value.empty?
|
97
|
-
|
98
|
-
end
|
99
|
-
|
100
|
-
unless ws.text_value.empty?
|
101
|
-
tokens.concat(ws.tokens)
|
102
|
-
end
|
103
|
-
|
74
|
+
tokens.concat(head.tokens) unless head.text_value.empty?
|
75
|
+
tokens.concat(ws.tokens) unless ws.text_value.empty?
|
104
76
|
tokens.concat(tail.tokens)
|
105
77
|
|
106
78
|
tokens
|
107
79
|
end
|
108
80
|
|
109
81
|
def ast
|
110
|
-
|
111
82
|
ast = []
|
112
83
|
|
113
|
-
unless head.text_value.empty?
|
114
|
-
ast.concat(head.ast)
|
115
|
-
end
|
116
|
-
|
84
|
+
ast.concat(head.ast) unless head.text_value.empty?
|
117
85
|
ast.push(tail.ast)
|
118
86
|
|
119
87
|
ast
|
@@ -124,32 +92,19 @@ module Kauri
|
|
124
92
|
rule pattern_initializer_list_head
|
125
93
|
(pattern_initializer:pattern_initializer ws1:_ ',' ws2:_)+ {
|
126
94
|
def tokens
|
127
|
-
|
128
95
|
tokens = []
|
129
96
|
|
130
97
|
elements.each { |e|
|
131
|
-
|
132
98
|
tokens.concat(e.pattern_initializer.tokens)
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
end
|
137
|
-
|
138
|
-
tokens.push({
|
139
|
-
type: 'T_COMMA',
|
140
|
-
value: ','
|
141
|
-
})
|
142
|
-
|
143
|
-
unless e.ws2.text_value.empty?
|
144
|
-
tokens.concat(e.ws2.tokens)
|
145
|
-
end
|
99
|
+
tokens.concat(e.ws1.tokens) unless e.ws1.text_value.empty?
|
100
|
+
tokens.push(T_COMMA)
|
101
|
+
tokens.concat(e.ws2.tokens) unless e.ws2.text_value.empty?
|
146
102
|
}
|
147
103
|
|
148
104
|
tokens
|
149
105
|
end
|
150
106
|
|
151
107
|
def ast
|
152
|
-
|
153
108
|
ast = []
|
154
109
|
|
155
110
|
elements.each { |e|
|
@@ -166,15 +121,8 @@ module Kauri
|
|
166
121
|
def tokens
|
167
122
|
tokens = []
|
168
123
|
|
169
|
-
tokens.push(
|
170
|
-
|
171
|
-
value: '='
|
172
|
-
})
|
173
|
-
|
174
|
-
unless ws.text_value.empty?
|
175
|
-
tokens.concat(ws.tokens)
|
176
|
-
end
|
177
|
-
|
124
|
+
tokens.push(T_OPERATOR('='))
|
125
|
+
tokens.concat(ws.tokens) unless ws.text_value.empty?
|
178
126
|
tokens.concat(expression.tokens)
|
179
127
|
|
180
128
|
tokens
|