KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > polyglot > ext > pao > ExtensionInfo


1 package polyglot.ext.pao;
2
3 import java.io.Reader JavaDoc;
4 import java.util.List JavaDoc;
5
6 import polyglot.ast.NodeFactory;
7 import polyglot.ext.pao.ast.PaoNodeFactory_c;
8 import polyglot.ext.pao.parse.Grm;
9 import polyglot.ext.pao.parse.Lexer_c;
10 import polyglot.ext.pao.types.PaoTypeSystem_c;
11 import polyglot.ext.pao.visit.PaoBoxer;
12 import polyglot.frontend.*;
13 import polyglot.lex.Lexer;
14 import polyglot.types.TypeSystem;
15 import polyglot.util.ErrorQueue;
16
17 /**
18  * Extension information for the PAO extension. This class specifies the
19  * appropriate parser, <code>NodeFactory</code> and <code>TypeSystem</code>
20  * to use, as well as inserting a new pass: <code>PaoBoxer</code>.
21  *
22  * @see polyglot.ext.pao.visit.PaoBoxer
23  * @see polyglot.ext.pao.ast.PaoNodeFactory_c
24  * @see polyglot.ext.pao.types.PaoTypeSystem
25  * @see polyglot.ext.pao.types.PaoTypeSystem_c
26  */

27 public class ExtensionInfo extends polyglot.ext.jl.ExtensionInfo {
28     public String JavaDoc defaultFileExtension() {
29         return "pao";
30     }
31
32     public String JavaDoc compilerName() {
33         return "paoc";
34     }
35
36     public Parser parser(Reader JavaDoc reader, FileSource source, ErrorQueue eq) {
37         Lexer lexer = new Lexer_c(reader, source.name(), eq);
38         Grm grm = new Grm(lexer, ts, nf, eq);
39         return new CupParser(grm, source, eq);
40     }
41
42     protected NodeFactory createNodeFactory() {
43         return new PaoNodeFactory_c();
44     }
45     protected TypeSystem createTypeSystem() {
46         return new PaoTypeSystem_c();
47     }
48
49     public static final Pass.ID CAST_REWRITE = new Pass.ID("cast-rewrite");
50
51     public List JavaDoc passes(Job job) {
52         List JavaDoc passes = super.passes(job);
53         beforePass(passes, Pass.PRE_OUTPUT_ALL,
54                   new VisitorPass(CAST_REWRITE,
55                                   job, new PaoBoxer(job, ts, nf)));
56         return passes;
57     }
58
59     static {
60         // Make sure the class Topics is loaded.
61
new Topics();
62     }
63 }
64
Popular Tags