source: proto/pablo/src/application/ApplicationGenerator.java @ 2710

Last change on this file since 2710 was 2710, checked in by ksherdy, 6 years ago

General refactoring.

File size: 3.3 KB
Line 
1package application;
2
3//import ast.StartSymbolNode;
4import ast.ASTNode;
5import compiler.backend.CodeGenerator;
6import compiler.backend.visitors.CPPUnparser;
7import compiler.backend.visitors.Unparser;
8import compiler.frontend.SyntacticAnalysisFailedException;
9import compiler.frontend.SyntacticAnalyzer;
10import compiler.lang.pablo.*;
11import compiler.lang.carryset.*;
12
13import tokens.Tokens;
14
15public class ApplicationGenerator { 
16       
17        public final static String generatedCodeWarning = "// DO NOT MODIFY\n//\n// PabloJ generated code.\n// Modifications will be lost with the next compiler run.\n//\n";
18       
19//  private static final String LOGGING_DIRECTORY          = "logging";
20    private static final String APPLICATIONS_DIRECTORY     = "applications"; 
21       
22    private ApplicationConfig applicationConfig;
23   
24        //////////////////////////////////////////////////////////////////////////////////
25        // construction
26       
27        public ApplicationGenerator(ApplicationConfig applicationConfiguration) {
28                Tokens.setPrintLevel(Tokens.Level.FULL);
29                this.applicationConfig = applicationConfiguration;
30                OutputCodeFolder.setWarningMessage(generatedCodeWarning);
31        }
32       
33        //////////////////////////////////////////////////////////////////////////////////
34        // code generation
35       
36//      private void generateLoggingPackage() {
37//              LoggingPackageGenerator logging = new LoggingPackageGenerator(root, outputDirectory, LOGGING_DIRECTORY);
38//              logging.generate();
39//      }
40               
41        public void generate() throws SyntacticAnalysisFailedException {
42
43//              OutputCodeFolder parser = new OutputCodeFolder(outputDirectory, srcDirectory);         
44
45                // Target Lang
46                Builtins2Lang builtins2Lang = null;
47                CarrySet2Lang carrySet2Lang = null;
48                Unparser unparser = null;
49               
50                if(applicationConfig.targetLang.contentEquals(ApplicationConfig.CLANG)) {
51                        //builtins2Lang = new Builtins2C();
52                        //carrySet2Lang = new CarrySet2C();     
53                        //unparser = new CUnparser();
54                } else {
55                        builtins2Lang = new Builtins2CPP();
56                        carrySet2Lang = new CarrySet2CPP();
57                        unparser = new CPPUnparser();
58                }
59               
60                // Transformation
61                ASTNode syntaxTree = SyntacticAnalyzer.parse(applicationConfig.inputFile);
62               
63                // Generate Stream Type Decls   - Iterates over stream struct decl AST nodes
64               
65                // Generate Stream Functions    - Iterates over stream function decl ASTs nodes
66               
67               
68                System.out.print(unparser.getCode(syntaxTree));
69                               
70               
71                // Analyze and transform the AST
72                CodeGenerator semanticAnalyzer = new CodeGenerator(syntaxTree, builtins2Lang, carrySet2Lang);
73                //ASTNode decorateTree = semanticAnalyzer.analyze();
74
75                // Generate Template
76                                       
77                // Generate Code
78               
79                /*
80                String global = CodeGenerator.makeStructDecls((ProgramNode)syntaxTree, unparser);
81               
82                global +=  CodeGenerator.makeStreamFuncDecls((ProgramNode)syntaxTree, unparser);
83               
84                System.out.print(global);
85               
86                String temp = CodeGenerator.makeStructDefs((ProgramNode)syntaxTree, unparser);
87               
88                System.out.print(temp);
89                */     
90                                       
91//              parser.generateFile(new TemplateContentsGenerator(this.root, srcDirectory), "Parser.java"); // "Parser.java"
92//              parser.copyTemplate("ReverseAccessibleArrayList");
93//              parser.copyTemplate("RevList");
94               
95                // Fill Template
96               
97                printCompletionMessage();
98        }
99       
100        private void printCompletionMessage() {
101                System.out.println("Application generation complete.");
102        }
103       
104}
Note: See TracBrowser for help on using the repository browser.