Changeset 2998


Ignore:
Timestamp:
Apr 5, 2013, 10:48:33 PM (4 years ago)
Author:
ksherdy
Message:

Updated application generator to support direct processing of PabloB source files. Added -b 'PabloB source input' option to command line args handling.

Location:
proto/pabloj/trunk/src/application
Files:
8 added
5 edited
7 copied

Legend:

Unmodified
Added
Removed
  • proto/pabloj/trunk/src/application/PabloJ.java

    r2983 r2998  
    99 */
    1010
    11 package  applicationGenerator;
     11package  application;
    1212
    1313import org.apache.commons.cli.CommandLine;
     
    1515import org.apache.commons.cli.Options;
    1616import org.apache.commons.cli.PosixParser;
     17
     18import application.config.Configuration;
     19import application.config.ConfigurationFactory;
     20import application.config.ConfigurationOptions;
     21import application.generators.ApplicationGenerator;
    1722 
    1823public class PabloJ {
  • proto/pabloj/trunk/src/application/generators/ApplicationGenerator.java

    r2983 r2998  
    1818 */
    1919
    20 package applicationGenerator;
     20package application.generators;
    2121
    2222import java.io.File;
    23 import applicationGenerator.helpers.FileUtil;
    24 import applicationGenerator.parser.Parser;
    25 import applicationGenerator.parser.ParserException;
     23
     24import application.config.Configuration;
     25import application.helpers.FileUtil;
    2626
    2727import compilers.pabloB.codeGenerator.visitors.CPPUnparser;
     
    4949        //      }
    5050               
    51         public void generate() throws ParserException {
     51        public void generate() throws ASTGeneratorException {
    5252
    5353                SymbolTable symbolTable                         = new SymbolTable();   
     
    6969
    7070                // Parse
    71                 pabloS.ast.ASTNode syntaxTree = Parser.parse(applicationConfiguration.inputFile);
    72 
    73                 // Gather carry information set
    74                 // TODO - refactor - carry_count, advance_n_count, add symbol table to root node
    75                 CarryInfoSetVisitor carryInfoSetVisitor = new CarryInfoSetVisitor(syntaxTree, symbolTable); 
    76                 carryInfoSetVisitor.visit();
     71                pabloB.ast.ASTNode pabloBAST = null;
    7772               
    78                 // Replace PabloS builtins and Carry Set builtins with target language strings.
    79                 Transformer pabloSXFormer = new Transformer(syntaxTree);
    80                 pabloSXFormer.setBuiltins2Lang(builtins2Lang);
    81                 pabloSXFormer.setCarrySet2Lang(carrySet2Lang);
    82 
    83                 // Transform PabloS global functions in non-final block mode
    84                 pabloSXFormer.setFinalBlockMode(false);
    85                 pabloS.ast.ProgramNode decoratedTree = (pabloS.ast.ProgramNode)pabloSXFormer.xForm();
     73                if(applicationConfiguration.isPabloSSource) {
     74                        pabloS.ast.ASTNode pabloAST = ASTGenerator.buildPabloSAST(applicationConfiguration.pabloSFile);
     75       
     76                        //pabloB.ast.ASTNode syntaxTree = Parser.parsePabloB(applicationConfiguration.pabloBFile);
     77                       
     78                        // Gather carry information set
     79                        // TODO - refactor - carry_count, advance_n_count, add symbol table to root node
     80                        CarryInfoSetVisitor carryInfoSetVisitor = new CarryInfoSetVisitor(pabloAST, symbolTable); 
     81                        carryInfoSetVisitor.visit();
     82                       
     83                        // Replace PabloS builtins and Carry Set builtins with target language strings.
     84                        Transformer pabloSXFormer = new Transformer(pabloAST);
     85                        pabloSXFormer.setBuiltins2Lang(builtins2Lang);
     86                        pabloSXFormer.setCarrySet2Lang(carrySet2Lang);
     87       
     88                        // Transform PabloS global functions in non-final block mode
     89                        pabloSXFormer.setFinalBlockMode(false);
     90                        pabloS.ast.ProgramNode decoratedTree = (pabloS.ast.ProgramNode)pabloSXFormer.xForm();
     91                       
     92                        // Transform PabloS global functions in final block mode
     93                        pabloSXFormer.setFinalBlockMode(true);
     94                        pabloS.ast.ProgramNode optDecoratedTree = (pabloS.ast.ProgramNode)pabloSXFormer.xForm();
     95                       
     96                        // PabloS to PabloB transformation
     97                        PabloS2PabloBXFormer pabloS2PabloBXFormer = new PabloS2PabloBXFormer(symbolTable, carrySet2Lang);
     98                        pabloBAST = pabloS2PabloBXFormer.XForm(decoratedTree, optDecoratedTree);
    8699               
    87                 // Transform PabloS global functions in final block mode
    88                 pabloSXFormer.setFinalBlockMode(true);
    89                 pabloS.ast.ProgramNode optDecoratedTree = (pabloS.ast.ProgramNode)pabloSXFormer.xForm();
    90                
    91                 // PabloS to PabloB transformation
    92                 PabloS2PabloBXFormer pabloS2PabloBXFormer = new PabloS2PabloBXFormer(symbolTable, carrySet2Lang);
    93                 pabloB.ast.ASTNode pabloBASTTree = pabloS2PabloBXFormer.XForm(decoratedTree, optDecoratedTree);
    94                
    95                 // PabloB Semantic Analysis
     100                } else if (applicationConfiguration.isPabloBSource) {
     101                       
     102                        pabloBAST = ASTGenerator.buildPabloBAST(applicationConfiguration.pabloBFile);
     103                }
    96104               
    97105                // PabloB AST Transforms
     
    107115               
    108116                HeaderTemplateContentsGenerator templateContentsGenerator
    109                                                                         = new HeaderTemplateContentsGenerator((pabloB.ast.ProgramNode) pabloBASTTree,
     117                                                                        = new HeaderTemplateContentsGenerator((pabloB.ast.ProgramNode) pabloBAST,
    110118                                                                                                                                                        unparser,
    111119                                                                                                                                                        outputDirectory,
     
    120128                System.out.println("Application generation complete.");
    121129        }
    122 
    123 
    124130               
    125131}
  • proto/pabloj/trunk/src/application/generators/HeaderTemplateContentsGenerator.java

    r2983 r2998  
    66 */
    77
    8 package applicationGenerator;
     8package application.generators;
    99
    1010import pabloB.ast.*;
    1111
    12 import applicationGenerator.helpers.FileUtil;
    13 import applicationGenerator.templating.FileTemplate;
    14 import applicationGenerator.templating.Template;
     12import application.config.Configuration;
     13import application.helpers.FileUtil;
     14import application.templating.FileTemplate;
     15import application.templating.Template;
    1516import compilers.pabloB.ast.Accessors;
    1617import compilers.pabloB.codeGenerator.visitors.Unparser;
  • proto/pabloj/trunk/src/application/generators/TemplateContentsGenerator.java

    r2983 r2998  
    55 */
    66
    7 package applicationGenerator;
     7package application.generators;
    88
    99import compilers.pabloB.codeGenerator.visitors.Unparser;
  • proto/pabloj/trunk/src/application/helpers/FileUtil.java

    r2935 r2998  
    55 */
    66
    7 package applicationGenerator.helpers;
     7package application.helpers;
    88
    99import java.io.File;
  • proto/pabloj/trunk/src/application/logging/Logger.java

    r2952 r2998  
    1 package applicationGenerator.logging;
     1package application.logging;
    22
    33import java.util.HashMap;
  • proto/pabloj/trunk/src/application/templating/FileTemplate.java

    r2952 r2998  
    1 package applicationGenerator.templating;
     1package application.templating;
    22
    33import pabloS.inputHandler.LineBasedReader;
  • proto/pabloj/trunk/src/application/templating/MemoryTemplate.java

    r2952 r2998  
    1 package applicationGenerator.templating;
     1package application.templating;
    22
    33import java.io.PrintStream;
  • proto/pabloj/trunk/src/application/templating/Template.java

    r2952 r2998  
    1 package applicationGenerator.templating;
     1package application.templating;
    22
    33import java.io.PrintStream;
Note: See TracChangeset for help on using the changeset viewer.