1 package antlr.preprocessor;
2
3 * list of grammars in the file
5 */
6
7 import antlr.collections.impl.IndexedVector;
8 import java.util.Enumeration;
9 import java.io.*;
10
11 public class GrammarFile {
12 protected String fileName;
13 protected String headerAction;
14 protected IndexedVector options;
15 protected IndexedVector grammars;
16 protected boolean expanded = false;
18 public GrammarFile(String f) {
19 fileName = f;
20 grammars = new IndexedVector();
21 }
22 public void addGrammar(Grammar g) {
23 grammars.appendElement(g.getName(), g);
24 }
25 public void generateExpandedFile() throws IOException {
26 if ( !expanded ) {
27 return; }
29 String expandedFileName = nameForExpandedGrammarFile(this.getName());
30
31 PrintWriter expF = antlr.Tool.openOutputFile(expandedFileName);
33 expF.println(toString());
34 expF.close();
35 }
36 public IndexedVector getGrammars() {
37 return grammars;
38 }
39 public String getName() {return fileName;}
40 public String nameForExpandedGrammarFile(String f) {
41 if ( expanded ) {
42 return "expanded"+antlr.Tool.fileMinusPath(f);
44 }
45 else {
46 return f;
47 }
48 }
49 public void setExpanded(boolean exp) {
50 expanded = exp;
51 }
52 public void setHeaderAction(String a) {headerAction=a;}
53 public void setOptions(IndexedVector o) {options=o;}
54 public String toString() {
55 String h = headerAction==null ? "" : headerAction;
56 String o = options==null ? "" : Hierarchy.optionsToString(options);
57
58 String s=h+o;
59 for (Enumeration e=grammars.elements(); e.hasMoreElements(); ) {
60 Grammar g = (Grammar)e.nextElement();
61 s += g;
62 }
63 return s;
64 }
65 }
66