public void writeBaseListener(ST outputFileST, boolean header) { Target target = getTarget(); if (target == null) { throw new UnsupportedOperationException("Cannot generate code without a target."); } target.genFile(g, outputFileST, getBaseListenerFileName(header)); }
public AltLabelStructDecl(OutputModelFactory factory, Rule r, String label) { super(factory, r); this.name = // override name set in super to the label ctx factory.getTarget().getAltLabelContextStructName(label); derivedFromName = label; }
public String getImplicitTokenLabel(String tokenName) { ST st = getTemplates().getInstanceOf("ImplicitTokenLabel"); int ttype = getCodeGenerator().g.getTokenType(tokenName); if ( tokenName.startsWith("'") ) { return "s"+ttype; } String text = getTokenTypeAsTargetLabel(getCodeGenerator().g, ttype); st.add("tokenName", text); return st.render(); }
public String getElementName(String name) { if (".".equals(name)) { return "_wild"; } if ( getCodeGenerator().g.getRule(name)!=null ) return name; int ttype = getCodeGenerator().g.getTokenType(name); if ( ttype==Token.INVALID_TYPE ) return name; return getTokenTypeAsTargetLabel(getCodeGenerator().g, ttype); }
public String getElementListName(String name) { ST st = getTemplates().getInstanceOf("ElementListName"); st.add("elemName", getElementName(name)); return st.render(); }
public void defineImplicitLabel(GrammarAST ast, LabeledOp op) { Decl d; if ( ast.getType()==ANTLRParser.SET || ast.getType()==ANTLRParser.WILDCARD ) { String implLabel = gen.getTarget().getImplicitSetLabel(String.valueOf(ast.token.getTokenIndex())); d = getTokenLabelDecl(implLabel); ((TokenDecl)d).isImplicit = true; } else if ( ast.getType()==ANTLRParser.RULE_REF ) { // a rule reference? Rule r = g.getRule(ast.getText()); String implLabel = gen.getTarget().getImplicitRuleLabel(ast.getText()); String ctxName = gen.getTarget().getRuleFunctionContextStructName(r); d = new RuleContextDecl(this, implLabel, ctxName); ((RuleContextDecl)d).isImplicit = true; } else { String implLabel = gen.getTarget().getImplicitTokenLabel(ast.getText()); d = getTokenLabelDecl(implLabel); ((TokenDecl)d).isImplicit = true; } op.getLabels().add(d); // all labels must be in scope struct in case we exec action out of context getCurrentRuleFunction().addContextDecl(ast.getAltLabel(), d); }
List<GrammarAST> idNodes = g.ast.getNodesWithType(idTypes); for (GrammarAST idNode : idNodes) { if ( target.grammarSymbolCausesIssueInGeneratedCode(idNode) ) { g.tool.errMgr.grammarError(ErrorType.USE_OF_BAD_WORD, g.fileName, idNode.getToken(), if (target.needsHeader()) { ST lexer = gen.generateLexer(true); // Header file if needed. if (g.tool.errMgr.getNumErrors() == errorCount) { if (target.needsHeader()) { ST parser = gen.generateParser(true); if (g.tool.errMgr.getNumErrors() == errorCount) { if (target.needsHeader()) { ST listener = gen.generateListener(true); if (g.tool.errMgr.getNumErrors() == errorCount) { if (target.needsHeader()) { ST baseListener = gen.generateBaseListener(true); if (g.tool.errMgr.getNumErrors() == errorCount) { if (target.wantsBaseListener()) { ST baseListener = gen.generateBaseListener(false); if ( g.tool.errMgr.getNumErrors()==errorCount ) { if (target.needsHeader()) { ST visitor = gen.generateVisitor(true); if (g.tool.errMgr.getNumErrors() == errorCount) {
ctxName = factory.getTarget().getRuleFunctionContextStructName(r); if ( labelAST.parent.getType() == ANTLRParser.PLUS_ASSIGN ) { factory.defineImplicitLabel(ast, this); String listLabel = factory.getTarget().getListLabel(label); RuleContextListDecl l = new RuleContextListDecl(factory, listLabel, ctxName); rf.addContextDecl(ast.getAltLabel(), l); String label = factory.getTarget().getImplicitRuleLabel(ast.getText()); RuleContextDecl d = new RuleContextDecl(factory,label,ctxName); labels.add(d);
idNodes.stream() .filter(idNode -> cgen.getTarget() .grammarSymbolCausesIssueInGeneratedCode(idNode)) .forEach(idNode -> g.tool.errMgr.grammarError(ErrorType.USE_OF_BAD_WORD, g.fileName, idNode.getToken(), if (cgen.getTarget().wantsBaseListener()) { baseListener = cgen.generateBaseListener(); if (cgen.getTarget().wantsBaseVisitor()) { baseVisitor = cgen.generateBaseVisitor();
protected void genFile(Grammar g, ST outputFileST, String fileName) { getCodeGenerator().write(outputFileST, fileName); }
public SerializedATN(OutputModelFactory factory, ATN atn, List<String> ruleNames) { super(factory); IntegerList data = ATNSerializer.getSerialized(atn, ruleNames); serialized = new ArrayList<String>(data.size()); for (int c : data.toArray()) { String encoded = factory.getTarget().encodeIntAsCharEscape(c == -1 ? Character.MAX_VALUE : c); serialized.add(encoded); } // System.out.println(ATNSerializer.getDecoded(factory.getGrammar(), atn)); }
public String getRuleLabel(String x) { if ( node.resolver.resolvesToLabel(x, node) ) return x; return factory.getTarget().getImplicitRuleLabel(x); }
public void defineImplicitLabel(GrammarAST ast, LabeledOp op) { Decl d; if ( ast.getType()==ANTLRParser.SET || ast.getType()==ANTLRParser.WILDCARD ) { String implLabel = gen.getTarget().getImplicitSetLabel(String.valueOf(ast.token.getTokenIndex())); d = getTokenLabelDecl(implLabel); ((TokenDecl)d).isImplicit = true; } else if ( ast.getType()==ANTLRParser.RULE_REF ) { // a rule reference? Rule r = g.getRule(ast.getText()); String implLabel = gen.getTarget().getImplicitRuleLabel(ast.getText()); String ctxName = gen.getTarget().getRuleFunctionContextStructName(r); d = new RuleContextDecl(this, implLabel, ctxName); ((RuleContextDecl)d).isImplicit = true; } else { String implLabel = gen.getTarget().getImplicitTokenLabel(ast.getText()); d = getTokenLabelDecl(implLabel); ((TokenDecl)d).isImplicit = true; } op.getLabels().add(d); // all labels must be in scope struct in case we exec action out of context getCurrentRuleFunction().addContextDecl(ast.getAltLabel(), d); }
List<GrammarAST> idNodes = g.ast.getNodesWithType(idTypes); for (GrammarAST idNode : idNodes) { if ( gen.getTarget().grammarSymbolCausesIssueInGeneratedCode(idNode) ) { g.tool.errMgr.grammarError(ErrorType.USE_OF_BAD_WORD, g.fileName, idNode.getToken(), if (gen.getTarget().needsHeader()) { ST lexer = gen.generateLexer(true); // Header file if needed. if (g.tool.errMgr.getNumErrors() == errorCount) { if (gen.getTarget().needsHeader()) { ST parser = gen.generateParser(true); if (g.tool.errMgr.getNumErrors() == errorCount) { if (gen.getTarget().needsHeader()) { ST listener = gen.generateListener(true); if (g.tool.errMgr.getNumErrors() == errorCount) { if (gen.getTarget().needsHeader()) { ST baseListener = gen.generateBaseListener(true); if (g.tool.errMgr.getNumErrors() == errorCount) { if (gen.getTarget().wantsBaseListener()) { ST baseListener = gen.generateBaseListener(false); if ( g.tool.errMgr.getNumErrors()==errorCount ) { if (gen.getTarget().needsHeader()) { ST visitor = gen.generateVisitor(true); if (g.tool.errMgr.getNumErrors() == errorCount) {
CodeGenerator gen = factory.getGenerator(); Rule r = factory.getGrammar().getRule(name); ctxName = gen.getTarget().getRuleFunctionContextStructName(r); if ( labelAST.parent.getType() == ANTLRParser.PLUS_ASSIGN ) { factory.defineImplicitLabel(ast, this); String listLabel = gen.getTarget().getListLabel(label); RuleContextListDecl l = new RuleContextListDecl(factory, listLabel, ctxName); rf.addContextDecl(ast.getAltLabel(), l); String label = gen.getTarget().getImplicitRuleLabel(ast.getText()); RuleContextDecl d = new RuleContextDecl(factory,label,ctxName); labels.add(d);
List<GrammarAST> idNodes = g.ast.getNodesWithType(idTypes); for (GrammarAST idNode : idNodes) { if ( gen.getTarget().grammarSymbolCausesIssueInGeneratedCode(idNode) ) { g.tool.errMgr.grammarError(ErrorType.USE_OF_BAD_WORD, g.fileName, idNode.getToken(), gen.writeListener(listener); if (gen.getTarget().wantsBaseListener()) { ST baseListener = gen.generateBaseListener(); if (g.tool.errMgr.getNumErrors() == errorCount) { gen.writeVisitor(visitor); if (gen.getTarget().wantsBaseVisitor()) { ST baseVisitor = gen.generateBaseVisitor(); if (g.tool.errMgr.getNumErrors() == errorCount) {
public String getElementListName(String name) { ST st = getTemplates().getInstanceOf("ElementListName"); st.add("elemName", getElementName(name)); return st.render(); }
public String getElementName(String name) { if (".".equals(name)) { return "_wild"; } if ( getCodeGenerator().g.getRule(name)!=null ) return name; int ttype = getCodeGenerator().g.getTokenType(name); if ( ttype==Token.INVALID_TYPE ) return name; return getTokenTypeAsTargetLabel(getCodeGenerator().g, ttype); }
protected void genListenerFile(Grammar g, ST outputFileST) { String fileName = getCodeGenerator().getListenerFileName(); getCodeGenerator().write(outputFileST, fileName); }
public SerializedATN(OutputModelFactory factory, ATN atn) { super(factory); IntegerList data = ATNSerializer.getSerialized(atn); serialized = new ArrayList<String>(data.size()); for (int c : data.toArray()) { String encoded = factory.getGenerator().getTarget().encodeIntAsCharEscape(c == -1 ? Character.MAX_VALUE : c); serialized.add(encoded); } // System.out.println(ATNSerializer.getDecoded(factory.getGrammar(), atn)); }