public byte[] getTemplateData(String templateResource, Map<String, WidInfo> widInfoMap) throws IOException { ST stTemplate = new ST(getTemplateResourceFileAsString(templateResource), '$', '$'); stTemplate.add("widInfo", widInfoMap); stTemplate.add("openbracket", "{"); stTemplate.add("closebracket", "}"); return stTemplate.render().getBytes(); }
private String executeTemplate(Primitive primitive1, Primitive primitive2, String templateName) { ST template = this.findTemplate(templateName); template.add("primitive1", primitive1); template.add("primitive2", primitive2); template.add("sameTwoPrimitives", primitive1 == primitive2); return template.render(); }
public int write(File outputFile, STErrorListener listener, String encoding) throws IOException { return write(outputFile, listener, encoding, Locale.getDefault(), STWriter.NO_WRAP); }
public STViz inspect(int lineWidth) { return inspect(impl.nativeGroup.errMgr, Locale.getDefault(), lineWidth); }
public final CodeGenTreeWalker.element_action_return element_action() throws RecognitionException { CodeGenTreeWalker.element_action_return retval = new CodeGenTreeWalker.element_action_return(); retval.start = input.LT(1); int LA47_0 = input.LA(1); if ( (LA47_0==ACTION) ) { alt47=1; if (state.backtracking>0) {state.failed=true; return retval;} NoViableAltException nvae = new NoViableAltException("", 47, 0, input); throw nvae; retval.code = templates.getInstanceOf("execAction"); retval.code.add("action", generator.translateAction(currentRuleName,act)); retval.code = templates.getInstanceOf("execForcedAction"); retval.code.add("action", generator.translateAction(currentRuleName,act2));
int ID6StartCharPos669 = getCharPositionInLine(); mID(); if (state.failed) return; ID6 = new CommonToken(input, Token.INVALID_TOKEN_TYPE, Token.DEFAULT_CHANNEL, ID6Start669, getCharIndex()-1); ID6.setLine(ID6StartLine669); ID6.setCharPositionInLine(ID6StartCharPos669); if ( !((resolveDynamicScope((ID6!=null?ID6.getText():null))!=null)) ) { if (state.backtracking>0) {state.failed=true; return;} throw new FailedPredicateException(input, "ISOLATED_DYNAMIC_SCOPE", "resolveDynamicScope($ID.text)!=null"); st.add("scope", (ID6!=null?ID6.getText():null));
retval.code = templates.getInstanceOf("rewriteTemplate"); retval.code = templates.getInstanceOf("rewriteCode"); retval.code.add("treeLevel", OUTER_REWRITE_NESTING_LEVEL); retval.code.add("rewriteBlockLevel", OUTER_REWRITE_NESTING_LEVEL); retval.code.add("referencedElementsDeep", getTokenTypesAsTargetLabels(((GrammarAST)retval.start).rewriteRefsDeep)); Set<String> tokenLabels = ST retvalST = templates.getInstanceOf("prevRuleRootRef"); ruleLabels.add(retvalST.render()); retval.code.add("referencedTokenLabels", tokenLabels); retval.code.add("referencedTokenListLabels", tokenListLabels); retval.code.add("referencedRuleLabels", ruleLabels); retval.code.add("referencedRuleListLabels", ruleListLabels); retval.code.add("referencedWildcardLabels", wildcardLabels); retval.code.add("referencedWildcardListLabels", wildcardListLabels); retval.code.add("treeLevel", OUTER_REWRITE_NESTING_LEVEL); retval.code.add("rewriteBlockLevel", OUTER_REWRITE_NESTING_LEVEL); grammar.grammarTreeToString(r,false); description = generator.target.getTargetStringLiteralFromString(description); retval.code.addAggr("alts.{pred,alt,description}", predChunks, alt,
retval.code = templates.getInstanceOf(stName); retval.code.add("rule", ruleRefName); if ( grammar.getRule(ruleRefName)==null ) r.getToken(), ruleRefName); retval.code = new ST(""); // blank; no code gen r.getToken(), ruleRefName); retval.code = new ST(""); // blank; no code gen retval.code = templates.getInstanceOf(stName); if (term.terminalOptions != null) { retval.code.add("terminalOptions",term.terminalOptions); retval.code.add("args", args); retval.code.add("elementIndex", ((CommonToken)((GrammarAST)retval.start).getToken()).getTokenIndex()); int ttype = grammar.getTokenType(tokenName); String tok = generator.getTokenTypeAsTargetLabel(ttype); retval.code.add("token", tok); if ( grammar.getTokenType(tokenName)==Label.INVALID ) ((GrammarAST)retval.start).getToken(), tokenName); retval.code = new ST(""); // blank; no code gen ST labelST = templates.getInstanceOf("prevRuleRootRef");
public final CodeGenTreeWalker.setBlock_return setBlock() throws RecognitionException { CodeGenTreeWalker.setBlock_return retval = new CodeGenTreeWalker.setBlock_return(); retval.start = input.LT(1); if ( input.LA(1)==Token.DOWN ) { match(input, Token.DOWN, null); if (state.failed) return retval; int i = ((CommonToken)s.getToken()).getTokenIndex(); if ( blockNestingLevel==RULE_BLOCK_NESTING_LEVEL ) setcode.add("elementIndex", i); setcode.add("s", generator.genSetExpr(templates,s.getSetValue(),1,false)); ST altcode=templates.getInstanceOf("alt"); altcode.addAggr("elements.{el,line,pos}", setcode, s.getLine(), s.getCharPositionInLine() + 1 ); altcode.add("altNum", 1); altcode.add("outerAlt", blockNestingLevel==RULE_BLOCK_NESTING_LEVEL); if ( !currentAltHasASTRewrite && grammar.buildAST() ) altcode.add("autoAST", true); altcode.add("treeLevel", rewriteTreeNestingLevel); retval.code = altcode;
switch ( input.LA(1) ) { case ALT: match(input, Token.UP, null); if (state.failed) return code; if ( state.backtracking==0 ) {code =templates.getInstanceOf("rewriteEmptyTemplate");} if ( id!=null && (id!=null?id.getText():null).equals("template") ) code = templates.getInstanceOf("rewriteInlineTemplate"); code = templates.getInstanceOf("rewriteExternalTemplate"); code.add("name", (id!=null?id.getText():null)); code.add("expr", chunks); code.addAggr("args.{name,value}", (arg!=null?arg.getText():null), chunks); String t = sl.substring( 1, sl.length() - 1 ); // strip quotes t = generator.target.getTargetStringLiteralFromString(t); code.add("template",t); String t = sl.substring( 2, sl.length() - 2 ); // strip double angle quotes t = generator.target.getTargetStringLiteralFromString(t); code.add("template",t); code.add("action", generator.translateAction(currentRuleName,act));
String superClass = (String)g.getOption("superClass"); outputOption = (String)g.getOption("output"); if ( superClass!=null ) recognizerST.add("superClass", superClass); if ( g.type!=Grammar.LEXER ) { Object lt = g.getOption("ASTLabelType"); if ( lt!=null ) recognizerST.add("ASTLabelType", lt); if ( lt!=null ) recognizerST.add("labelType", lt); recognizerST.add("numRules", grammar.getRules().size()); outputFileST.add("numRules", grammar.getRules().size()); headerFileST.add("numRules", grammar.getRules().size()); switch ( input.LA(1) ) { case LEXER_GRAMMAR: if (state.backtracking>0) {state.failed=true; return;} NoViableAltException nvae = new NoViableAltException("", 1, 0, input); throw nvae;
Assert.assertEquals(kombucha.getInstanceOf("isItTimeForKombucha").render(), "select hour(current_timestamp(0)) < 24 as is_time;"); assertPattern(kombucha.getInstanceOf("getById").render(), "select\r?\n" + " t.record_id\r?\n" + ", t.id\r?\n" + "and t.tenant_record_id = :tenantRecordId\r?\n" + ";"); assertPattern(kombucha.getInstanceOf("getByRecordId").render(), "select\r?\n" + " t.record_id\r?\n" + ", t.id\r?\n" + "and t.tenant_record_id = :tenantRecordId\r?\n" + ";"); assertPattern(kombucha.getInstanceOf("getRecordId").render(), "select\r?\n" + " t.record_id\r?\n" + "from kombucha t\r?\n" + "and t.tenant_record_id = :tenantRecordId\r?\n" + ";"); assertPattern(kombucha.getInstanceOf("getHistoryRecordId").render(), "select\r?\n" + " max\\(t.record_id\\)\r?\n" + "from kombucha_history t\r?\n" + "and t.tenant_record_id = :tenantRecordId\r?\n" + ";"); assertPattern(kombucha.getInstanceOf("getAll").render(), "select\r?\n" + " t.record_id\r?\n" + ", t.id\r?\n" +
if ( arg!=null ) { Token actionToken = new CommonToken(ANTLRParser.ACTION,arg); ActionTranslator translator = new ActionTranslator(this,ruleName, List<Object> chunks = translator.translateToChunks(); chunks = target.postProcessAction(chunks, actionToken); ST catST = new ST(templates, "<chunks>"); catST.add("chunks", chunks); translatedArgs.add(catST);
CommonToken labelTok = new CommonToken( ANTLRParser.ID, label ); grammar.defineTokenRefLabel( currentRuleName, labelTok, elementAST ); if ( tryUnchecked && templates.isDefined( name + "Unchecked" + suffix ) ) elementST = templates.getInstanceOf( name + "Unchecked" + suffix ); if ( elementST == null ) elementST = templates.getInstanceOf( name + suffix ); elementST.add( "label", label );
protected final ST getRuleElementST( String name, String ruleTargetName, GrammarAST elementAST, GrammarAST ast_suffix, String label ) { Rule r = grammar.getRule( currentRuleName ); String suffix = getSTSuffix(elementAST, ast_suffix, label); if ( !r.isSynPred ) { name += suffix; } // if we're building trees and there is no label, gen a label // unless we're in a synpred rule. if ( ( grammar.buildAST() || suffix.length() > 0 ) && label == null && ( r == null || !r.isSynPred ) ) { // we will need a label to do the AST or tracking, make one label = generator.createUniqueLabel( ruleTargetName ); CommonToken labelTok = new CommonToken( ANTLRParser.ID, label ); grammar.defineRuleRefLabel( currentRuleName, labelTok, elementAST ); } ST elementST = templates.getInstanceOf( name ); if ( label != null ) { elementST.add( "label", label ); } return elementST; }
public static void test3() throws IOException { String templates = "main() ::= <<\n" + "Foo: <{bar};format=\"lower\">\n" + ">>\n"; String tmpdir = System.getProperty("java.io.tmpdir"); writeFile(tmpdir, "t.stg", templates); STGroup group = new STGroupFile(tmpdir+"/"+"t.stg"); ST st = group.getInstanceOf("main"); st.inspect(); }
if ( input.LA(1)==Token.DOWN ) { match(input, Token.DOWN, null); if (state.failed) return code; while (true) { int alt56=2; int LA56_0 = input.LA(1); if ( ((LA56_0 >= ACTION && LA56_0 <= XDIGIT)) ) { alt56=1; int i = ((CommonToken)s.getToken()).getTokenIndex(); code.add("elementIndex", i); if ( grammar.type!=Grammar.LEXER ) code.add("s", generator.genSetExpr(templates,s.getSetValue(),1,false));
@Override public void configureForType(ConfigRegistry registry, Annotation annotation, Class<?> sqlObjectType) { SqlLocator locator = (type, method, config) -> { String templateName = SqlAnnotations.getAnnotationValue(method).orElseGet(method::getName); STGroup group = findStringTemplateGroup(type); if (!group.isDefined(templateName)) { throw new IllegalStateException("No StringTemplate group " + templateName + " for class " + sqlObjectType); } return templateName; }; TemplateEngine templateEngine = (templateName, ctx) -> { STGroup group = findStringTemplateGroup(sqlObjectType); ST template = group.getInstanceOf(templateName); ctx.getAttributes().forEach(template::add); return template.render(); }; registry.get(SqlObjects.class).setSqlLocator(locator); registry.get(SqlStatements.class).setTemplateEngine(templateEngine); }
public void generateBuilder(SpecModel spec, Filer filer) throws IOException { ST st = templateGroup.getInstanceOf(SOURCE_TEMPLATE_NAME); st.add("spec", spec); JavaFileObject jfo = filer.createSourceFile(spec.getFullName(), spec.getInstantiator()); try(Writer w = jfo.openWriter()) { STWriter stWriter = new AutoIndentWriter(w); st.write(stWriter); } }