KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > ro > infoiasi > donald > compiler > parser > ParserSpec


1 package ro.infoiasi.donald.compiler.parser;
2
3 import ro.infoiasi.donald.compiler.cfg.*;
4 import java.io.*;
5 import java.util.*;
6
7 public class ParserSpec {
8     private String JavaDoc packageName;
9     private List imports;
10     private String JavaDoc actionCode;
11     private String JavaDoc parserCode;
12     private String JavaDoc initCode;
13     private String JavaDoc scanCode;
14     private CFG grammar;
15     
16     ParserSpec(String JavaDoc packageName, List imports,
17             String JavaDoc actionCode, String JavaDoc parserCode,
18             String JavaDoc initCode, String JavaDoc scanCode, CFG grammar) {
19         this.packageName = packageName;
20         this.imports = imports;
21         this.actionCode = actionCode;
22         this.parserCode = parserCode;
23         this.initCode = initCode;
24         this.scanCode = scanCode;
25         this.grammar = grammar;
26     }
27     
28     public static ParserSpec load(String JavaDoc fileName)
29             throws IOException, SpecParseException {
30
31         FileReader fr = new FileReader(fileName);
32         
33         SpecParser p = new SpecParser(new SpecLexer(fr));
34         try {
35             return (ParserSpec)p.parse().value;
36         } catch (IOException e) {
37             throw e;
38         } catch (Exception JavaDoc e) {
39             if (e instanceof SpecParseException) {
40                 throw (SpecParseException)e;
41             } else {
42                 throw new SpecParseException(e.getMessage());
43             }
44         }
45     }
46
47     public CFG getGrammar() {
48         return grammar;
49     }
50
51     public String JavaDoc getPackageName() {
52         return packageName;
53     }
54
55     public List getImports() {
56         return imports;
57     }
58
59     public String JavaDoc getActionCode() {
60         return actionCode;
61     }
62
63     public String JavaDoc getParserCode() {
64         return parserCode;
65     }
66
67     public String JavaDoc getInitCode() {
68         return initCode;
69     }
70
71     public String JavaDoc getScanCode() {
72         return scanCode;
73     }
74
75     public String JavaDoc toString() {
76         StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
77         sb.append("package "+packageName+";\n\n");
78         Iterator it = imports.iterator();
79         while (it.hasNext()) {
80             sb.append("import "+it.next()+";\n");
81         }
82         sb.append("\n");
83         sb.append(grammar);
84         return sb.toString();
85     }
86 }
87
Popular Tags