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();
}
}
}