root/trunk/ProjectFortress/src/com/sun/fortress/compiler/phases/GrammarPhase.java @ 2404

Revision 2404, 1.4 KB (checked in by mspiegel, 16 months ago)

[static analysis] Another refactoring of Shell.java. Static phases are now declared in package com.sun.fortress.compiler.phases.

Line 
1package com.sun.fortress.compiler.phases;
2
3import com.sun.fortress.compiler.AnalyzeResult;
4import com.sun.fortress.compiler.GlobalEnvironment;
5import com.sun.fortress.compiler.IndexBuilder;
6import com.sun.fortress.exceptions.MultipleStaticError;
7import com.sun.fortress.exceptions.StaticError;
8import com.sun.fortress.syntax_abstractions.phases.GrammarRewriter;
9import com.sun.fortress.useful.Debug;
10
11import edu.rice.cs.plt.collect.CollectUtil;
12import edu.rice.cs.plt.iter.IterUtil;
13
14public class GrammarPhase extends Phase {
15
16        public GrammarPhase(Phase parentPhase) {
17                super(parentPhase);
18        }
19       
20        @Override
21        public AnalyzeResult execute() throws StaticError {
22        Debug.debug( Debug.Type.FORTRESS, 1, "Start phase GrammarPhase" );             
23                AnalyzeResult previous = parentPhase.getResult();                       
24
25                GlobalEnvironment apiEnv =
26                        new GlobalEnvironment.FromMap(CollectUtil.union(repository.apis(),
27                                        previous.apis()));
28
29                GrammarRewriter.ApiResult apiID = GrammarRewriter.rewriteApis(previous.apis(), apiEnv);
30                if (!apiID.isSuccessful()) {
31                        throw new MultipleStaticError(apiID.errors());
32                }
33
34                IndexBuilder.ApiResult apiDone = IndexBuilder.buildApis(apiID.apis(), lastModified);
35                if (!apiDone.isSuccessful()) {
36                        throw new MultipleStaticError(apiDone.errors());
37                }
38
39                return new AnalyzeResult(apiDone.apis(), previous.components(),
40                                IterUtil.<StaticError>empty(), previous.typeEnvAtNode());       
41        }
42
43}
Note: See TracBrowser for help on using the browser.