public void generate()

in antlr-based-bootstrap/peg/Generator.java [87:151]


    public void generate() throws IOException {
        {
            for (String className : ruleParserClasses.values()) {
                TreeMap<String, Tree> map = new TreeMap<String, Tree>();
                for (String ruleName : ruleMap.keySet()) {
                    if (className.equals(ruleParserClasses.get(ruleName))) {
                        map.put(ruleName, ruleMap.get(ruleName));
                    }
                }
                File parserFile = new File(rootPath + File.separatorChar + className.replace('.', File.separatorChar) + ".java");
                parserFile.getParentFile().mkdirs();
                out = new PrintWriter(new FileOutputStream(parserFile));
                try {
                    generateParser(className, map);
                } finally {
                    out.close();
                }
            }
        }
        {
            String className = getAttribute(treeRoot, "elementTypeHolderClass", "generated.ParserTypes");
            File parserFile = new File(rootPath+File.separatorChar +className.replace('.', File.separatorChar)+".java");
            parserFile.getParentFile().mkdirs();
            out = new PrintWriter(new FileOutputStream(parserFile));
            try {
                generateElementTypesHolder(className);
            }
            finally {
                out.close();
            }
        }
        Map<String, String> infClasses = new HashMap<String, String>();
        GraphHelper graphHelper = new GraphHelper(ruleMap);
        for (String ruleName : ruleMap.keySet()) {
            Tree rule = ruleMap.get(ruleName);
            if (Rule.isPrivate(rule)) continue;
            String psiPackage = getAttribute(treeRoot, "psiPackage", "generated.psi");
            String psiClass = psiPackage +"."+getRulePsiClassName(rule, ruleName, true);
            infClasses.put(ruleName, psiClass);
            File psiFile = new File(rootPath + File.separatorChar + psiClass.replace('.', File.separatorChar) + ".java");
            psiFile.getParentFile().mkdirs();
            out = new PrintWriter(new FileOutputStream(psiFile));
            try {
                generatePsiIntf(rule, psiClass, getSuperClassName(rule, true, psiPackage, ""), graphHelper);
            } finally {
                out.close();
            }
        }
        for (String ruleName : ruleMap.keySet()) {
            Tree rule = ruleMap.get(ruleName);
            if (Rule.isPrivate(rule)) continue;
            String psiPackage = getAttribute(treeRoot, "psiImplPackage", "generated.psi.impl");
            String suffix = getAttribute(treeRoot, "psiImplClassSuffix", "Impl");
            String psiClass = psiPackage +"."+getRulePsiClassName(rule, ruleName, true) + suffix;
            File psiFile = new File(rootPath + File.separatorChar + psiClass.replace('.', File.separatorChar) + ".java");
            psiFile.getParentFile().mkdirs();
            out = new PrintWriter(new FileOutputStream(psiFile));
            try {
                generatePsiImpl(rule, psiClass, infClasses.get(ruleName), getSuperClassName(rule, false, psiPackage, suffix), graphHelper);
            } finally {
                out.close();
            }
        }

    }