@@ -198,7 +198,10 @@ public void setVerbose(boolean verbose) {
198
198
this .verbose = verbose ;
199
199
}
200
200
201
- private void testGrammars () throws Exception {
201
+ /**
202
+ * test a single grammar
203
+ */
204
+ private void testGrammar (File grammarFile ) throws Exception {
202
205
/*
203
206
* figure out class names
204
207
*/
@@ -226,35 +229,54 @@ private void testGrammars() throws Exception {
226
229
*/
227
230
final Constructor <?> lexerConstructor = lexerClass .getConstructor (CharStream .class );
228
231
final Constructor <?> parserConstructor = parserClass .getConstructor (TokenStream .class );
232
+ System .out .println ("Parsing :" + grammarFile .getAbsolutePath ());
233
+ ANTLRFileStream antlrFileStream = new ANTLRFileStream (grammarFile .getAbsolutePath (), "UTF-8" );
234
+ Lexer lexer = (Lexer ) lexerConstructor .newInstance (antlrFileStream );
235
+ final CommonTokenStream tokens = new CommonTokenStream (lexer );
236
+ if (verbose ) {
237
+ tokens .fill ();
238
+ for (final Object tok : tokens .getTokens ()) {
239
+ System .out .println (tok );
240
+ }
241
+ }
242
+ /*
243
+ * get parser
244
+ */
245
+ Parser parser = (Parser ) parserConstructor .newInstance (tokens );
246
+ parser .setErrorHandler (new BailErrorStrategy ());
247
+ final Method method = parserClass .getMethod (entryPoint );
248
+ ParserRuleContext parserRuleContext = (ParserRuleContext ) method .invoke (parser );
249
+ /*
250
+ * show the tree
251
+ */
252
+ if (showTree ) {
253
+ final String lispTree = Trees .toStringTree (parserRuleContext , parser );
254
+ System .out .println (lispTree );
255
+ }
256
+ /*
257
+ * yup
258
+ */
259
+ parser = null ;
260
+ lexer = null ;
261
+ parserRuleContext = null ;
262
+ antlrFileStream = null ;
263
+ }
264
+
265
+ private void testGrammars () throws Exception {
229
266
/*
230
267
* iterate examples
231
268
*/
232
269
final List <File > exampleFiles = FileUtil .getAllFiles (baseDir + "/" + this .exampleFiles );
233
270
if (null != exampleFiles ) {
234
271
for (final File file : exampleFiles ) {
235
- System .out .println ("Parsing :" + file .getAbsolutePath ());
236
- final Lexer lexer = (Lexer ) lexerConstructor .newInstance (new ANTLRFileStream (file .getAbsolutePath (), "UTF-8" ));
237
- final CommonTokenStream tokens = new CommonTokenStream (lexer );
238
- if (verbose ) {
239
- tokens .fill ();
240
- for (final Object tok : tokens .getTokens ()) {
241
- System .out .println (tok );
242
- }
243
- }
244
272
/*
245
- * get parser
273
+ * test grammar
246
274
*/
247
- final Parser parser = (Parser ) parserConstructor .newInstance (tokens );
248
- parser .setErrorHandler (new BailErrorStrategy ());
249
- final Method method = parserClass .getMethod (entryPoint );
250
- final ParserRuleContext parserRuleContext = (ParserRuleContext ) method .invoke (parser );
275
+ testGrammar (file );
251
276
/*
252
- * show the tree
277
+ * gc
253
278
*/
254
- if (showTree ) {
255
- final String lispTree = Trees .toStringTree (parserRuleContext );
256
- System .out .println (lispTree );
257
- }
279
+ System .gc ();
258
280
}
259
281
}
260
282
}
0 commit comments