Changeset 2749


Ignore:
Timestamp:
Dec 4, 2012, 6:11:40 PM (6 years ago)
Author:
ksherdy
Message:

Initial check in to support both PabloS (stream language syntax) and PabloB (block language syntax).

Location:
proto/pablo
Files:
193 added
2 deleted
29 edited
2 copied
4 moved

Legend:

Unmodified
Added
Removed
  • proto/pablo/input/grammar/scatter/pabloS.scatter

    r2710 r2749  
    22// Ken Herdy
    33// 8-September-2012
     4//
     5// PabloS (unbounded stream language)
    46//
    57context main {
     
    6466  binaryOperator {} [expr, expr1],//, expr4],
    6567  unaryOperator {} [expr2],// expr5],
    66   Assign {} [AssignRest],
    67   FuncCall {} [FuncCallRest],
     68  assign {} [assignRest],
     69  funcCall {} [funcCallRest],
    6870  integerConstant{intValued;} [],
    6971}
    7072
    7173grammar {
    72         program         -> (typeDecl | typeDef | FuncDef) *;
     74        program         -> (typeDecl | typeDef | funcDef) *;
    7375
    7476        //
     
    9193   
    9294    //
    93         // f u n c t i o n   d e f i n i t i o n s      // d e c l a r a t i o n s ?                                                   
    94         //
    95         FuncDef                 -> FUNCTION type FuncName LROUND parameterList? RROUND blockStmt TERMINATOR?;                           
     95        // f u n c t i o n   d e c l a r a t i o n s ?                                                 
     96        //
     97        funcDef                 -> FUNCTION type funcName LROUND parameterList? RROUND blockStmt TERMINATOR?;                           
    9698                                                                               
    9799        returnType              #-> type ;      // Note: Strictly not required.
     
    99101        parameterList   -> parameter (COMMA parameter)*;
    100102                                                                                                               
    101         FuncName                #-> identifier ;
     103        funcName                #-> identifier ;
    102104                                                                                                                       
    103105        parameter               -> type parameterName ;
     
    112114        // s t a t e m e n t s
    113115        //
    114         Stmt                                    #-> (FuncCallOrAssignStmt | ifStmt | whileStmt | returnStmt | localVarDecl) (TERMINATOR)? ;
     116        stmt                                    #-> (funcCallOrAssignStmt | ifStmt | whileStmt | returnStmt | localVarDecl) (TERMINATOR)? ;
    115117                       
    116         FuncCallOrAssignStmt    -> compoundIdentifier ((FuncCallRest _promote_) | (AssignRest _promote_)) TERMINATOR ;
    117        
    118         FuncCallRest                    -> LROUND^ FuncCallArgList RROUND ;
    119 
    120         FuncCallArgList                 -> (expr (COMMA expr)*)? ;     
    121                
    122         AssignOperator                  -> ASSIGN | AND_ASSIGN | OR_ASSIGN | XOR_ASSIGN ;                               
    123                                        
    124         AssignRest                              -> AssignOperator^! expr ;                             
     118        funcCallOrAssignStmt    -> compoundIdentifier ((funcCallRest _promote_) | (assignRest _promote_)) TERMINATOR ;
     119       
     120        funcCallRest                    -> LROUND^ funcCallArgList RROUND ;
     121
     122        funcCallArgList                 -> (expr (COMMA expr)*)? ;     
     123               
     124        assignOperator                  -> ASSIGN | AND_ASSIGN | OR_ASSIGN | XOR_ASSIGN ;                               
     125                                       
     126        assignRest                              -> assignOperator^! expr ;                             
    125127                                       
    126128        ifStmt                                  -> IF LROUND expr RROUND blockStmt (ELSE blockStmt)? ;                 
     
    130132        returnStmt                              -> RETURN (expr)? TERMINATOR;
    131133                       
    132         localVarDecl                    -> VAR type VarName (AssignOperator^! expr) ?;
     134        localVarDecl                    -> VAR type VarName (assignOperator^! expr) ?;
    133135               
    134136        VarName                                 #-> identifier;
    135137
    136         blockStmt                               -> LCURLY Stmt* RCURLY ;
     138        blockStmt                               -> LCURLY stmt* RCURLY ;
    137139       
    138140        //
     
    147149        expr3           #-> LROUND expr RROUND
    148150                                        | constant
    149                                         | compoundIdentifier (FuncCallRest _promote_)?
     151                                        | compoundIdentifier (funcCallRest _promote_)?
    150152                                        ;
    151153
    152154                                        //(
    153                                         //(FuncCallRest _promote_)?
     155                                        //(funcCallRest _promote_)?
    154156                                        //| (expr4 _promote_)?
    155157                                        //| (expr5 _promote_)?
  • proto/pablo/runConfigurations/compilePabloSGrammar.launch

    r2710 r2749  
    1212</listAttribute>
    1313<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="applications.ScatterCompiler"/>
    14 <stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="/home/ken/workspace/pablo/input/grammar/scatter/pablo.scatter -o ../pablo/src"/>
     14<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="/home/ken/workspace/pablo/input/grammar/scatter/pabloS.scatter -p pabloS -o ../pablo/src/pabloS"/>
    1515<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ArgS" value="${workspace_loc}/pablo/input/grammar/scatter/pablo.scatter -o ../pablo/src"/>
    1616<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="scatter"/>
  • proto/pablo/runConfigurations/pablo.launch

    r2685 r2749  
    33<stringAttribute key="bad_container_name" value="/prot/pablo/runConfigurations"/>
    44<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
    5 <listEntry value="/pablo/src/application/Pablo.java"/>
     5<listEntry value="/pablo/src/applications/Pablo.java"/>
    66</listAttribute>
    77<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
    88<listEntry value="1"/>
    99</listAttribute>
    10 <stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="application.Pablo"/>
     10<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="applications.Pablo"/>
    1111<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-i ${workspace_loc}/pablo/input/test/pablo/py2pablo/parabix2_pablo.pablo.exclude"/>
    1212<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="pablo"/>
  • proto/pablo/src/applications/ApplicationGenerator.java

    r2739 r2749  
    22
    33//import ast.StartSymbolNode;
    4 import ast.ASTNode;
     4import pabloS.ast.ASTNode;
     5import pabloS.tokens.Tokens;
     6
    57import compiler.codeGenerator.CodeGenerator;
    68import compiler.lang.pablo.*;
     
    1012import compiler.transformers.visitors.CPPXFormer;
    1113import compiler.transformers.visitors.CodeXFormer;
    12 
    13 import tokens.Tokens;
    1414
    1515public class ApplicationGenerator {
  • proto/pablo/src/applications/Pablo.java

    r2739 r2749  
    66import java.util.Map;
    77
    8 import tokens.Tokens;
    9 import ast.ASTNode;
    10 import lexicalAnalyzer.LexicalController;
    11 import parser.Parser;
    12 import logging.ScatterLogger;
     8import pabloS.tokens.Tokens;
     9import pabloS.ast.ASTNode;
     10import pabloS.lexicalAnalyzer.LexicalController;
     11import pabloS.parser.Parser;
     12import pabloS.logging.ScatterLogger;
     13
    1314import compiler.lang.carryset.*;
    1415import compiler.lang.idisa.*;
  • proto/pablo/src/applications/PackageGenerator.java

    r2739 r2749  
    33//import symbols.SymbolTable;
    44//import symbols.TokenRegistry;
    5 import ast.ASTNode;
     5import pabloS.ast.ASTNode;
    66
    77public abstract class PackageGenerator {
  • proto/pablo/src/applications/TemplateContentsGenerator.java

    r2739 r2749  
    11package applications;
    22
    3 import ast.*;
     3import pabloS.ast.*;
    44import compiler.template.Template;
    55import compiler.transformers.visitors.helpers.UnparserUtil;
  • proto/pablo/src/applications/TestPabloS.java

    r2739 r2749  
    1010import java.util.*;
    1111
    12 import lexicalAnalyzer.LexicalController;
    13 import parser.Parser;
     12import pabloS.lexicalAnalyzer.LexicalController;
     13import pabloS.parser.Parser;
    1414// import semanticAnalyzer.SampleSemanticAnalyzer;
    1515// import codeGeneration.CodeGenerator;
    1616
    17 import  tokens.Tokens;
    18 import  ast.ASTNode;
    19 import  logging.ScatterLogger;
     17import  pabloS.tokens.Tokens;
     18import  pabloS.ast.ASTNode;
     19import  pabloS.logging.ScatterLogger;
    2020
    2121import compiler.lang.carryset.CarrySet2CPP;
     
    3434
    3535@SuppressWarnings("unused")
    36 public class Test {
     36public class TestPabloS {
    3737
    3838        protected static final int EXIT_CODE_FOR_ERROR = 1;
  • proto/pablo/src/compiler/codeGenerator/CodeGenerator.java

    r2713 r2749  
    44import compiler.lang.pablo.Builtins2Lang;
    55import compiler.transformers.visitors.*;
    6 
    7 import ast.ASTNode;
     6import pabloS.ast.ASTNode;
    87
    98public class CodeGenerator {
  • proto/pablo/src/compiler/codeGenerator/helpers/Generators.java

    r2713 r2749  
    33import java.util.List;
    44
    5 import compiler.ast.Accessors;
    65import compiler.lang.carryset.CarrySet2Lang;
    76import compiler.lang.pablo.Builtins2Lang;
     7import compiler.pabloS.ast.helpers.Accessors;
    88import compiler.transformers.visitors.*;
    99import compiler.transformers.visitors.helpers.CodeStore;
  • proto/pablo/src/compiler/lang/pablo/BuiltinsUtil.java

    r2702 r2749  
    11package compiler.lang.pablo;
    22
    3 import ast.*;
    4 import compiler.ast.Accessors;
    5 
    6 
     3import pabloS.ast.*;
     4import compiler.pabloS.ast.helpers.Accessors;
    75
    86public class BuiltinsUtil {
  • proto/pablo/src/compiler/pabloS/ast/helpers/Accessors.java

    r2710 r2749  
    1 package compiler.ast;
    2 
    3 import ast.*;
     1package compiler.pabloS.ast.helpers;
     2
     3import pabloS.ast.*;
    44
    55import java.util.ArrayList;
     
    5959        // Type Decls
    6060        ////////////////////////////////////////////////////////////////////////////                           
     61       
     62        /*
    6163        public static boolean hasDeclList(TypeDeclNode node) {
    6264
     
    6870                return false;
    6971        }
    70                
     72        */
     73       
    7174        ////////////////////////////////////////////////////////////////////////////
    7275        // Assign Stmts
  • proto/pablo/src/compiler/pabloS/ast/helpers/Generators.java

    r2710 r2749  
    1 package compiler.ast;
    2 
    3 import ast.*;
     1package compiler.pabloS.ast.helpers;
     2
     3import pabloS.ast.*;
    44
    55import java.util.ArrayList;
     
    1010import compiler.lang.pablo.Builtins2Lang;
    1111
    12 import lexicalAnalyzer.LexicalType;
    13 import lexicalAnalyzer.Lextant;
    14 import tokens.IdentifierToken;
    15 import tokens.IntConstantToken;
    16 import tokens.LextantToken;
    17 import tokens.StringConstantToken;
    18 import tokens.Token;
     12import pabloS.lexicalAnalyzer.LexicalType;
     13import pabloS.lexicalAnalyzer.Lextant;
     14import pabloS.tokens.IdentifierToken;
     15import pabloS.tokens.IntConstantToken;
     16import pabloS.tokens.LextantToken;
     17import pabloS.tokens.StringConstantToken;
     18import pabloS.tokens.Token;
    1919
    2020public class Generators {
  • proto/pablo/src/compiler/syntacticAnalysis/SyntacticAnalyzer.java

    r2713 r2749  
    66package  compiler.syntacticAnalysis;
    77
    8 import parser.*;
    9 import ast.ASTNode;
    10 
    11 import lexicalAnalyzer.LexicalController;
    12 import logging.ScatterLogger;
     8import pabloS.parser.*;
     9import pabloS.ast.ASTNode;
     10import pabloS.lexicalAnalyzer.LexicalController;
     11import pabloS.logging.ScatterLogger;
    1312import compiler.syntacticAnalysis.SyntacticAnalyzer;
    1413
  • proto/pablo/src/compiler/template/FileTemplate.java

    r2673 r2749  
    11package compiler.template;
    22
    3 import inputHandler.LineBasedReader;
    4 
     3import pabloS.inputHandler.LineBasedReader;
    54import java.io.PrintStream;
    65
  • proto/pablo/src/compiler/templating/FileTemplate.java

    r2660 r2749  
    11package compiler.templating;
    22
    3 import inputHandler.LineBasedReader;
    4 
     3import pabloS.inputHandler.LineBasedReader;
    54import java.io.PrintStream;
    65
  • proto/pablo/src/compiler/test/ASTComparator.java

    r2576 r2749  
    22package compiler.test;
    33
     4
    45import java.util.List;
    5 
    6 import ast.ASTNode;
     6import pabloS.ast.ASTNode;
    77
    88/**
  • proto/pablo/src/compiler/test/ASTTest.java

    r2660 r2749  
    22
    33
    4 import ast.*;
     4import pabloS.ast.*;
    55
    66public class ASTTest {
  • proto/pablo/src/compiler/transformers/visitors/ASTAssertCompareVisitor.java

    r2713 r2749  
    33
    44import java.util.List;
    5 
    6 import ast.ASTNode;
    7 
     5import pabloS.ast.ASTNode;
    86
    97/**
  • proto/pablo/src/compiler/transformers/visitors/AdvanceCombinerXFormer.java

    r2713 r2749  
    11package compiler.transformers.visitors;
    22
    3 import ast.*;
    4 import compiler.ast.Accessors;
    5 import compiler.ast.Generators;
     3import pabloS.ast.*;
    64import compiler.lang.pablo.BuiltinsUtil;
     5import compiler.pabloS.ast.helpers.Accessors;
     6import compiler.pabloS.ast.helpers.Generators;
    77
    8 import tokens.*;
     8import pabloS.tokens.*;
    99
    1010public class AdvanceCombinerXFormer {
  • proto/pablo/src/compiler/transformers/visitors/AdvanceNCounterVisitor.java

    r2713 r2749  
    11package compiler.transformers.visitors;
    22
    3 import ast.*;
     3import pabloS.ast.*;
    44import compiler.lang.pablo.BuiltinsUtil;
    55
  • proto/pablo/src/compiler/transformers/visitors/AssertBitBlockAlignStmtsXFormer.java

    r2713 r2749  
    11package compiler.transformers.visitors;
    22
    3 import ast.*;
    4 import compiler.ast.Accessors;
    5 import compiler.ast.Generators;
     3import pabloS.ast.*;
    64import compiler.lang.pablo.Builtins;
    75import compiler.lang.pablo.Builtins2Lang;
    86import compiler.lang.carryset.CarrySet2Lang;
     7import compiler.pabloS.ast.helpers.Accessors;
     8import compiler.pabloS.ast.helpers.Generators;
    99
    1010public class AssertBitBlockAlignStmtsXFormer {
  • proto/pablo/src/compiler/transformers/visitors/AssertZeroXFormer.java

    r2713 r2749  
    11package compiler.transformers.visitors;
    22
    3 import ast.*;
    4 import compiler.ast.Accessors;
    5 import compiler.ast.Generators;
     3import pabloS.ast.*;
    64import compiler.lang.pablo.Builtins;
    75import compiler.lang.pablo.Builtins2Lang;
    86import compiler.lang.pablo.BuiltinsUtil;
    97import compiler.lang.idisa.BitBlock;
     8import compiler.pabloS.ast.helpers.Accessors;
     9import compiler.pabloS.ast.helpers.Generators;
    1010
    1111public class AssertZeroXFormer {
  • proto/pablo/src/compiler/transformers/visitors/AugAssignXFormer.java

    r2713 r2749  
    44import java.util.Map;
    55
    6 import ast.*;
    7 import compiler.ast.Accessors;
    8 import compiler.ast.Generators;
     6import pabloS.ast.*;
     7import pabloS.lexicalAnalyzer.Lextant;
     8import pabloS.tokens.*;
    99
    10 
    11 import lexicalAnalyzer.Lextant;
    12 import tokens.*;
     10import compiler.pabloS.ast.helpers.Accessors;
     11import compiler.pabloS.ast.helpers.Generators;
    1312
    1413public class AugAssignXFormer {
  • proto/pablo/src/compiler/transformers/visitors/Bitwise2IDISAXFormer.java

    r2713 r2749  
    11package compiler.transformers.visitors;
    22
    3 import ast.*;
    4 import lexicalAnalyzer.Lextant;
    5 import tokens.Token;
    6 import compiler.ast.Accessors;
    7 import compiler.ast.Generators;
     3import pabloS.ast.*;
     4import pabloS.lexicalAnalyzer.Lextant;
     5import pabloS.tokens.Token;
     6
    87import compiler.lang.idisa.*;
     8import compiler.pabloS.ast.helpers.Accessors;
     9import compiler.pabloS.ast.helpers.Generators;
    910
    1011public class Bitwise2IDISAXFormer {
  • proto/pablo/src/compiler/transformers/visitors/CPPXFormer.java

    r2713 r2749  
    11package compiler.transformers.visitors;
    22
    3 import ast.*;
     3import pabloS.ast.*;
    44
    55import java.util.Iterator;
    66import java.util.List;
    77
    8 import compiler.ast.Accessors;
    9 import compiler.codeGenerator.visitors.helpers.*;
     8//import compiler.codeGenerator.visitors.helpers.*;
    109import compiler.lang.carryset.CarrySet2CPP;
    1110import compiler.lang.pablo.Builtins2CPP;
     11import compiler.pabloS.ast.helpers.Accessors;
    1212import compiler.transformers.visitors.helpers.CodeStore;
    1313import compiler.transformers.visitors.helpers.UnparserUtil;
     
    9393                String type = childResults.get(0).getResultVarName();
    9494                String DeclList;
     95                /*//Deprecated.
    9596                if (Accessors.hasDeclList(node)) {
    9697                        DeclList = childResults.get(1).getResultVarName();
     
    9899                       
    99100                } else {
     101                */
    100102                        code.addFormattedLine("%s;", type);
    101                 }
     103                //}
    102104                return code;           
    103105        }               
    104106
     107        /*// deprecated
    105108        public CodeStore visitLeave(DeclListNode node, List<CodeStore> childResults) {
    106109                CodeStore code = new CodeStore();
     
    108111                code.setResultVarName(UnparserUtil.makeDelimitedList(iter, ", "));
    109112                return code;           
    110         }               
     113        }
     114        */
    111115       
    112116        ////////////////////////////////////////////////////////////////////////////
  • proto/pablo/src/compiler/transformers/visitors/CarryCounterVisitor.java

    r2713 r2749  
    11package compiler.transformers.visitors;
    22
    3 import ast.*;
     3import pabloS.ast.*;
    44import compiler.lang.pablo.BuiltinsUtil;
    55
  • proto/pablo/src/compiler/transformers/visitors/CarryIntroXFormer.java

    r2713 r2749  
    11package compiler.transformers.visitors;
    22
    3 import ast.*;
    4 import tokens.LextantToken;
    5 import lexicalAnalyzer.Lextant;
    6 import compiler.ast.Accessors;
    7 import compiler.ast.Generators;
     3import pabloS.ast.*;
     4import pabloS.tokens.LextantToken;
     5import pabloS.lexicalAnalyzer.Lextant;
     6
    87import compiler.lang.carryset.CarrySet;
    98import compiler.lang.carryset.CarrySet2Lang;
    109import compiler.lang.pablo.BuiltinsUtil;
     10import compiler.pabloS.ast.helpers.Accessors;
     11import compiler.pabloS.ast.helpers.Generators;
    1112
    1213// TODO - Add while type to switch on/off carry in mode. Carry in is an internal to this visitor.
  • proto/pablo/src/compiler/transformers/visitors/CodeXFormer.java

    r2713 r2749  
    22
    33
    4 import ast.ASTNode;
    5 import ast.ASTVisitor.Default;
     4import pabloS.ast.ASTNode;
     5import pabloS.ast.ASTVisitor.Default;
    66import compiler.transformers.visitors.helpers.CodeStore;
    77
  • proto/pablo/src/compiler/transformers/visitors/DumpAssignStmtsXFormer.java

    r2713 r2749  
    11package compiler.transformers.visitors;
    22
    3 import ast.*;
    4 import compiler.ast.Accessors;
    5 import compiler.ast.Generators;
     3import pabloS.ast.*;
    64import compiler.lang.pablo.Builtins;
    75import compiler.lang.pablo.Builtins2Lang;
     6import compiler.pabloS.ast.helpers.Accessors;
     7import compiler.pabloS.ast.helpers.Generators;
    88
    99public class DumpAssignStmtsXFormer {
  • proto/pablo/src/compiler/transformers/visitors/Pablo2CarryXFormer.java

    r2713 r2749  
    44import java.util.List;
    55
    6 import ast.*;
    7 import compiler.ast.Accessors;
    8 import compiler.ast.Generators;
     6import pabloS.ast.*;
    97import compiler.lang.carryset.CarrySet;
    108import compiler.lang.carryset.CarrySet2Lang;
    119import compiler.lang.idisa.SIMD;
    1210import compiler.lang.pablo.*;
     11import compiler.pabloS.ast.helpers.Accessors;
     12import compiler.pabloS.ast.helpers.Generators;
    1313
    1414//TODO - Add while type to switch on/off carry in mode. Carry in is an internal to this visitor.
  • proto/pablo/src/compiler/transformers/visitors/StreamFuncVisitor.java

    r2713 r2749  
    33import java.util.*;
    44
    5 import ast.*;
    6 import lexicalAnalyzer.LexicalType;
    7 import tokens.IdentifierToken;
    8 import compiler.ast.Accessors;
    9 import compiler.ast.Generators;
     5import pabloS.ast.*;
     6import pabloS.lexicalAnalyzer.LexicalType;
     7import pabloS.tokens.IdentifierToken;
     8import compiler.pabloS.ast.helpers.Accessors;
     9import compiler.pabloS.ast.helpers.Generators;
    1010
    1111
  • proto/pablo/src/compiler/transformers/visitors/helpers/AssertCompare.java

    r2713 r2749  
    33import compiler.transformers.visitors.ASTAssertCompareVisitor;
    44
    5 import ast.*;
     5import pabloS.ast.*;
    66
    77public class AssertCompare {
  • proto/pablo/src/compiler/transformers/visitors/helpers/UnparserUtil.java

    r2713 r2749  
    11package compiler.transformers.visitors.helpers;
    22
    3 import ast.*;
     3import pabloS.ast.*;
    44
    55import java.util.Iterator;
  • proto/pablo/src/grammar/TestPabloSAbstractSyntaxTree.java

    r2710 r2749  
    99import java.io.FileReader;
    1010import java.io.IOException;
    11 
    1211import java.io.PrintStream;
    1312
    14 import applications.SampleApplication;
    15 import  ast.ASTNode;
    16 import  ast.ASTPrinter;
    17 
    18 import  parser.Parser;
    19 
    20 import  lexicalAnalyzer.LexicalController;
    21 import  tokens.Tokens;
     13import  pabloS.applications.SampleApplication;
     14import  pabloS.ast.ASTNode;
     15import  pabloS.ast.ASTPrinter;
     16import  pabloS.parser.Parser;
     17import  pabloS.lexicalAnalyzer.LexicalController;
     18import  pabloS.tokens.Tokens;
    2219
    2320import java.io.File;
     
    3229 **/
    3330
    34 public class TestPabloAbstractSyntaxTree extends SampleApplication {
     31public class TestPabloSAbstractSyntaxTree extends SampleApplication {
    3532        /** Prints abstract syntax tree of a Sample file.
    3633         *  Prints errors if syntax incorrect.
Note: See TracChangeset for help on using the changeset viewer.