forked from jasder/antlr
Simplify CodeGenerator
This commit is contained in:
parent
a74da2df60
commit
90bcfec456
|
@ -116,89 +116,26 @@ public class CodeGenerator {
|
||||||
|
|
||||||
// CREATE TEMPLATES BY WALKING MODEL
|
// CREATE TEMPLATES BY WALKING MODEL
|
||||||
|
|
||||||
public ST generateModelST(Func1<OutputModelController, OutputModelObject> factoryMethod) {
|
private OutputModelController createController() {
|
||||||
OutputModelFactory factory = new ParserFactory(this);
|
OutputModelFactory factory = new ParserFactory(this);
|
||||||
|
|
||||||
// CREATE OUTPUT MODEL FROM GRAMMAR OBJ AND AST WITHIN RULES
|
|
||||||
OutputModelController controller = new OutputModelController(factory);
|
OutputModelController controller = new OutputModelController(factory);
|
||||||
factory.setController(controller);
|
factory.setController(controller);
|
||||||
|
return controller;
|
||||||
|
}
|
||||||
|
|
||||||
OutputModelObject outputModel = factoryMethod.exec(controller);
|
private ST walk(OutputModelObject outputModel) {
|
||||||
OutputModelWalker walker = new OutputModelWalker(tool, templates);
|
OutputModelWalker walker = new OutputModelWalker(tool, templates);
|
||||||
return walker.walk(outputModel);
|
return walker.walk(outputModel);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ST generateLexer() {
|
public ST generateLexer() { return walk(createController().buildLexerOutputModel()); }
|
||||||
return generateModelST(new Func1<OutputModelController, OutputModelObject>() {
|
public ST generateParser() { return walk(createController().buildParserOutputModel()); }
|
||||||
@Override
|
public ST generateListener() { return walk(createController().buildListenerOutputModel()); }
|
||||||
public OutputModelObject exec(OutputModelController controller) {
|
public ST generateBaseListener() { return walk(createController().buildBaseListenerOutputModel()); }
|
||||||
return controller.buildLexerOutputModel();
|
public ST generateParseListener() { return walk(createController().buildParseListenerOutputModel()); }
|
||||||
}
|
public ST generateBaseParseListener() { return walk(createController().buildBaseParseListenerOutputModel()); }
|
||||||
});
|
public ST generateVisitor() { return walk(createController().buildVisitorOutputModel()); }
|
||||||
}
|
public ST generateBaseVisitor() { return walk(createController().buildBaseVisitorOutputModel()); }
|
||||||
|
|
||||||
public ST generateParser() {
|
|
||||||
return generateModelST(new Func1<OutputModelController, OutputModelObject>() {
|
|
||||||
@Override
|
|
||||||
public OutputModelObject exec(OutputModelController controller) {
|
|
||||||
return controller.buildParserOutputModel();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public ST generateListener() {
|
|
||||||
return generateModelST(new Func1<OutputModelController, OutputModelObject>() {
|
|
||||||
@Override
|
|
||||||
public OutputModelObject exec(OutputModelController controller) {
|
|
||||||
return controller.buildListenerOutputModel();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public ST generateBaseListener() {
|
|
||||||
return generateModelST(new Func1<OutputModelController, OutputModelObject>() {
|
|
||||||
@Override
|
|
||||||
public OutputModelObject exec(OutputModelController controller) {
|
|
||||||
return controller.buildBaseListenerOutputModel();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public ST generateParseListener() {
|
|
||||||
return generateModelST(new Func1<OutputModelController, OutputModelObject>() {
|
|
||||||
@Override
|
|
||||||
public OutputModelObject exec(OutputModelController controller) {
|
|
||||||
return controller.buildParseListenerOutputModel();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public ST generateBaseParseListener() {
|
|
||||||
return generateModelST(new Func1<OutputModelController, OutputModelObject>() {
|
|
||||||
@Override
|
|
||||||
public OutputModelObject exec(OutputModelController controller) {
|
|
||||||
return controller.buildBaseParseListenerOutputModel();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public ST generateVisitor() {
|
|
||||||
return generateModelST(new Func1<OutputModelController, OutputModelObject>() {
|
|
||||||
@Override
|
|
||||||
public OutputModelObject exec(OutputModelController controller) {
|
|
||||||
return controller.buildVisitorOutputModel();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public ST generateBaseVisitor() {
|
|
||||||
return generateModelST(new Func1<OutputModelController, OutputModelObject>() {
|
|
||||||
@Override
|
|
||||||
public OutputModelObject exec(OutputModelController controller) {
|
|
||||||
return controller.buildBaseVisitorOutputModel();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Generate a token vocab file with all the token names/types. For example:
|
/** Generate a token vocab file with all the token names/types. For example:
|
||||||
* ID=7
|
* ID=7
|
||||||
|
|
Loading…
Reference in New Issue