Path: csiph.com!feeder.erje.net!2.us.feeder.erje.net!nntp.club.cc.cmu.edu!micro-heart-of-gold.mit.edu!bloom-beacon.mit.edu!bloom-beacon.mit.edu!panix!not-for-mail From: Popping mad Newsgroups: comp.lang.java.programmer Subject: MapBuilder Date: Mon, 28 Mar 2016 13:39:26 +0000 (UTC) Organization: PANIX Public Access Internet and UNIX, NYC Lines: 101 Message-ID: NNTP-Posting-Host: www.mrbrklyn.com Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Trace: reader1.panix.com 1459172366 20726 96.57.23.82 (28 Mar 2016 13:39:26 GMT) X-Complaints-To: abuse@panix.com NNTP-Posting-Date: Mon, 28 Mar 2016 13:39:26 +0000 (UTC) User-Agent: Pan/0.139 (Sexual Chocolate; GIT bf56508 git://git.gnome.org/pan2) Xref: csiph.com comp.lang.java.programmer:34038 Morning I'm having trouble analyzing this code because I don't see any docs for this MapBuilder class. Any idea what that is? ~~ris import org.antlr.v4.runtime.*; import java.io.*; import java.util.Arrays; import java.util.HashMap; public class ConfigTest extends BaseErrorListener { public static void main(String[] args) { System.exit(new ConfigTest().runAllTests()); } HashMap readConf(String filename) throws IOException { // Instantiate the lexer and parser generated by Config.g4 ANTLRInputStream input = new ANTLRInputStream(new FileReader(filename)); ConfigLexer lexer = new ConfigLexer(input); CommonTokenStream tokens = new CommonTokenStream(lexer); ConfigParser parser = new ConfigParser(tokens); // Call our syntaxError method when there are parse errors parser.addErrorListener(this); // Instantiate the visitor MapBuilder builder = new MapBuilder(); <<===========================HERE currentFail = false; // No parse failures yet, but if syntaxError is // called, currentFail will be set to true. // Do the parse and then visit the tree with the MapBuilder. parser.top().accept(builder); // Return the HashMap containing the configuration data. return builder.map; } final String testsDir = "tests"; ConfFileFilter confFilter = new ConfFileFilter(); int numTests; int numFails; boolean currentFail = false; int runAllTests() { numTests = numFails = 0; for(String test : listTests()) { runOneTest(test); } return report(); } String[] listTests() { String[] fs = new File(testsDir).list(confFilter); Arrays.sort(fs); for(int i = 0; i < fs.length; i++) { fs[i] = confFilter.baseName(fs[i]); } return fs; } void announce(String testName) { numTests++; System.err.println("========= #" + numTests + ": " + testName); } int report() { System.err.printf("\n!!!!!!!!! %d failures out of %d tests\n", numFails, numTests); return numFails; } void runOneTest(String testName) { announce(testName); String confFile = testsDir + File.separator + testName + ".conf"; String dataFile = testsDir + File.separator + testName + ".dat"; try { HashMap actual = readConf(confFile); System.err.println(" actual: " + actual); ObjectInputStream iis = new ObjectInputStream(new FileInputStream(dataFile)); Object expected = iis.readObject(); System.err.println("expected: " + expected); if(actual.equals(expected) && !currentFail) { System.err.println(" PASS"); } else { numFails++; System.err.println(" FAIL"); } } catch (Exception e) { numFails++; e.printStackTrace(System.err); } } @Override public void syntaxError(Recognizer recognizer, Object offendingSymbol, int line, int charPositionInLine, String msg, RecognitionException e) { currentFail = true; super.syntaxError(recognizer, offendingSymbol, line, charPositionInLine, msg, e); } }