Ignore:
Timestamp:
Apr 3, 2014, 7:36:49 PM (5 years ago)
Author:
ksherdy
Message:

Added graph to b2k. Updated grammars. Added S2K to B2K support.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • proto/s2k/trunk/framework/input/grammar/scatter/s2k.scatter

    r3777 r3782  
    3838  // t o k e n s
    3939    tokens {
     40        GRAPH,   
    4041        FILTER,
    4142        IN,
     
    5556        MULTIPLY        "*",
    5657        DIVIDE          "/",
    57         ADD             "+",
    58         SUBTRACT        "-",
     58        PLUS            "+",
     59        MINUS           "-",
    5960        ASSIGN          "=",
    6061        AND_ASSIGN      "&=",
     
    6364        MULTIPLY_ASSIGN "*=",
    6465        DIVIDE_ASSIGN   "/=",
    65         ADD_ASSIGN      "+=",
    66         SUBTRACT_ASSIGN "-=",
     66        PLUS_ASSIGN     "+=",
     67        MINUS_ASSIGN    "-=",
    6768        LANGLE          "<",
    6869        RANGLE          ">",
     
    105106grammar {
    106107
    107     program     -> (structDef | filterDef) *;    // ( filterDef )* graph;
    108 
    109     //
    110     // s t r e a m   s t r u c t   d e f i n i t i o n s
     108    program     -> ( structDef | filterDef ) * graphDef * ;
     109
     110    //
     111    // s t r e a m   s t r u c t   d e f i n i t i o n
    111112    //
    112113    structDef             ->  STRUCT structName structDefBody TERMINATOR? ;
     
    118119    // KH: user-defined stream functions?
    119120    //
    120     // s t r e a m   f u n c t i o n   d e f i n i t i o n s 
    121     //
    122     //funcDef             ->  FUNCTION returnType filterName LROUND parameterList RROUND blockStmt TERMINATOR? ;
    123     //returnType          ->  type;                     
    124     //parameterList       ->  (parameter (COMMA parameter)*)?;
    125     //funcName            #-> identifier ;
    126     //parameter           ->  type parameterName ;
    127     //parameterName       #-> identifier ;
    128 
    129     //
    130     // s t r e a m   f i l t e r   ( p r o c e d u r e )  d e f i n i t i o n s
    131     //
    132     filterDef             ->  FILTER filterName LROUND filterParameterList RROUND blockStmt TERMINATOR? ;               
    133     filterName            #-> identifier ;
    134     filterParameterList   ->  ( filterParameter (COMMA filterParameter)* ) ? ;
    135     filterParameter       ->  filterParameterMode? type filterParameterName ;
    136     filterParameterMode   ->  (IN | OUT | INOUT) ; // KH: not implemented
    137     filterParameterName   #-> identifier ;
     121    // s t r e a m   f u n c t i o n   d e f i n i t i o n   
     122    //
     123    //funcDef             ->  FUNCTION funcReturnType funcName LROUND funcParameterList RROUND funcBody TERMINATOR? ;
     124    //funcReturnType      #-> type;                     
     125    //funcParameterList   ->  ( funcParameter (COMMA funcParameter)* ) ? ;
     126    //funcPName           #-> identifier ;
     127    //funcParameter       ->  type funcParameterName ;
     128    //funcParameterName   #-> identifier ;
     129
     130    //
     131    // s t r e a m   f i l t e r   ( p r o c e d u r e )  d e f i n i t i o n
     132    //
     133    filterDef                   ->  FILTER filterName LROUND filterParameterList RROUND blockStmt TERMINATOR? ;               
     134    filterName                  #-> identifier ;
     135    filterParameterList         ->  ( filterParameter (COMMA filterParameter)* ) ? ;
     136    filterParameter             ->  filterParameterMode? type filterParameterName ;
     137    filterParameterMode         ->  (IN | OUT | INOUT) ; // KH: not implemented
     138    filterParameterName         #-> identifier ;
     139
     140    //
     141    // s t r e a m   g r a p h  ( p i p e l i n e )  d e f i n i t i o n
     142    //   
     143    graphDef                    ->  GRAPH graphName LROUND graphParameterList RROUND graphBody TERMINATOR ? ;
     144   
     145    graphName                   #-> identifier ;
     146    graphParameterList          ->  ( graphParameter (COMMA graphParameter)* ) ? ; // KH: implement as a 'modal' parameter
     147    graphParameter              ->  graphParameterMode? type graphParameterName ;
     148    graphParameterMode          ->  (IN | OUT | INOUT) ;
     149    graphParameterName          #-> identifier ;
     150   
     151    graphBody                   ->  LCURLY graphVarDecl * addFilterStmt * RCURLY ;
     152   
     153    graphVarDecl                #->  structDecl | filterDecl ;
     154    structDecl                  ->  structType structName TERMINATOR ;
     155    filterDecl                  ->  filterType filterName TERMINATOR ;
     156    // graphDecl                ->  GRAPH graphName TERMINATOR ;
     157   
     158    addFilterStmt                   ->  filterVarName LROUND filterArgList RROUND TERMINATOR ;
     159    filterVarName               #-> identifier ;
     160    filterArgList               ->  (filterArgName (COMMA filterArgName) *) ? ;
     161    filterArgName               #-> identifier ; 
    138162
    139163    //
     
    147171    assignRest                  ->      assignOperator^! expr ;
    148172    assignOperator              ->      ASSIGN | AND_ASSIGN | OR_ASSIGN | XOR_ASSIGN |
    149                                         MULTIPLY_ASSIGN | DIVIDE_ASSIGN | ADD_ASSIGN | SUBTRACT_ASSIGN ;       
     173                                        MULTIPLY_ASSIGN | DIVIDE_ASSIGN | PLUS_ASSIGN | MINUS_ASSIGN ;       
    150174    ifStmt                      ->      IF LROUND expr RROUND blockStmt (ELSE blockStmt)? ;                         
    151175    whileStmt                   ->      WHILE LROUND expr RROUND blockStmt ;
     
    165189    expr2       #-> NOT^^? expr3;                                         
    166190    expr3       #-> expr4 ((MULTIPLY^ | DIVIDE^) expr3)? _leftAssoc_ ;
    167     expr4       #-> expr5 ((ADD^ | SUBTRACT^) expr4)? _leftAssoc_ ;
     191    expr4       #-> expr5 ((PLUS^ | MINUS^) expr4)? _leftAssoc_ ;
    168192    expr5       #-> LROUND expr RROUND
    169193                | constant
     
    176200                                                                                                                                   
    177201    constant                #-> stringConstant | integerConstant ;
    178     integerConstant         ->     INTEGER_CONST {@value = @@value;} ;
    179     stringConstant          ->     STRING | SQ_STRING ;   
     202    integerConstant         ->  INTEGER_CONST {@value = @@value;} ;
     203    stringConstant          ->  STRING | SQ_STRING ;   
    180204    compoundIdentifier      #-> identifier (DOT^ identifier)?;
    181     identifier              ->     IDENTIFIER ;
    182     funcCallRest            ->     LROUND^ funcCallArgList RROUND ;
    183     funcCallArgList         ->     (expr (COMMA expr)*) ? ;     
     205    identifier              ->  IDENTIFIER ;
     206    funcCallRest            ->  LROUND^ funcCallArgList RROUND ;
     207    funcCallArgList         ->  (expr (COMMA expr)*) ? ;     
    184208
    185209// TODO - idisa function call simd.popcount<>(); -> simd.popcount<128>() + ... + simd.popcount<128>()
     
    193217    type                    #->     primitiveType   |
    194218                                    streamType      |
    195                                     structType;
     219                                    structType      |
     220                                    filterType      ;
    196221
    197222    primitiveType           #->     ( intType ) ;
     
    205230    structName              #->      identifier ;               
    206231
    207     //
    208     // s t r e a m   g r a p h
    209     //
    210 
    211     // graph              ->  LCURLY filterCall* RCURLY TERMINATOR ? ;  // add varDecl* first impl
    212     // filterCall         ->  filterName LROUND RROUND TERMINATOR ;
    213     // filterCallArgList  ->  (expr (COMMA expr)*) ? ; 
    214 
    215     //graph {
    216     //  doProcess(fread("fin"), fwrite("out));
    217     //} 
    218 
    219 }
     232    filterType              ->       FILTER filterName ;       
     233    filterName              #->      identifier ;
     234}
Note: See TracChangeset for help on using the changeset viewer.