public void init(Grammar g) { this.grammar = g; this.generator = grammar.getCodeGenerator(); this.templates = generator.getTemplates(); } public CodeGenTreeWalker() {
protected ST template(String name) { ST st = generator.getTemplates().getInstanceOf(name); chunks.add(st); return st; }
protected StringTemplate template(String name) { StringTemplate st = generator.getTemplates().getInstanceOf(name); chunks.add(st); return st; }
protected void genRecognizerHeaderFile(Tool tool, CodeGenerator generator, Grammar grammar, StringTemplate headerFileST, String extName) throws IOException { StringTemplateGroup templates = generator.getTemplates(); generator.write(headerFileST, grammar.name+extName); }
protected void genRecognizerHeaderFile(Tool tool, CodeGenerator generator, Grammar grammar, StringTemplate headerFileST, String extName) throws IOException { StringTemplateGroup templates = generator.getTemplates(); generator.write(headerFileST, grammar.name+extName); }
public final void init( Grammar g ) { this.grammar = g; this.generator = grammar.getCodeGenerator(); this.templates = generator.getTemplates(); }
protected ST template(String name) { ST st = generator.getTemplates().getInstanceOf(name); chunks.add(st); return st; }
public final void init( Grammar g ) { this.grammar = g; this.generator = grammar.getCodeGenerator(); this.templates = generator.getTemplates(); }
@Override protected void genRecognizerFile(Tool tool, CodeGenerator generator, Grammar grammar, ST outputFileST) throws IOException { if (!grammar.getGrammarIsRoot()) { Grammar rootGrammar = grammar.composite.getRootGrammar(); String actionScope = grammar.getDefaultActionScope(grammar.type); Map<String, Object> actions = rootGrammar.getActions().get(actionScope); Object rootNamespace = actions != null ? actions.get("namespace") : null; if (actions != null && rootNamespace != null) { actions = grammar.getActions().get(actionScope); if (actions == null) { actions = new HashMap<String, Object>(); grammar.getActions().put(actionScope, actions); } actions.put("namespace", rootNamespace); } } generator.getTemplates().registerRenderer(String.class, new StringRenderer(generator, this)); super.genRecognizerFile(tool, generator, grammar, outputFileST); }
@Override protected void genRecognizerFile(Tool tool, CodeGenerator generator, Grammar grammar, ST outputFileST) throws IOException { if (!grammar.getGrammarIsRoot()) { Grammar rootGrammar = grammar.composite.getRootGrammar(); String actionScope = grammar.getDefaultActionScope(grammar.type); Map<String, Object> actions = rootGrammar.getActions().get(actionScope); Object rootNamespace = actions != null ? actions.get("namespace") : null; if (actions != null && rootNamespace != null) { actions = grammar.getActions().get(actionScope); if (actions == null) { actions = new HashMap<String, Object>(); grammar.getActions().put(actionScope, actions); } actions.put("namespace", rootNamespace); } } generator.getTemplates().registerRenderer(String.class, new StringRenderer(generator, this)); super.genRecognizerFile(tool, generator, grammar, outputFileST); }
ruleST.add("buildAST", grammar.buildAST()); ST argDefST = generator.getTemplates().getInstanceOf("recRuleDefArg"); ruleST.add("precArgDef", argDefST); ST ruleArgST = generator.getTemplates().getInstanceOf("recRuleArg"); ruleST.add("argName", ruleArgST); ST setResultST = generator.getTemplates().getInstanceOf("recRuleSetResultAction"); ruleST.add("setResultAction", setResultST); ruleST.add("userRetvals", retvals); ST altST = recRuleTemplates.getInstanceOf("recRuleAlt"); ST predST = generator.getTemplates().getInstanceOf("recRuleAltPredicate"); predST.add("opPrec", precedence(alt)); predST.add("ruleName", ruleName);
/** Fix edge strings so they print out in DOT properly; * generate any gated predicates on edge too. */ protected String getEdgeLabel(Transition edge) { String label = edge.label.toString(grammar); label = Utils.replace(label,"\\", "\\\\"); label = Utils.replace(label,"\"", "\\\""); label = Utils.replace(label,"\n", "\\\\n"); label = Utils.replace(label,"\r", ""); if ( label.equals(Label.EPSILON_STR) ) { label = "e"; } State target = edge.target; if ( !edge.isSemanticPredicate() && target instanceof DFAState ) { // look for gated predicates; don't add gated to simple sempred edges SemanticContext preds = ((DFAState)target).getGatedPredicatesInNFAConfigurations(); if ( preds!=null ) { String predsStr = ""; predsStr = "&&{"+ preds.genExpr(grammar.generator, grammar.generator.getTemplates(), null).toString() +"}?"; label += predsStr; } } return label; }
/** Fix edge strings so they print out in DOT properly; * generate any gated predicates on edge too. */ protected String getEdgeLabel(Transition edge) { String label = edge.label.toString(grammar); label = Utils.replace(label,"\\", "\\\\"); label = Utils.replace(label,"\"", "\\\""); label = Utils.replace(label,"\n", "\\\\n"); label = Utils.replace(label,"\r", ""); if ( label.equals(Label.EPSILON_STR) ) { label = "e"; } State target = edge.target; if ( !edge.isSemanticPredicate() && target instanceof DFAState ) { // look for gated predicates; don't add gated to simple sempred edges SemanticContext preds = ((DFAState)target).getGatedPredicatesInNFAConfigurations(); if ( preds!=null ) { String predsStr = ""; predsStr = "&&{"+ preds.genExpr(grammar.generator, grammar.generator.getTemplates(), null).toString() +"}?"; label += predsStr; } } return label; }
public void fillRetValAssignments(ST ruleST, String srcName) { if ( retvals==null ) return; // complicated since we must be target-independent for (String name : getNamesFromArgAction(retvals.token)) { ST setRetValST = generator.getTemplates().getInstanceOf("recRuleSetReturnAction"); ST ruleNameST = recRuleTemplates.getInstanceOf(srcName); ruleNameST.add("ruleName", ruleName); setRetValST.add("src", ruleNameST); setRetValST.add("name", name); ruleST.add("userRetvalAssignments",setRetValST); } }
public void fillRetValAssignments(ST ruleST, String srcName) { if ( retvals==null ) return; // complicated since we must be target-independent for (String name : getNamesFromArgAction(retvals.token)) { ST setRetValST = generator.getTemplates().getInstanceOf("recRuleSetReturnAction"); ST ruleNameST = recRuleTemplates.getInstanceOf(srcName); ruleNameST.add("ruleName", ruleName); setRetValST.add("src", ruleNameST); setRetValST.add("name", name); ruleST.add("userRetvalAssignments",setRetValST); } }
/** Fix edge strings so they print out in DOT properly; * generate any gated predicates on edge too. */ protected String getEdgeLabel(Transition edge) { String label = edge.label.toString(grammar); label = Utils.replace(label,"\\", "\\\\"); label = Utils.replace(label,"\"", "\\\""); label = Utils.replace(label,"\n", "\\\\n"); label = Utils.replace(label,"\r", ""); if ( label.equals(Label.EPSILON_STR) ) { label = "e"; } State target = edge.target; if ( !edge.isSemanticPredicate() && target instanceof DFAState ) { // look for gated predicates; don't add gated to simple sempred edges SemanticContext preds = ((DFAState)target).getGatedPredicatesInNFAConfigurations(); if ( preds!=null ) { String predsStr; predsStr = "&&{"+ preds.genExpr(grammar.generator, grammar.generator.getTemplates(), null).render() +"}?"; label += predsStr; } } return label; }
/** Fix edge strings so they print out in DOT properly; * generate any gated predicates on edge too. */ protected String getEdgeLabel(Transition edge) { String label = edge.label.toString(grammar); label = Utils.replace(label,"\\", "\\\\"); label = Utils.replace(label,"\"", "\\\""); label = Utils.replace(label,"\n", "\\\\n"); label = Utils.replace(label,"\r", ""); if ( label.equals(Label.EPSILON_STR) ) { label = "e"; } State target = edge.target; if ( !edge.isSemanticPredicate() && target instanceof DFAState ) { // look for gated predicates; don't add gated to simple sempred edges SemanticContext preds = ((DFAState)target).getGatedPredicatesInNFAConfigurations(); if ( preds!=null ) { String predsStr; predsStr = "&&{"+ preds.genExpr(grammar.generator, grammar.generator.getTemplates(), null).render() +"}?"; label += predsStr; } } return label; }
acyclicDFAGenerator.genFixedLookaheadDecision(getTemplates(), dfa);
acyclicDFAGenerator.genFixedLookaheadDecision(getTemplates(), dfa);
acyclicDFAGenerator.genFixedLookaheadDecision(getTemplates(), dfa);