1 package polyglot.ext.pao; 2 3 import java.io.Reader ; 4 import java.util.List ; 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 27 public class ExtensionInfo extends polyglot.ext.jl.ExtensionInfo { 28 public String defaultFileExtension() { 29 return "pao"; 30 } 31 32 public String compilerName() { 33 return "paoc"; 34 } 35 36 public Parser parser(Reader 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 passes(Job job) { 52 List 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 new Topics(); 62 } 63 } 64 | Popular Tags |