Changeset 4007 for proto/s2k


Ignore:
Timestamp:
Aug 16, 2014, 5:58:08 PM (5 years ago)
Author:
ksherdy
Message:

Minor edits.

File:
1 edited

Legend:

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

    r3840 r4007  
    4646        VOID,
    4747        BOOL,
    48         BITFIELD    "BitField",
    49         BITBLOCK    "BitBlock",
     48        BITFIELD         "BitField",
     49        BITBLOCK         "BitBlock",
    5050        //CODEBLOCK,
    5151        IF,
     
    6363        PLUS            "+",
    6464        MINUS           "-",
    65         ASSIGN      "=",
    66         LANGLE      "<",
    67         RANGLE      ">",
    68         LCURLY      "{",
    69         RCURLY      "}",
    70         LROUND      "(",
    71         RROUND      ")",
    72         LSQUARE     "[",
    73         RSQUARE     "]",
    74         COMMA       ",",
    75         TERMINATOR  ";",
    76         DOT         ".",
    77         DDOT        "..",
     65        ASSIGN          "=",
     66        LANGLE          "<",
     67        RANGLE          ">",
     68        LCURLY          "{",
     69        RCURLY          "}",
     70        LROUND          "(",
     71        RROUND          ")",
     72        LSQUARE         "[",
     73        RSQUARE         "]",
     74        COMMA           ",",
     75        TERMINATOR      ";",
     76        DOT             ".",
     77        DDOT           "..",
    7878    }
    7979}
     
    162162    // s t a t e m e n t s
    163163    //
    164     stmt                    #-> varDecl | funcCallOrAssignStmt | returnStmt | ifStmt | whileStmt  | forStmt ;
     164    stmt                    #-> varDecl | funcCallOrAssignStmt | returnStmt | ifStmt | whileStmt | forStmt ;
     165    blockStmt               ->  LCURLY stmt* RCURLY ;
    165166    varDecl                 ->  type identifier TERMINATOR ;
    166167    funcCallOrAssignStmt    #-> expr (assignRest _promote_) ? TERMINATOR ; // KH: Add SA pass to validate expr is a function call type   
     
    172173   
    173174    // KH: add forStmt SA, lowerBound <= upperBound, stride != 0
    174     forStmt                     ->      FOR identifier IN range stride blockStmt ;
    175         // indexTypeDecl            ->      indexType identifier;
    176         range                       ->      lowerBoundExpr DDOT upperBoundExpr ;
    177         lowerBoundExpr              #->     expr ;
    178         upperBoundExpr              #->     expr ;
    179         stride                      ->      (BY integerConstant) | (epsilon {@value = 1;}) ;
    180 
    181     blockStmt               ->  LCURLY stmt* RCURLY ;
     175        // KH: count controlled for loop to support reductions         
     176        forStmt                     ->      FOR identifier IN stridedRange blockStmt ;
     177        //indexTypeDecl             ->      indexType identifier ; // ?
     178    stridedRange                ->      range step ;
     179    range                       ->      integerConstant DDOT integerConstant ;
     180    step                        #->     (BY integerConstant) | epsilon {@value = 1;} ;
    182181
    183182    //
    184183    // e x p r e s s i o n s
    185184    //   
    186         expr                 #-> expr1 ((OR^|XOR^) expr)? _leftAssoc_ ;
    187     expr1                #-> expr2 ((AND^) expr1)? _leftAssoc_ ;
    188     expr2                #-> NOT^^? expr3;                                         
    189     expr3                #-> expr4 ((MULTIPLY^ | DIVIDE^) expr3)? _leftAssoc_ ;
    190     expr4                #-> expr5 ((PLUS^ | MINUS^) expr4)? _leftAssoc_ ;
    191     expr5                #-> LROUND expr RROUND
    192                          | constant
    193                          | compoundIdentifier ((funcCallRest _promote_) | (idisaFuncCallRest _promote_)) ? ;
     185//    expr        #-> expr1 ((BY^) expr1)?                  _leftAssoc_ ;   
     186//    expr1       #-> expr2 ((RANGE^) expr2)?               _leftAssoc_ ;
     187    expr        #-> expr1 ((OR^) expr)?                   _leftAssoc_ ;
     188    expr1       #-> expr2 ((XOR^) expr1)?                 _leftAssoc_ ;
     189    expr2       #-> expr3 ((AND^) expr2)?                 _leftAssoc_ ;
     190    expr3       #-> expr4 ((PLUS^ | MINUS^) expr3)?       _leftAssoc_ ;
     191    expr4       #-> expr5 ((MULTIPLY^ | DIVIDE^) expr4)?  _leftAssoc_ ;
     192    expr5       #-> ((PLUS^^ | MINUS^^)? expr6) | ((NOT^^)* expr6)                          ;
     193    expr6       #-> compoundIdentifier ((funcCallRest _promote_) | (idisaFuncCallRest _promote_)) ? 
     194                |   LROUND expr RROUND
     195                |   constant ;
    194196
    195197    constant            #->     stringConstant | integerConstant ;
Note: See TracChangeset for help on using the changeset viewer.