String language = (String) grammar.getOption("language"); if (language != null) { CodeGenerator generator = new CodeGenerator(this, grammar, language); grammar.setCodeGenerator(generator); generator.setDebug(isDebug()); generator.setProfile(isProfile()); generator.setTrace(isTrace()); generator.genRecognizer();
labelName = generator.createUniqueLabel(refdSymbol); CommonToken label = new CommonToken(ANTLRParser.ID, labelName); if ( grammar.type != Grammar.LEXER &&
/** Generate an expression for traversing an edge. */ protected ST genLabelExpr(STGroup templates, Transition edge, int k) { Label label = edge.label; if ( label.isSemanticPredicate() ) { return genSemanticPredicateExpr(templates, edge); } if ( label.isSet() ) { return genSetExpr(templates, label.getSet(), k, true); } // must be simple label ST eST = templates.getInstanceOf("lookaheadTest"); eST.add("atom", getTokenTypeAsTargetLabel(label.getAtom())); eST.add("atomAsInt", Utils.integer(label.getAtom())); eST.add("k", Utils.integer(k)); return eST; }
public BuildDependencyGenerator(Tool tool, String grammarFileName) throws IOException { this.tool = tool; this.grammarFileName = grammarFileName; grammar = tool.getRootGrammar(grammarFileName); String language = (String) grammar.getOption("language"); generator = new CodeGenerator(tool, grammar, language); generator.loadTemplates(language); }
loadTemplates(language); if ( templates==null ) { return null; verifyActionScopesOkForTarget(actions); translateActionAttributeReferences(actions); genTokenTypeConstants(recognizerST); genTokenTypeConstants(outputFileST); genTokenTypeConstants(headerFileST); genTokenTypeNames(recognizerST); genTokenTypeNames(outputFileST); genTokenTypeNames(headerFileST); StringTemplate tokenVocabSerialization = genTokenVocabOutput(); String vocabFileName = getVocabFileName(); if ( vocabFileName!=null ) { write(tokenVocabSerialization, vocabFileName); getVocabFileName(), ioe);
String dfaOptionalBlockStateName = "dfaOptionalBlockState"; String dfaEdgeName = "dfaEdge"; if ( parentGenerator.canGenerateSwitch(s) ) { dfaStateName = "dfaStateSwitch"; dfaLoopbackStateName = "dfaLoopbackStateSwitch"; Integer vI = labels.get(j); String label = parentGenerator.getTokenTypeAsTargetLabel(vI); parentGenerator.genLabelExpr(templates,edge,k)); parentGenerator.getTemplates(), dfa); edgeST.add("predicates", predST); ST edgeST = templates.getInstanceOf(dfaEdgeName); edgeST.add("labelExpr", parentGenerator.genSemanticPredicateExpr(templates,predEdge));
code.setAttribute("elementIndex", i); if ( grammar.type!=Grammar.LEXER ) { generator.generateLocalFOLLOW(s,"set",currentRuleName,i); code.setAttribute("s", generator.genSetExpr(templates,s.getSetValue(),1,false));
edgeST = templates.getInstanceOf("cyclicDFAEdge"); StringTemplate exprST = genLabelExpr(templates,edge,1); edgeST.setAttribute("labelExpr", exprST); foundGatedPred = true; StringTemplate predST = preds.genExpr(this, getTemplates(), t.dfa); edgeST.setAttribute("predicates", predST.toString());
@Override public String getDOTString() throws Exception { DecisionDFAEngine engine = window.decisionDFAEngine; Grammar g; int adjustedColumn = getDecisionColumn(g = engine.getDiscoveredParserGrammar()); if(adjustedColumn == -1) adjustedColumn = getDecisionColumn(g = engine.getDiscoveredLexerGrammar()); if(adjustedColumn == -1) throw new Exception("No decision in the current line"); CodeGenerator generator = new CodeGenerator(new Tool(), g, (String) g.getOption("language")); DFA dfa = g.getLookaheadDFAFromPositionInFile(line, adjustedColumn); decisionNumber = dfa.getDecisionNumber(); DOTGenerator dg = new DOTGenerator(g); g.setCodeGenerator(generator); dg.setArrowheadType("none"); dg.setRankdir("LR"); // Left-to-right return dg.getDOT( dfa.startState ); }
generator.genSetExpr(templates,s.getSetValue(),1,false)); ST altcode=templates.getInstanceOf("alt"); altcode.addAggr("elements.{el,line,pos}",
loadTemplates(language); if ( templates==null ) { return null; verifyActionScopesOkForTarget(actions); translateActionAttributeReferences(actions); genTokenTypeConstants(recognizerST); genTokenTypeConstants(outputFileST); genTokenTypeConstants(headerFileST); genTokenTypeNames(recognizerST); genTokenTypeNames(outputFileST); genTokenTypeNames(headerFileST); StringTemplate tokenVocabSerialization = genTokenVocabOutput(); String vocabFileName = getVocabFileName(); if ( vocabFileName!=null ) { write(tokenVocabSerialization, vocabFileName); getVocabFileName(), ioe);
String dfaOptionalBlockStateName = "dfaOptionalBlockState"; String dfaEdgeName = "dfaEdge"; if ( parentGenerator.canGenerateSwitch(s) ) { dfaStateName = "dfaStateSwitch"; dfaLoopbackStateName = "dfaLoopbackStateSwitch"; Integer vI = labels.get(j); String label = parentGenerator.getTokenTypeAsTargetLabel(vI); parentGenerator.genLabelExpr(templates,edge,k)); parentGenerator.getTemplates(), dfa); edgeST.add("predicates", predST); ST edgeST = templates.getInstanceOf(dfaEdgeName); edgeST.add("labelExpr", parentGenerator.genSemanticPredicateExpr(templates,predEdge));
public LeftRecursiveRuleAnalyzer(TreeNodeStream input, Grammar g, String ruleName) { super(input); this.g = g; this.ruleName = ruleName; language = (String)g.getOption("language"); generator = new CodeGenerator(g.tool, g, language); generator.loadTemplates(language); loadPrecRuleTemplates(); }
if ( grammar.type!=Grammar.LEXER ) generator.generateLocalFOLLOW(s,"set",currentRuleName,i); code.add("s", generator.genSetExpr(templates,s.getSetValue(),1,false));
edgeST = templates.getInstanceOf("cyclicDFAEdge"); StringTemplate exprST = genLabelExpr(templates,edge,1); edgeST.setAttribute("labelExpr", exprST); foundGatedPred = true; StringTemplate predST = preds.genExpr(this, getTemplates(), t.dfa); edgeST.setAttribute("predicates", predST.toString());
generator.genSetExpr(templates,s.getSetValue(),1,false)); ST altcode=templates.getInstanceOf("alt"); altcode.addAggr("elements.{el,line,pos}",
loadTemplates(language); if ( templates==null ) { return null; verifyActionScopesOkForTarget(actions); translateActionAttributeReferences(actions); genTokenTypeConstants(recognizerST); genTokenTypeConstants(outputFileST); genTokenTypeConstants(headerFileST); genTokenTypeNames(recognizerST); genTokenTypeNames(outputFileST); genTokenTypeNames(headerFileST); ST tokenVocabSerialization = genTokenVocabOutput(); String vocabFileName = getVocabFileName(); if ( vocabFileName!=null ) { write(tokenVocabSerialization, vocabFileName);
String language = (String) grammar.getOption("language"); if (language != null) { CodeGenerator generator = new CodeGenerator(this, grammar, language); grammar.setCodeGenerator(generator); generator.setDebug(isDebug()); generator.setProfile(isProfile()); generator.setTrace(isTrace()); generator.genRecognizer();
String dfaOptionalBlockStateName = "dfaOptionalBlockState"; String dfaEdgeName = "dfaEdge"; if ( parentGenerator.canGenerateSwitch(s) ) { dfaStateName = "dfaStateSwitch"; dfaLoopbackStateName = "dfaLoopbackStateSwitch"; Integer vI = (Integer) labels.get(j); String label = parentGenerator.getTokenTypeAsTargetLabel(vI.intValue()); parentGenerator.genLabelExpr(templates,edge,k)); parentGenerator.getTemplates(), dfa); edgeST.setAttribute("predicates", predST); StringTemplate edgeST = templates.getInstanceOf(dfaEdgeName); edgeST.setAttribute("labelExpr", parentGenerator.genSemanticPredicateExpr(templates,predEdge));
/** Generate an expression for traversing an edge. */ protected ST genLabelExpr(STGroup templates, Transition edge, int k) { Label label = edge.label; if ( label.isSemanticPredicate() ) { return genSemanticPredicateExpr(templates, edge); } if ( label.isSet() ) { return genSetExpr(templates, label.getSet(), k, true); } // must be simple label ST eST = templates.getInstanceOf("lookaheadTest"); eST.add("atom", getTokenTypeAsTargetLabel(label.getAtom())); eST.add("atomAsInt", Utils.integer(label.getAtom())); eST.add("k", Utils.integer(k)); return eST; }