Search in sources :

Example 1 with CodeGenPipeline

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();
    }
}
Also used : AnalysisPipeline(org.antlr.v4.analysis.AnalysisPipeline) SemanticPipeline(org.antlr.v4.semantics.SemanticPipeline) ParserATNFactory(org.antlr.v4.automata.ParserATNFactory) CodeGenPipeline(org.antlr.v4.codegen.CodeGenPipeline) ParserATNFactory(org.antlr.v4.automata.ParserATNFactory) ATNFactory(org.antlr.v4.automata.ATNFactory) LexerATNFactory(org.antlr.v4.automata.LexerATNFactory) LexerATNFactory(org.antlr.v4.automata.LexerATNFactory)

Example 2 with CodeGenPipeline

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();
    }
}
Also used : AnalysisPipeline(org.antlr.v4.analysis.AnalysisPipeline) SemanticPipeline(org.antlr.v4.semantics.SemanticPipeline) ParserATNFactory(org.antlr.v4.automata.ParserATNFactory) CodeGenPipeline(org.antlr.v4.codegen.CodeGenPipeline) ParserATNFactory(org.antlr.v4.automata.ParserATNFactory) ATNFactory(org.antlr.v4.automata.ATNFactory) LexerATNFactory(org.antlr.v4.automata.LexerATNFactory) LexerATNFactory(org.antlr.v4.automata.LexerATNFactory)

Example 3 with CodeGenPipeline

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();
    }
}
Also used : AnalysisPipeline(org.antlr.v4.analysis.AnalysisPipeline) SemanticPipeline(org.antlr.v4.semantics.SemanticPipeline) ParserATNFactory(org.antlr.v4.automata.ParserATNFactory) StringCodeGenPipeline(org.snt.inmemantlr.comp.StringCodeGenPipeline) CodeGenPipeline(org.antlr.v4.codegen.CodeGenPipeline) ParserATNFactory(org.antlr.v4.automata.ParserATNFactory) ATNFactory(org.antlr.v4.automata.ATNFactory) LexerATNFactory(org.antlr.v4.automata.LexerATNFactory) LexerATNFactory(org.antlr.v4.automata.LexerATNFactory)

Aggregations

AnalysisPipeline (org.antlr.v4.analysis.AnalysisPipeline)3 ATNFactory (org.antlr.v4.automata.ATNFactory)3 LexerATNFactory (org.antlr.v4.automata.LexerATNFactory)3 ParserATNFactory (org.antlr.v4.automata.ParserATNFactory)3 CodeGenPipeline (org.antlr.v4.codegen.CodeGenPipeline)3 SemanticPipeline (org.antlr.v4.semantics.SemanticPipeline)3 StringCodeGenPipeline (org.snt.inmemantlr.comp.StringCodeGenPipeline)1