com.greenpepper.shaded.antlr.DefaultJavaCodeGeneratorPrintWriterManager Maven / Gradle / Ivy
package antlr;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;
public class DefaultJavaCodeGeneratorPrintWriterManager implements JavaCodeGeneratorPrintWriterManager {
private Grammar grammar;
private PrintWriterWithSMAP smapOutput;
private PrintWriter currentOutput;
private Tool tool;
private Map sourceMaps = new HashMap();
private String currentFileName;
public PrintWriter setupOutput(Tool tool, Grammar grammar) throws IOException {
return setupOutput(tool, grammar, null);
}
public PrintWriter setupOutput(Tool tool, String fileName) throws IOException {
return setupOutput(tool, null, fileName);
}
public PrintWriter setupOutput(Tool tool, Grammar grammar, String fileName) throws IOException {
this.tool = tool;
this.grammar = grammar;
if (fileName == null)
fileName = grammar.getClassName();
smapOutput = new PrintWriterWithSMAP(tool.openOutputFile(fileName + ".java"));
currentFileName = fileName + ".java";
currentOutput = smapOutput;
return currentOutput;
}
public void startMapping(int sourceLine) {
smapOutput.startMapping(sourceLine);
}
public void startSingleSourceLineMapping(int sourceLine) {
smapOutput.startSingleSourceLineMapping(sourceLine);
}
public void endMapping() {
smapOutput.endMapping();
}
public void finishOutput() throws IOException {
currentOutput.close();
if (grammar != null) {
PrintWriter smapWriter;
smapWriter = tool.openOutputFile(grammar.getClassName() + ".smap");
String grammarFile = grammar.getFilename();
grammarFile = grammarFile.replace('\\', '/');
int lastSlash = grammarFile.lastIndexOf('/');
if (lastSlash != -1)
grammarFile = grammarFile.substring(lastSlash+1);
smapOutput.dump(smapWriter, grammar.getClassName(), grammarFile);
sourceMaps.put(currentFileName, smapOutput.getSourceMap());
}
currentOutput = null;
}
public Map getSourceMaps() {
return sourceMaps;
}
public int getCurrentOutputLine()
{
return smapOutput.getCurrentOutputLine();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy