@@ -45,78 +45,130 @@ public class ParserKeywordsUtils {
45
45
46
46
// Classification follows http://www.h2database.com/html/advanced.html#keywords
47
47
public final static Object [][] ALL_RESERVED_KEYWORDS = {
48
- {"ABSENT" , RESTRICTED_JSQLPARSER }, {"ALL" , RESTRICTED_SQL2016 },
49
- {"AND" , RESTRICTED_SQL2016 }, {"ANY" , RESTRICTED_JSQLPARSER }, {"AS" , RESTRICTED_SQL2016 },
50
- {"BETWEEN" , RESTRICTED_SQL2016 }, {"BOTH" , RESTRICTED_SQL2016 },
51
- {"CASEWHEN" , RESTRICTED_ALIAS }, {"CHECK" , RESTRICTED_SQL2016 },
52
- {"CONNECT" , RESTRICTED_ALIAS }, {"CONNECT_BY_ROOT" , RESTRICTED_JSQLPARSER },
53
- {"CONSTRAINT" , RESTRICTED_SQL2016 }, {"CREATE" , RESTRICTED_ALIAS },
54
- {"CROSS" , RESTRICTED_SQL2016 }, {"CURRENT" , RESTRICTED_JSQLPARSER },
55
- {"DISTINCT" , RESTRICTED_SQL2016 }, {"DOUBLE" , RESTRICTED_ALIAS },
56
- {"ELSE" , RESTRICTED_JSQLPARSER }, {"EXCEPT" , RESTRICTED_SQL2016 },
57
- {"EXISTS" , RESTRICTED_SQL2016 }, {"FETCH" , RESTRICTED_SQL2016 },
58
- {"FINAL" , RESTRICTED_JSQLPARSER }, {"FOR" , RESTRICTED_SQL2016 },
59
- {"FORCE" , RESTRICTED_SQL2016 }, {"FOREIGN" , RESTRICTED_SQL2016 },
60
- {"FROM" , RESTRICTED_SQL2016 }, {"FULL" , RESTRICTED_SQL2016 },
61
- {"GROUP" , RESTRICTED_SQL2016 }, {"GROUPING" , RESTRICTED_ALIAS },
48
+ {"ABSENT" , RESTRICTED_JSQLPARSER },
49
+ {"ALL" , RESTRICTED_SQL2016 },
50
+ {"AND" , RESTRICTED_SQL2016 },
51
+ {"ANY" , RESTRICTED_JSQLPARSER },
52
+ {"AS" , RESTRICTED_SQL2016 },
53
+ {"BETWEEN" , RESTRICTED_SQL2016 },
54
+ {"BOTH" , RESTRICTED_SQL2016 },
55
+ {"CASEWHEN" , RESTRICTED_ALIAS },
56
+ {"CHECK" , RESTRICTED_SQL2016 },
57
+ {"CONNECT" , RESTRICTED_ALIAS },
58
+ {"CONNECT_BY_ROOT" , RESTRICTED_JSQLPARSER },
59
+ {"CONSTRAINT" , RESTRICTED_SQL2016 },
60
+ {"CREATE" , RESTRICTED_ALIAS },
61
+ {"CROSS" , RESTRICTED_SQL2016 },
62
+ {"CURRENT" , RESTRICTED_JSQLPARSER },
63
+ {"DISTINCT" , RESTRICTED_SQL2016 },
64
+ {"DOUBLE" , RESTRICTED_ALIAS },
65
+ {"ELSE" , RESTRICTED_JSQLPARSER },
66
+ {"EXCEPT" , RESTRICTED_SQL2016 },
67
+ {"EXISTS" , RESTRICTED_SQL2016 },
68
+ {"FETCH" , RESTRICTED_SQL2016 },
69
+ {"FINAL" , RESTRICTED_JSQLPARSER },
70
+ {"FOR" , RESTRICTED_SQL2016 },
71
+ {"FORCE" , RESTRICTED_SQL2016 },
72
+ {"FOREIGN" , RESTRICTED_SQL2016 },
73
+ {"FROM" , RESTRICTED_SQL2016 },
74
+ {"FULL" , RESTRICTED_SQL2016 },
75
+ {"GROUP" , RESTRICTED_SQL2016 },
76
+ {"GROUPING" , RESTRICTED_ALIAS },
62
77
{"QUALIFY" , RESTRICTED_ALIAS },
63
- {"HAVING" , RESTRICTED_SQL2016 }, {"IF" , RESTRICTED_SQL2016 }, {"IIF" , RESTRICTED_ALIAS },
64
- {"IGNORE" , RESTRICTED_ALIAS }, {"ILIKE" , RESTRICTED_SQL2016 }, {"IN" , RESTRICTED_SQL2016 },
65
- {"INNER" , RESTRICTED_SQL2016 }, {"INTERSECT" , RESTRICTED_SQL2016 },
66
- {"INTERVAL" , RESTRICTED_SQL2016 }, {"INTO" , RESTRICTED_JSQLPARSER },
67
- {"IS" , RESTRICTED_SQL2016 }, {"JOIN" , RESTRICTED_JSQLPARSER },
68
- {"LATERAL" , RESTRICTED_SQL2016 }, {"LEFT" , RESTRICTED_SQL2016 },
69
- {"LIKE" , RESTRICTED_SQL2016 }, {"LIMIT" , RESTRICTED_SQL2016 },
70
- {"MINUS" , RESTRICTED_SQL2016 }, {"NATURAL" , RESTRICTED_SQL2016 },
71
- {"NOCYCLE" , RESTRICTED_JSQLPARSER }, {"NOT" , RESTRICTED_SQL2016 },
72
- {"NULL" , RESTRICTED_SQL2016 }, {"OFFSET" , RESTRICTED_SQL2016 },
73
- {"ON" , RESTRICTED_SQL2016 }, {"ONLY" , RESTRICTED_JSQLPARSER },
74
- {"OPTIMIZE" , RESTRICTED_ALIAS }, {"OR" , RESTRICTED_SQL2016 },
75
- {"ORDER" , RESTRICTED_SQL2016 }, {"OUTER" , RESTRICTED_JSQLPARSER },
76
- {"OUTPUT" , RESTRICTED_JSQLPARSER }, {"OPTIMIZE " , RESTRICTED_JSQLPARSER },
77
- {"PIVOT" , RESTRICTED_JSQLPARSER }, {"PROCEDURE" , RESTRICTED_ALIAS },
78
- {"PUBLIC" , RESTRICTED_ALIAS }, {"RECURSIVE" , RESTRICTED_SQL2016 },
79
- {"REGEXP" , RESTRICTED_SQL2016 }, {"RETURNING" , RESTRICTED_JSQLPARSER },
80
- {"RIGHT" , RESTRICTED_SQL2016 }, {"SAMPLE" , RESTRICTED_ALIAS }, {"SEL" , RESTRICTED_ALIAS },
78
+ {"HAVING" , RESTRICTED_SQL2016 },
79
+ {"IF" , RESTRICTED_SQL2016 },
80
+ {"IIF" , RESTRICTED_ALIAS },
81
+ {"IGNORE" , RESTRICTED_ALIAS },
82
+ {"ILIKE" , RESTRICTED_SQL2016 },
83
+ {"IN" , RESTRICTED_SQL2016 },
84
+ {"INNER" , RESTRICTED_SQL2016 },
85
+ {"INTERSECT" , RESTRICTED_SQL2016 },
86
+ {"INTERVAL" , RESTRICTED_SQL2016 },
87
+ {"INTO" , RESTRICTED_JSQLPARSER },
88
+ {"IS" , RESTRICTED_SQL2016 },
89
+ {"JOIN" , RESTRICTED_JSQLPARSER },
90
+ {"LATERAL" , RESTRICTED_SQL2016 },
91
+ {"LEFT" , RESTRICTED_SQL2016 },
92
+ {"LIKE" , RESTRICTED_SQL2016 },
93
+ {"LIMIT" , RESTRICTED_SQL2016 },
94
+ {"MINUS" , RESTRICTED_SQL2016 },
95
+ {"NATURAL" , RESTRICTED_SQL2016 },
96
+ {"NOCYCLE" , RESTRICTED_JSQLPARSER },
97
+ {"NOT" , RESTRICTED_SQL2016 },
98
+ {"NULL" , RESTRICTED_SQL2016 },
99
+ {"OFFSET" , RESTRICTED_SQL2016 },
100
+ {"ON" , RESTRICTED_SQL2016 },
101
+ {"ONLY" , RESTRICTED_JSQLPARSER },
102
+ {"OPTIMIZE" , RESTRICTED_ALIAS },
103
+ {"OR" , RESTRICTED_SQL2016 },
104
+ {"ORDER" , RESTRICTED_SQL2016 },
105
+ {"OUTER" , RESTRICTED_JSQLPARSER },
106
+ {"OUTPUT" , RESTRICTED_JSQLPARSER },
107
+ {"OPTIMIZE " , RESTRICTED_JSQLPARSER },
108
+ {"PIVOT" , RESTRICTED_JSQLPARSER },
109
+ {"PROCEDURE" , RESTRICTED_ALIAS },
110
+ {"PUBLIC" , RESTRICTED_ALIAS },
111
+ {"RECURSIVE" , RESTRICTED_SQL2016 },
112
+ {"REGEXP" , RESTRICTED_SQL2016 },
113
+ {"RETURNING" , RESTRICTED_JSQLPARSER },
114
+ {"RIGHT" , RESTRICTED_SQL2016 },
115
+ {"SAMPLE" , RESTRICTED_ALIAS },
116
+ {"SEL" , RESTRICTED_ALIAS },
81
117
{"SELECT" , RESTRICTED_ALIAS },
82
- {"SEMI" , RESTRICTED_JSQLPARSER }, {"SET" , RESTRICTED_JSQLPARSER },
83
- {"SOME" , RESTRICTED_JSQLPARSER }, {"START" , RESTRICTED_JSQLPARSER },
84
- {"TABLES" , RESTRICTED_ALIAS }, {"TOP" , RESTRICTED_SQL2016 },
85
- {"TRAILING" , RESTRICTED_SQL2016 }, {"UNBOUNDED" , RESTRICTED_JSQLPARSER },
86
- {"UNION" , RESTRICTED_SQL2016 }, {"UNIQUE" , RESTRICTED_SQL2016 },
87
- {"UNPIVOT" , RESTRICTED_JSQLPARSER }, {"USE" , RESTRICTED_JSQLPARSER },
88
- {"USING" , RESTRICTED_SQL2016 }, {"SQL_CACHE" , RESTRICTED_JSQLPARSER },
89
- {"SQL_CALC_FOUND_ROWS" , RESTRICTED_JSQLPARSER }, {"SQL_NO_CACHE" , RESTRICTED_JSQLPARSER },
90
- {"STRAIGHT_JOIN" , RESTRICTED_JSQLPARSER }, {"TABLESAMPLE" , RESTRICTED_ALIAS },
118
+ {"SEMI" , RESTRICTED_JSQLPARSER },
119
+ {"SET" , RESTRICTED_JSQLPARSER },
120
+ {"SOME" , RESTRICTED_JSQLPARSER },
121
+ {"START" , RESTRICTED_JSQLPARSER },
122
+ {"TABLES" , RESTRICTED_ALIAS },
123
+ {"TOP" , RESTRICTED_SQL2016 },
124
+ {"TRAILING" , RESTRICTED_SQL2016 },
125
+ {"UNBOUNDED" , RESTRICTED_JSQLPARSER },
126
+ {"UNION" , RESTRICTED_SQL2016 },
127
+ {"UNIQUE" , RESTRICTED_SQL2016 },
128
+ {"UNPIVOT" , RESTRICTED_JSQLPARSER },
129
+ {"USE" , RESTRICTED_JSQLPARSER },
130
+ {"USING" , RESTRICTED_SQL2016 },
131
+ {"SQL_CACHE" , RESTRICTED_JSQLPARSER },
132
+ {"SQL_CALC_FOUND_ROWS" , RESTRICTED_JSQLPARSER },
133
+ {"SQL_NO_CACHE" , RESTRICTED_JSQLPARSER },
134
+ {"STRAIGHT_JOIN" , RESTRICTED_JSQLPARSER },
135
+ {"TABLESAMPLE" , RESTRICTED_ALIAS },
91
136
{"VALUE" , RESTRICTED_JSQLPARSER },
92
- {"VALUES" , RESTRICTED_SQL2016 }, {"VARYING" , RESTRICTED_JSQLPARSER },
93
- {"WHEN" , RESTRICTED_SQL2016 }, {"WHERE" , RESTRICTED_SQL2016 },
94
- {"WINDOW" , RESTRICTED_SQL2016 }, {"WITH" , RESTRICTED_SQL2016 },
95
- {"XOR" , RESTRICTED_JSQLPARSER }, {"XMLSERIALIZE" , RESTRICTED_JSQLPARSER }
137
+ {"VALUES" , RESTRICTED_SQL2016 },
138
+ {"VARYING" , RESTRICTED_JSQLPARSER },
139
+ {"WHEN" , RESTRICTED_SQL2016 },
140
+ {"WHERE" , RESTRICTED_SQL2016 },
141
+ {"WINDOW" , RESTRICTED_SQL2016 },
142
+ {"WITH" , RESTRICTED_SQL2016 },
143
+ {"XOR" , RESTRICTED_JSQLPARSER },
144
+ {"XMLSERIALIZE" , RESTRICTED_JSQLPARSER },
96
145
97
146
// add keywords from the composite token definitions:
98
147
// tk=<K_DATE_LITERAL> | tk=<K_DATETIMELITERAL> | tk=<K_STRING_FUNCTION_NAME>
99
148
// we will use the composite tokens instead, which are always hit first before the
100
149
// simple keywords
101
150
// @todo: figure out a way to remove these composite tokens, as they do more harm than
102
151
// good
103
- , {"SEL" , RESTRICTED_JSQLPARSER }, {"SELECT" , RESTRICTED_JSQLPARSER }
104
-
105
- , {"DATE" , RESTRICTED_JSQLPARSER }, {"TIME" , RESTRICTED_JSQLPARSER },
106
- {"TIMESTAMP" , RESTRICTED_JSQLPARSER }
107
-
108
- , {"YEAR" , RESTRICTED_JSQLPARSER }, {"MONTH" , RESTRICTED_JSQLPARSER },
109
- {"DAY" , RESTRICTED_JSQLPARSER }, {"HOUR" , RESTRICTED_JSQLPARSER },
110
- {"MINUTE" , RESTRICTED_JSQLPARSER }, {"SECOND" , RESTRICTED_JSQLPARSER }
111
-
112
- , {"SUBSTR" , RESTRICTED_JSQLPARSER }, {"SUBSTRING" , RESTRICTED_JSQLPARSER },
113
- {"TRIM" , RESTRICTED_JSQLPARSER }, {"POSITION" , RESTRICTED_JSQLPARSER },
114
- {"OVERLAY" , RESTRICTED_JSQLPARSER }
115
-
116
- , {"NEXTVAL" , RESTRICTED_JSQLPARSER }
152
+ {"SEL" , RESTRICTED_JSQLPARSER },
153
+ {"SELECT" , RESTRICTED_JSQLPARSER },
154
+ {"DATE" , RESTRICTED_JSQLPARSER },
155
+ {"TIME" , RESTRICTED_JSQLPARSER },
156
+ {"TIMESTAMP" , RESTRICTED_JSQLPARSER },
157
+ {"YEAR" , RESTRICTED_JSQLPARSER },
158
+ {"MONTH" , RESTRICTED_JSQLPARSER },
159
+ {"DAY" , RESTRICTED_JSQLPARSER },
160
+ {"HOUR" , RESTRICTED_JSQLPARSER },
161
+ {"MINUTE" , RESTRICTED_JSQLPARSER },
162
+ {"SECOND" , RESTRICTED_JSQLPARSER },
163
+ {"SUBSTR" , RESTRICTED_JSQLPARSER },
164
+ {"SUBSTRING" , RESTRICTED_JSQLPARSER },
165
+ {"TRIM" , RESTRICTED_JSQLPARSER },
166
+ {"POSITION" , RESTRICTED_JSQLPARSER },
167
+ {"OVERLAY" , RESTRICTED_JSQLPARSER },
168
+ {"NEXTVAL" , RESTRICTED_COLUMN },
117
169
118
170
// @todo: Object Names should not start with Hex-Prefix, we shall not find that Token
119
- , {"0x" , RESTRICTED_JSQLPARSER }
171
+ {"0x" , RESTRICTED_JSQLPARSER }
120
172
};
121
173
122
174
@ SuppressWarnings ({"PMD.ExcessiveMethodLength" })
@@ -126,8 +178,7 @@ public static List<String> getReservedKeywords(int restriction) {
126
178
int value = (int ) data [1 ];
127
179
128
180
// test if bit is not set
129
- if ((value & restriction ) == restriction
130
- || (restriction & value ) == value ) {
181
+ if ((value & restriction ) == restriction || (restriction & value ) == value ) {
131
182
keywords .add ((String ) data [0 ]);
132
183
}
133
184
}
@@ -136,7 +187,6 @@ public static List<String> getReservedKeywords(int restriction) {
136
187
}
137
188
138
189
/**
139
- *
140
190
* @param args with: Grammar File, Keyword Documentation File
141
191
* @throws Exception
142
192
*/
@@ -213,9 +263,7 @@ public static void buildGrammarForRelObjectNameWithoutValue(File file) throws Ex
213
263
builder .append (" | tk=\" " ).append (keyword ).append ("\" " );
214
264
}
215
265
216
- builder .append (" )\n "
217
- + " { return tk.image; }\n "
218
- + "}" );
266
+ builder .append (" )\n " + " { return tk.image; }\n " + "}" );
219
267
220
268
replaceInFile (file , methodBlockPattern , builder .toString ());
221
269
}
@@ -244,9 +292,7 @@ public static void buildGrammarForRelObjectName(File file) throws Exception {
244
292
builder .append (" | tk=\" " ).append (keyword ).append ("\" " );
245
293
}
246
294
247
- builder .append (" )\n "
248
- + " { return tk!=null ? tk.image : result; }\n "
249
- + "}" );
295
+ builder .append (" )\n " + " { return tk!=null ? tk.image : result; }\n " + "}" );
250
296
251
297
// @todo: Needs fine-tuning, we are not replacing this part yet
252
298
// replaceInFile(file, pattern, builder.toString());
@@ -267,9 +313,7 @@ private static void replaceInFile(File file, Pattern pattern, String replacement
267
313
}
268
314
269
315
public static String rightPadding (String input , char ch , int length ) {
270
- return String
271
- .format ("%" + (-length ) + "s" , input )
272
- .replace (' ' , ch );
316
+ return String .format ("%" + (-length ) + "s" , input ).replace (' ' , ch );
273
317
}
274
318
275
319
public static void writeKeywordsDocumentationFile (File file ) throws IOException {
@@ -293,13 +337,15 @@ public static void writeKeywordsDocumentationFile(File file) throws IOException
293
337
294
338
int value = (int ) keywordDefinition [1 ];
295
339
int restriction = RESTRICTED_JSQLPARSER ;
296
- String s =
297
- ( value & restriction ) == restriction || ( restriction & value ) == value ? "Yes"
298
- : "" ;
340
+ String s = ( value & restriction ) == restriction || ( restriction & value ) == value
341
+ ? "Yes"
342
+ : "" ;
299
343
builder .append (rightPadding (s , ' ' , 11 )).append (" | " );
300
344
301
345
restriction = RESTRICTED_SQL2016 ;
302
- s = (value & restriction ) == restriction || (restriction & value ) == value ? "Yes" : "" ;
346
+ s = (value & restriction ) == restriction || (restriction & value ) == value
347
+ ? "Yes"
348
+ : "" ;
303
349
builder .append (rightPadding (s , ' ' , 9 )).append (" | " );
304
350
305
351
builder .append ("\n " );
0 commit comments