public void grammar(int grammarTokenType, String name) { try { /* switch ( grammarTokenType ) { case ANTLRParser.LEXER_GRAMMAR : out.writeByte('l'); break; case ANTLRParser.PARSER_GRAMMAR : out.writeByte('p'); break; case ANTLRParser.TREE_GRAMMAR: out.writeByte('t'); break; case ANTLRParser.COMBINED_GRAMMAR : out.writeByte('c'); break; } writeString(out, name); */ out.writeShort(g.getRules().size()); } catch (IOException ioe) { ErrorManager.error(ErrorManager.MSG_CANNOT_WRITE_FILE, filename); } }
public void grammar(int grammarTokenType, String name) { try { /* switch ( grammarTokenType ) { case ANTLRParser.LEXER_GRAMMAR : out.writeByte('l'); break; case ANTLRParser.PARSER_GRAMMAR : out.writeByte('p'); break; case ANTLRParser.TREE_GRAMMAR: out.writeByte('t'); break; case ANTLRParser.COMBINED_GRAMMAR : out.writeByte('c'); break; } writeString(out, name); */ out.writeShort(g.getRules().size()); } catch (IOException ioe) { ErrorManager.error(ErrorManager.MSG_CANNOT_WRITE_FILE, filename); } }
public void grammar(int grammarTokenType, String name) { try { /* switch ( grammarTokenType ) { case ANTLRParser.LEXER_GRAMMAR : out.writeByte('l'); break; case ANTLRParser.PARSER_GRAMMAR : out.writeByte('p'); break; case ANTLRParser.TREE_GRAMMAR: out.writeByte('t'); break; case ANTLRParser.COMBINED_GRAMMAR : out.writeByte('c'); break; } writeString(out, name); */ out.writeShort(g.getRules().size()); } catch (IOException ioe) { ErrorManager.error(ErrorManager.MSG_CANNOT_WRITE_FILE, filename); } }
public void grammar(int grammarTokenType, String name) { try { /* switch ( grammarTokenType ) { case ANTLRParser.LEXER_GRAMMAR : out.writeByte('l'); break; case ANTLRParser.PARSER_GRAMMAR : out.writeByte('p'); break; case ANTLRParser.TREE_GRAMMAR: out.writeByte('t'); break; case ANTLRParser.COMBINED_GRAMMAR : out.writeByte('c'); break; } writeString(out, name); */ out.writeShort(g.getRules().size()); } catch (IOException ioe) { ErrorManager.error(ErrorManager.MSG_CANNOT_WRITE_FILE, filename); } }
protected void finish() { List rules = new LinkedList(); rules.addAll(grammar.getRules()); int numEntryPoints = factory.build_EOFStates(rules); if ( numEntryPoints==0 ) { ErrorManager.grammarWarning(ErrorManager.MSG_NO_GRAMMAR_START_RULE, grammar, null, grammar.name); } }
@Override protected void performGrammarAnalysis(CodeGenerator generator, Grammar grammar) { super.performGrammarAnalysis(generator, grammar); for (Rule rule : grammar.getRules()) { rule.throwsSpec.add("RecognitionException"); } Set<? extends Rule> delegatedRules = grammar.getDelegatedRules(); if ( delegatedRules!=null ) { for (Rule rule : delegatedRules) { rule.throwsSpec.add("RecognitionException"); } } } }
@Override protected void performGrammarAnalysis(CodeGenerator generator, Grammar grammar) { super.performGrammarAnalysis(generator, grammar); for (Rule rule : grammar.getRules()) { rule.throwsSpec.add("RecognitionException"); } Set<? extends Rule> delegatedRules = grammar.getDelegatedRules(); if ( delegatedRules!=null ) { for (Rule rule : delegatedRules) { rule.throwsSpec.add("RecognitionException"); } } } }
/** Get all rule definitions from all direct/indirect delegate grammars * of g. */ public Set<? extends Rule> getAllImportedRules(Grammar g) { Set<String> ruleNames = new HashSet<String>(); Set<Rule> rules = new HashSet<Rule>(); CompositeGrammarTree subtreeRoot = delegateGrammarTreeRoot.findNode(g); List<Grammar> grammars = subtreeRoot.getPreOrderedGrammarList(); // walk all grammars preorder, priority given to grammar listed first. for (int i = 0; i < grammars.size(); i++) { Grammar delegate = grammars.get(i); // for each rule in delegate, add to rules if no rule with that // name as been seen. (can't use removeAll; wrong hashcode/equals on Rule) for (Rule r : delegate.getRules()) { if ( !ruleNames.contains(r.name) ) { ruleNames.add(r.name); // track that we've seen this rules.add(r); } } } return rules; }
/** Get all rule definitions from all direct/indirect delegate grammars * of g. */ public Set<Rule> getAllImportedRules(Grammar g) { Set<String> ruleNames = new HashSet(); Set<Rule> rules = new HashSet(); CompositeGrammarTree subtreeRoot = delegateGrammarTreeRoot.findNode(g); List<Grammar> grammars = subtreeRoot.getPostOrderedGrammarList(); // walk all grammars for (int i = 0; i < grammars.size(); i++) { Grammar delegate = (org.antlr.tool.Grammar) grammars.get(i); // for each rule in delegate, add to rules if no rule with that // name as been seen. (can't use removeAll; wrong hashcode/equals on Rule) for (Iterator it = delegate.getRules().iterator(); it.hasNext();) { Rule r = (Rule)it.next(); if ( !ruleNames.contains(r.name) ) { ruleNames.add(r.name); // track that we've seen this rules.add(r); } } } return rules; }
/** Get all rule definitions from all direct/indirect delegate grammars * of g. */ public Set<Rule> getAllImportedRules(Grammar g) { Set<String> ruleNames = new HashSet(); Set<Rule> rules = new HashSet(); CompositeGrammarTree subtreeRoot = delegateGrammarTreeRoot.findNode(g); List<Grammar> grammars = subtreeRoot.getPreOrderedGrammarList(); // walk all grammars preorder, priority given to grammar listed first. for (int i = 0; i < grammars.size(); i++) { Grammar delegate = (org.antlr.tool.Grammar) grammars.get(i); // for each rule in delegate, add to rules if no rule with that // name as been seen. (can't use removeAll; wrong hashcode/equals on Rule) for (Iterator it = delegate.getRules().iterator(); it.hasNext();) { Rule r = (Rule)it.next(); if ( !ruleNames.contains(r.name) ) { ruleNames.add(r.name); // track that we've seen this rules.add(r); } } } return rules; }
/** Get all rule definitions from all direct/indirect delegate grammars * of g. */ public Set<? extends Rule> getAllImportedRules(Grammar g) { Set<String> ruleNames = new HashSet<String>(); Set<Rule> rules = new HashSet<Rule>(); CompositeGrammarTree subtreeRoot = delegateGrammarTreeRoot.findNode(g); List<Grammar> grammars = subtreeRoot.getPreOrderedGrammarList(); // walk all grammars preorder, priority given to grammar listed first. for (int i = 0; i < grammars.size(); i++) { Grammar delegate = grammars.get(i); // for each rule in delegate, add to rules if no rule with that // name as been seen. (can't use removeAll; wrong hashcode/equals on Rule) for (Rule r : delegate.getRules()) { if ( !ruleNames.contains(r.name) ) { ruleNames.add(r.name); // track that we've seen this rules.add(r); } } } return rules; }
protected void finish() { int numEntryPoints = factory.build_EOFStates( grammar.getRules() ); if ( numEntryPoints == 0 ) { ErrorManager.grammarWarning( ErrorManager.MSG_NO_GRAMMAR_START_RULE, grammar, null, grammar.name ); } }
protected void finish() { int numEntryPoints = factory.build_EOFStates( grammar.getRules() ); if ( numEntryPoints == 0 ) { ErrorManager.grammarWarning( ErrorManager.MSG_NO_GRAMMAR_START_RULE, grammar, null, grammar.name ); } }
protected void generateNFAs(Grammar g) { DOTGenerator dotGenerator = new DOTGenerator(g); Collection rules = g.getAllImportedRules(); rules.addAll(g.getRules()); for (Iterator itr = rules.iterator(); itr.hasNext();) { Rule r = (Rule) itr.next(); try { String dot = dotGenerator.getDOT(r.startState); if (dot != null) { writeDOTFile(g, r, dot); } } catch (IOException ioe) { ErrorManager.error(ErrorManager.MSG_CANNOT_WRITE_FILE, ioe); } } }
protected void generateNFAs(Grammar g) { DOTGenerator dotGenerator = new DOTGenerator(g); Collection rules = g.getAllImportedRules(); rules.addAll(g.getRules()); for (Iterator itr = rules.iterator(); itr.hasNext();) { Rule r = (Rule) itr.next(); try { String dot = dotGenerator.getDOT(r.startState); if (dot != null) { writeDOTFile(g, r, dot); } } catch (IOException ioe) { ErrorManager.error(ErrorManager.MSG_CANNOT_WRITE_FILE, ioe); } } }
/** Before generating code, we examine all actions that can have * $x.y and $y stuff in them because some code generation depends on * Rule.referencedPredefinedRuleAttributes. I need to remove unused * rule labels for example. */ protected void examineAllExecutableActions() { Collection rules = getRules(); for (Iterator it = rules.iterator(); it.hasNext();) { Rule r = (Rule) it.next(); // walk all actions within the rule elements, args, and exceptions List<GrammarAST> actions = r.getInlineActions(); for (int i = 0; i < actions.size(); i++) { GrammarAST actionAST = (GrammarAST) actions.get(i); ActionAnalysis sniffer = new ActionAnalysis(this, r.name, actionAST); sniffer.analyze(); } // walk any named actions like @init, @after Collection<GrammarAST> namedActions = r.getActions().values(); for (Iterator it2 = namedActions.iterator(); it2.hasNext();) { GrammarAST actionAST = (GrammarAST) it2.next(); ActionAnalysis sniffer = new ActionAnalysis(this, r.name, actionAST); sniffer.analyze(); } } }
/** Before generating code, we examine all actions that can have * $x.y and $y stuff in them because some code generation depends on * Rule.referencedPredefinedRuleAttributes. I need to remove unused * rule labels for example. */ protected void examineAllExecutableActions() { Collection rules = getRules(); for (Iterator it = rules.iterator(); it.hasNext();) { Rule r = (Rule) it.next(); // walk all actions within the rule elements, args, and exceptions List<GrammarAST> actions = r.getInlineActions(); for (int i = 0; i < actions.size(); i++) { GrammarAST actionAST = (GrammarAST) actions.get(i); ActionAnalysis sniffer = new ActionAnalysis(this, r.name, actionAST); sniffer.analyze(); } // walk any named actions like @init, @after Collection<GrammarAST> namedActions = r.getActions().values(); for (Iterator it2 = namedActions.iterator(); it2.hasNext();) { GrammarAST actionAST = (GrammarAST) it2.next(); ActionAnalysis sniffer = new ActionAnalysis(this, r.name, actionAST); sniffer.analyze(); } } }
protected void generateNFAs(Grammar g) { DOTGenerator dotGenerator = new DOTGenerator(g); Collection<Rule> rules = new HashSet<Rule>(g.getAllImportedRules()); rules.addAll(g.getRules()); for (Rule r : rules) { try { String dot = dotGenerator.getDOT(r.startState); if (dot != null) { writeDOTFile(g, r, dot); } } catch (IOException ioe) { ErrorManager.error(ErrorManager.MSG_CANNOT_WRITE_FILE, ioe); } } }
protected void generateNFAs(Grammar g) { DOTGenerator dotGenerator = new DOTGenerator(g); Collection<Rule> rules = new HashSet<Rule>(g.getAllImportedRules()); rules.addAll(g.getRules()); for (Rule r : rules) { try { String dot = dotGenerator.getDOT(r.startState); if (dot != null) { writeDOTFile(g, r, dot); } } catch (IOException ioe) { ErrorManager.error(ErrorManager.MSG_CANNOT_WRITE_FILE, ioe); } } }
public void buildNFA() { if ( nfa==null ) { createRuleStartAndStopNFAStates(); } if ( nfa.complete ) { // don't let it create more than once; has side-effects return; } //System.out.println("### build "+getGrammarTypeString()+" grammar "+name+" NFAs"); if ( getRules().size()==0 ) { return; } TreeToNFAConverter nfaBuilder = new TreeToNFAConverter(this, nfa, factory); try { nfaBuilder.grammar(grammarTree); } catch (RecognitionException re) { ErrorManager.error(ErrorManager.MSG_BAD_AST_STRUCTURE, name, re); } nfa.complete = true; }