@@ -38,7 +38,7 @@ def self.parse(tokens)
38
38
select_node . distinct = true
39
39
end
40
40
41
- select_node . select = self . parse_select_clause ( tokens )
41
+ select_node . select = parse_list ( tokens , SQLTree :: Node :: SelectDeclaration )
42
42
select_node . from = self . parse_from_clause ( tokens ) if SQLTree ::Token ::FROM === tokens . peek
43
43
select_node . where = self . parse_where_clause ( tokens ) if SQLTree ::Token ::WHERE === tokens . peek
44
44
if SQLTree ::Token ::GROUP === tokens . peek
@@ -49,23 +49,9 @@ def self.parse(tokens)
49
49
return select_node
50
50
end
51
51
52
- def self . parse_select_clause ( tokens )
53
- expressions = [ SQLTree ::Node ::SelectDeclaration . parse ( tokens ) ]
54
- while SQLTree ::Token ::COMMA === tokens . peek
55
- tokens . consume ( SQLTree ::Token ::COMMA )
56
- expressions << SQLTree ::Node ::SelectDeclaration . parse ( tokens )
57
- end
58
- return expressions
59
- end
60
-
61
52
def self . parse_from_clause ( tokens )
62
53
tokens . consume ( SQLTree ::Token ::FROM )
63
- sources = [ SQLTree ::Node ::Source . parse ( tokens ) ]
64
- while SQLTree ::Token ::COMMA === tokens . peek
65
- tokens . consume ( SQLTree ::Token ::COMMA )
66
- sources << SQLTree ::Node ::Source . parse ( tokens )
67
- end
68
- return sources
54
+ parse_list ( tokens , SQLTree ::Node ::Source )
69
55
end
70
56
71
57
def self . parse_where_clause ( tokens )
@@ -74,14 +60,8 @@ def self.parse_where_clause(tokens)
74
60
end
75
61
76
62
def self . parse_group_clause ( tokens )
77
- tokens . consume ( SQLTree ::Token ::GROUP )
78
- tokens . consume ( SQLTree ::Token ::BY )
79
- exprs = [ SQLTree ::Node ::Expression . parse ( tokens ) ]
80
- while SQLTree ::Token ::COMMA === tokens . peek
81
- tokens . consume ( SQLTree ::Token ::COMMA )
82
- exprs << SQLTree ::Node ::Expression . parse ( tokens )
83
- end
84
- return exprs
63
+ tokens . consume ( SQLTree ::Token ::GROUP , SQLTree ::Token ::BY )
64
+ parse_list ( tokens )
85
65
end
86
66
87
67
def self . parse_having_clause ( tokens )
@@ -90,14 +70,8 @@ def self.parse_having_clause(tokens)
90
70
end
91
71
92
72
def self . parse_order_clause ( tokens )
93
- tokens . consume ( SQLTree ::Token ::ORDER )
94
- tokens . consume ( SQLTree ::Token ::BY )
95
- exprs = [ SQLTree ::Node ::Ordering . parse ( tokens ) ]
96
- while SQLTree ::Token ::COMMA === tokens . peek
97
- tokens . consume ( SQLTree ::Token ::COMMA )
98
- exprs << SQLTree ::Node ::Ordering . parse ( tokens )
99
- end
100
- return exprs
73
+ tokens . consume ( SQLTree ::Token ::ORDER , SQLTree ::Token ::BY )
74
+ parse_list ( tokens , SQLTree ::Node ::Ordering )
101
75
end
102
76
103
77
def self . parse_limit_clause ( tokens )
0 commit comments