Changeset 4008 for proto


Ignore:
Timestamp:
Aug 16, 2014, 6:00:24 PM (5 years ago)
Author:
ksherdy
Message:

Minor edits.

File:
1 edited

Legend:

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

    r3840 r4008  
    2626        Integer    [INTEGER_CONST],
    2727        Identifier [IDENTIFIER],        // Java identifiers, except $ character. Produces Lextant tokens for keywords.
    28         Comment    [IGNORE] "#" "\n",      // Support parabix2_pablo debugging.
     28        Comment    [IGNORE] "#" "\n",   // Support parabix2_pablo debugging.
    2929        Comment    [IGNORE] "//" "\n",
    3030        Comment    [SQ_STRING] "'" "'",
    31         Comment    [IGNORE] "/*" "*/",     // Comment. Comment [STRING] "/*" "*/",
     31        Comment    [IGNORE] "/*" "*/",  // Comment. Comment [STRING] "/*" "*/",
    3232        String     [STRING],
    3333        Punctuator,
     
    4848        ELSE,
    4949        WHILE,
    50         FOR,            // KH: REDUCE ?
     50        FOR,         
     51        BY,       
    5152        FOREACH,
    5253        RETURN,
     
    7677        TERMINATOR      ";",
    7778        DOT             ".",
    78         DDOT            "..",
    79         BY,             
     79        DDOT            "..",     
    8080    }
    8181}
     
    9797    identifier              {hasBinding;}     [],
    9898    compoundIdentifier      {hasBinding;}     [],
    99     unaryOperator           {hasSignature;}   [expr2],
    100     binaryOperator          {hasSignature;}   [expr expr1 expr3 expr4],
     99    unaryOperator           {hasSignature;}   [expr5],
     100    binaryOperator          {hasSignature;}   [expr expr1 expr2 expr3 expr4],
    101101    assign                  {}                [assignRest],
    102102    funcCall                {hasSignature;}   [funcCallRest],
     
    104104    streamType              {hasFieldWidth;}  [],
    105105    integerConstant         {intValued;}      [fieldWidthSpecifier],
    106     stride                  {intValued;}      [],
     106    step                    {intValued;}      [],
    107107//  primitiveType           {}                [intType voidType], // KH: update S2K2B2k for primitiveType
    108108                       
     
    180180        streamDecl                  ->      streamType identifier ;
    181181         
    182         //for i in 0 .. log(STREAM_SIZE) by 1 {
    183         //      c = popcount<i>(c);
    184         //}
    185        
    186         //for (int i=lowerBoundExpr; i <= upperBoundExpr; i=i+intgerContant) { S }
    187                
    188         // KH: count controlled for loop
    189         // KH: eliminate 'int' type ?   
    190         forStmt                     ->      FOR identifier IN range stride blockStmt ;
    191         //indexTypeDecl               ->      indexType identifier ;
    192         range                       ->      lowerBoundExpr DDOT upperBoundExpr ;
    193         lowerBoundExpr              #->     expr ;
    194         upperBoundExpr              #->     expr ;
    195         stride                      ->      (BY integerConstant) | (epsilon {@value = 1;}) ;
    196        
     182        // KH: count controlled for loop to support reductions         
     183        forStmt                     ->      FOR identifier IN stridedRange blockStmt ;
     184        //indexTypeDecl             ->      indexType identifier ; // ?
     185    stridedRange                ->      range step ;
     186    range                       ->      integerConstant DDOT integerConstant ;
     187    step                        #->     (BY integerConstant) | epsilon {@value = 1;} ;
    197188
    198189    //annotationStmt    -> AMPERSAND identifier LROUND annotationArgList RROUND blockStmt TERMINATOR ;
     
    202193    // e x p r e s s i o n s
    203194    //   
    204     expr        #-> expr1 ((OR^|XOR^) expr)? _leftAssoc_ ;
    205     expr1       #-> expr2 ((AND^) expr1)? _leftAssoc_ ;
    206     expr2       #-> NOT^^? expr3;                                         
    207     expr3       #-> expr4 ((MULTIPLY^ | DIVIDE^) expr3)? _leftAssoc_ ;
    208     expr4       #-> expr5 ((PLUS^ | MINUS^) expr4)? _leftAssoc_ ;
    209     expr5       #-> LROUND expr RROUND
    210                 | constant
    211                 | compoundIdentifier ((funcCallRest _promote_) | (idisaFuncCallRest _promote_)) ? ;
     195   
     196    // follows C++ operator precedence, DNE IN operator since list types DNE
     197
     198//    expr        #-> expr1 ((BY^) expr1)?                  _leftAssoc_ ;   
     199//    expr1       #-> expr2 ((RANGE^) expr2)?               _leftAssoc_ ;
     200    expr        #-> expr1 ((OR^) expr)?                   _leftAssoc_ ;
     201    expr1       #-> expr2 ((XOR^) expr1)?                 _leftAssoc_ ;
     202    expr2       #-> expr3 ((AND^) expr2)?                 _leftAssoc_ ;
     203    expr3       #-> expr4 ((PLUS^ | MINUS^) expr3)?       _leftAssoc_ ;
     204    expr4       #-> expr5 ((MULTIPLY^ | DIVIDE^) expr4)?  _leftAssoc_ ;
     205    expr5       #-> ((PLUS^^ | MINUS^^)? expr6) | ((NOT^^)* expr6)                          ;
     206    expr6       #-> compoundIdentifier ((funcCallRest _promote_) | (idisaFuncCallRest _promote_)) ? 
     207                |   LROUND expr RROUND
     208                |   constant ;
    212209
    213210    constant                #-> stringConstant | integerConstant ;
Note: See TracChangeset for help on using the changeset viewer.