/** For use with rewrite rules, we must track all tokens matched on the * left-hand-side; so we need Lists. This is a unique list of all * token types for which the rule needs a list of tokens. This * is called from the rule template not directly by the code generator. */ public Set getAllTokenRefsInAltsWithRewrites() { String output = (String)grammar.getOption("output"); Set tokens = new HashSet(); if ( output==null || !output.equals("AST") ) { // return nothing if not generating trees; i.e., don't do for templates return tokens; } for (int i = 1; i <= numberOfAlts; i++) { if ( altsWithRewrites[i] ) { Map m = altToTokenRefMap[i]; Set s = m.keySet(); for (Iterator it = s.iterator(); it.hasNext();) { // convert token name like ID to ID, "void" to 31 String tokenName = (String) it.next(); int ttype = grammar.getTokenType(tokenName); String label = grammar.generator.getTokenTypeAsTargetLabel(ttype); tokens.add(label); } } } return tokens; }
/** For use with rewrite rules, we must track all tokens matched on the * left-hand-side; so we need Lists. This is a unique list of all * token types for which the rule needs a list of tokens. This * is called from the rule template not directly by the code generator. */ public Set getAllTokenRefsInAltsWithRewrites() { String output = (String)grammar.getOption("output"); Set tokens = new HashSet(); if ( output==null || !output.equals("AST") ) { // return nothing if not generating trees; i.e., don't do for templates return tokens; } for (int i = 1; i <= numberOfAlts; i++) { if ( altsWithRewrites[i] ) { Map m = altToTokenRefMap[i]; Set s = m.keySet(); for (Iterator it = s.iterator(); it.hasNext();) { // convert token name like ID to ID, "void" to 31 String tokenName = (String) it.next(); int ttype = grammar.getTokenType(tokenName); String label = grammar.generator.getTokenTypeAsTargetLabel(ttype); tokens.add(label); } } } return tokens; }
/** For use with rewrite rules, we must track all tokens matched on the * left-hand-side; so we need Lists. This is a unique list of all * token types for which the rule needs a list of tokens. This * is called from the rule template not directly by the code generator. */ public Set<String> getAllTokenRefsInAltsWithRewrites() { String output = (String)grammar.getOption("output"); Set<String> tokens = new HashSet<String>(); if ( output==null || !output.equals("AST") ) { // return nothing if not generating trees; i.e., don't do for templates return tokens; } //System.out.println("blk "+tree.findFirstType(ANTLRParser.BLOCK).toStringTree()); for (int i = 1; i <= numberOfAlts; i++) { if ( hasRewrite(i) ) { Map<String, List<GrammarAST>> m = altToTokenRefMap[i]; for (String tokenName : m.keySet()) { // convert token name like ID to ID, "void" to 31 int ttype = grammar.getTokenType(tokenName); String label = grammar.generator.getTokenTypeAsTargetLabel(ttype); tokens.add(label); } } } return tokens; }
/** For use with rewrite rules, we must track all tokens matched on the * left-hand-side; so we need Lists. This is a unique list of all * token types for which the rule needs a list of tokens. This * is called from the rule template not directly by the code generator. */ public Set<String> getAllTokenRefsInAltsWithRewrites() { String output = (String)grammar.getOption("output"); Set<String> tokens = new HashSet<String>(); if ( output==null || !output.equals("AST") ) { // return nothing if not generating trees; i.e., don't do for templates return tokens; } //System.out.println("blk "+tree.findFirstType(ANTLRParser.BLOCK).toStringTree()); for (int i = 1; i <= numberOfAlts; i++) { if ( hasRewrite(i) ) { Map<String, List<GrammarAST>> m = altToTokenRefMap[i]; for (String tokenName : m.keySet()) { // convert token name like ID to ID, "void" to 31 int ttype = grammar.getTokenType(tokenName); String label = grammar.generator.getTokenTypeAsTargetLabel(ttype); tokens.add(label); } } } return tokens; }
/** Convert rewrite AST lists to target labels list */ protected final List<String> getTokenTypesAsTargetLabels(Collection<GrammarAST> refs) { if ( refs == null || refs.size() == 0 ) return null; List<String> labels = new ArrayList<String>( refs.size() ); for ( GrammarAST t : refs ) { String label; if ( t.getType() == ANTLRParser.RULE_REF || t.getType() == ANTLRParser.TOKEN_REF || t.getType() == ANTLRParser.LABEL) { label = t.getText(); } else { // must be char or String literal label = generator.getTokenTypeAsTargetLabel(grammar.getTokenType(t.getText())); } labels.add( label ); } return labels; }
/** Convert rewrite AST lists to target labels list */ protected final List<String> getTokenTypesAsTargetLabels(Collection<GrammarAST> refs) { if ( refs == null || refs.size() == 0 ) return null; List<String> labels = new ArrayList<String>( refs.size() ); for ( GrammarAST t : refs ) { String label; if ( t.getType() == ANTLRParser.RULE_REF || t.getType() == ANTLRParser.TOKEN_REF || t.getType() == ANTLRParser.LABEL) { label = t.getText(); } else { // must be char or String literal label = generator.getTokenTypeAsTargetLabel(grammar.getTokenType(t.getText())); } labels.add( label ); } return labels; }
/** Convert rewrite AST lists to target labels list */ protected List<String> getTokenTypesAsTargetLabels(Set<GrammarAST> refs) { if ( refs==null || refs.size()==0 ) { return null; } List<String> labels = new ArrayList<String>(refs.size()); for (GrammarAST t : refs) { String label; if ( t.getType()==ANTLRParser.RULE_REF ) { label = t.getText(); } else if ( t.getType()==ANTLRParser.LABEL ) { label = t.getText(); } else { // must be char or string literal label = generator.getTokenTypeAsTargetLabel( grammar.getTokenType(t.getText())); } labels.add(label); } return labels; }
if ( a==b ) { eST = templates.getInstanceOf(testSTName); eST.setAttribute("atom", getTokenTypeAsTargetLabel(a)); eST.setAttribute("atomAsInt", Utils.integer(a)); eST.setAttribute("lower",getTokenTypeAsTargetLabel(a)); eST.setAttribute("lowerAsInt", Utils.integer(a)); eST.setAttribute("upper",getTokenTypeAsTargetLabel(b)); eST.setAttribute("upperAsInt", Utils.integer(b)); eST.setAttribute("rangeNumber",Utils.integer(rangeNumber));
if ( a==b ) { eST = templates.getInstanceOf(testSTName); eST.setAttribute("atom", getTokenTypeAsTargetLabel(a)); eST.setAttribute("atomAsInt", Utils.integer(a)); eST.setAttribute("lower",getTokenTypeAsTargetLabel(a)); eST.setAttribute("lowerAsInt", Utils.integer(a)); eST.setAttribute("upper",getTokenTypeAsTargetLabel(b)); eST.setAttribute("upperAsInt", Utils.integer(b)); eST.setAttribute("rangeNumber",Utils.integer(rangeNumber));
sST.add("values", getTokenTypeAsTargetLabel(i)); sST.add("valuesAsInt", Utils.integer(i)); eST.add("lower", getTokenTypeAsTargetLabel(a)); eST.add("lowerAsInt", Utils.integer(a)); eST.add("upper", getTokenTypeAsTargetLabel(b)); eST.add("upperAsInt", Utils.integer(b)); eST.add("rangeNumber", Utils.integer(rangeNumber)); if ( a==b ) { eST = templates.getInstanceOf(testSTName); eST.add("atom", getTokenTypeAsTargetLabel(a)); eST.add("atomAsInt", Utils.integer(a)); eST.add("lower", getTokenTypeAsTargetLabel(a)); eST.add("lowerAsInt", Utils.integer(a)); eST.add("upper", getTokenTypeAsTargetLabel(b)); eST.add("upperAsInt", Utils.integer(b)); eST.add("rangeNumber", Utils.integer(rangeNumber));
sST.add("values", getTokenTypeAsTargetLabel(i)); sST.add("valuesAsInt", Utils.integer(i)); eST.add("lower", getTokenTypeAsTargetLabel(a)); eST.add("lowerAsInt", Utils.integer(a)); eST.add("upper", getTokenTypeAsTargetLabel(b)); eST.add("upperAsInt", Utils.integer(b)); eST.add("rangeNumber", Utils.integer(rangeNumber)); if ( a==b ) { eST = templates.getInstanceOf(testSTName); eST.add("atom", getTokenTypeAsTargetLabel(a)); eST.add("atomAsInt", Utils.integer(a)); eST.add("lower", getTokenTypeAsTargetLabel(a)); eST.add("lowerAsInt", Utils.integer(a)); eST.add("upper", getTokenTypeAsTargetLabel(b)); eST.add("upperAsInt", Utils.integer(b)); eST.add("rangeNumber", Utils.integer(rangeNumber));
/** 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; }
/** 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; }
/** Generate an expression for traversing an edge. */ protected StringTemplate genLabelExpr(StringTemplateGroup 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 StringTemplate eST = templates.getInstanceOf("lookaheadTest"); eST.setAttribute("atom", getTokenTypeAsTargetLabel(label.getAtom())); eST.setAttribute("atomAsInt", Utils.integer(label.getAtom())); eST.setAttribute("k", Utils.integer(k)); return eST; }
/** Generate an expression for traversing an edge. */ protected StringTemplate genLabelExpr(StringTemplateGroup 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 StringTemplate eST = templates.getInstanceOf("lookaheadTest"); eST.setAttribute("atom", getTokenTypeAsTargetLabel(label.getAtom())); eST.setAttribute("atomAsInt", Utils.integer(label.getAtom())); eST.setAttribute("k", Utils.integer(k)); return eST; }
Integer vI = labels.get(j); String label = parentGenerator.getTokenTypeAsTargetLabel(vI);
Integer vI = labels.get(j); String label = parentGenerator.getTokenTypeAsTargetLabel(vI);
Integer vI = (Integer) labels.get(j); String label = parentGenerator.getTokenTypeAsTargetLabel(vI.intValue());
Integer vI = (Integer) labels.get(j); String label = parentGenerator.getTokenTypeAsTargetLabel(vI.intValue());
String tok = generator.getTokenTypeAsTargetLabel(ttype); code.setAttribute("token", tok); if ( grammar.getTokenType(tokenName)==Label.INVALID ) {