use of org.antlr.v4.codegen.CodeGenPipeline in project antlr4 by tunnelvisionlabs.
the class Tool method processNonCombinedGrammar.
public void processNonCombinedGrammar(Grammar g, boolean gencode) {
if (g.ast == null || g.ast.hasErrors)
return;
if (internalOption_PrintGrammarTree)
System.out.println(g.ast.toStringTree());
boolean ruleFail = checkForRuleIssues(g);
if (ruleFail)
return;
int prevErrors = errMgr.getNumErrors();
// MAKE SURE GRAMMAR IS SEMANTICALLY CORRECT (FILL IN GRAMMAR OBJECT)
SemanticPipeline sem = new SemanticPipeline(g);
sem.process();
if (errMgr.getNumErrors() > prevErrors)
return;
// BUILD ATN FROM AST
ATNFactory factory;
if (g.isLexer())
factory = new LexerATNFactory((LexerGrammar) g);
else
factory = new ParserATNFactory(g);
g.atn = factory.createATN();
if (generate_ATN_dot)
generateATNs(g);
if (g.tool.getNumErrors() == 0)
generateInterpreterData(g);
// PERFORM GRAMMAR ANALYSIS ON ATN: BUILD DECISION DFAs
AnalysisPipeline anal = new AnalysisPipeline(g);
anal.process();
if (g.tool.getNumErrors() > prevErrors)
return;
// GENERATE CODE
if (gencode) {
CodeGenPipeline gen = new CodeGenPipeline(g);
gen.process();
}
}
use of org.antlr.v4.codegen.CodeGenPipeline in project antlr4 by antlr.
the class Tool method processNonCombinedGrammar.
public void processNonCombinedGrammar(Grammar g, boolean gencode) {
if (g.ast == null || g.ast.hasErrors)
return;
if (internalOption_PrintGrammarTree)
System.out.println(g.ast.toStringTree());
boolean ruleFail = checkForRuleIssues(g);
if (ruleFail)
return;
int prevErrors = errMgr.getNumErrors();
// MAKE SURE GRAMMAR IS SEMANTICALLY CORRECT (FILL IN GRAMMAR OBJECT)
SemanticPipeline sem = new SemanticPipeline(g);
sem.process();
String language = g.getOptionString("language");
if (!CodeGenerator.targetExists(language)) {
errMgr.toolError(ErrorType.CANNOT_CREATE_TARGET_GENERATOR, language);
return;
}
if (errMgr.getNumErrors() > prevErrors)
return;
// BUILD ATN FROM AST
ATNFactory factory;
if (g.isLexer())
factory = new LexerATNFactory((LexerGrammar) g);
else
factory = new ParserATNFactory(g);
g.atn = factory.createATN();
if (generate_ATN_dot)
generateATNs(g);
if (gencode && g.tool.getNumErrors() == 0)
generateInterpreterData(g);
// PERFORM GRAMMAR ANALYSIS ON ATN: BUILD DECISION DFAs
AnalysisPipeline anal = new AnalysisPipeline(g);
anal.process();
if (g.tool.getNumErrors() > prevErrors)
return;
// GENERATE CODE
if (gencode) {
CodeGenPipeline gen = new CodeGenPipeline(g);
gen.process();
}
}
use of org.antlr.v4.codegen.CodeGenPipeline in project inmemantlr by julianthome.
the class InmemantlrTool method processNonCombinedGrammar.
/**
* this method is taken from the superclass
* @param g grammar to process
* @param gencode flag to switch on codegeneration
*/
public void processNonCombinedGrammar(Grammar g, boolean gencode) {
if (g.ast == null || g.ast.hasErrors)
return;
if (internalOption_PrintGrammarTree)
System.out.println(g.ast.toStringTree());
boolean ruleFail = checkForRuleIssues(g);
if (ruleFail)
return;
int prevErrors = errMgr.getNumErrors();
// MAKE SURE GRAMMAR IS SEMANTICALLY CORRECT (FILL IN GRAMMAR OBJECT)
SemanticPipeline sem = new SemanticPipeline(g);
sem.process();
String language = g.getOptionString("language");
if (!CodeGenerator.targetExists(language)) {
errMgr.toolError(ErrorType.CANNOT_CREATE_TARGET_GENERATOR, language);
return;
}
if (errMgr.getNumErrors() > prevErrors)
return;
// BUILD ATN FROM AST
ATNFactory factory;
if (g.isLexer())
factory = new LexerATNFactory((LexerGrammar) g);
else
factory = new ParserATNFactory(g);
g.atn = factory.createATN();
if (generate_ATN_dot)
generateATNs(g);
// if ( g.tool.getNumErrors()==0 ) generateInterpreterData(g);
// PERFORM GRAMMAR ANALYSIS ON ATN: BUILD DECISION DFAs
AnalysisPipeline anal = new AnalysisPipeline(g);
anal.process();
if (g.tool.getNumErrors() > prevErrors)
return;
// GENERATE CODE
if (gencode) {
CodeGenPipeline gen = new CodeGenPipeline(g);
gen.process();
}
}
Aggregations