Ignore:
Timestamp:
Mar 28, 2013, 7:02:08 PM (6 years ago)
Author:
ksherdy
Message:

Grammar updates. Eliminated optional fw on stream types. Removed typedef.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • proto/pabloj/trunk/input/grammar/scatter/pabloB.scatter

    r2919 r2981  
    33// 2-December-2012
    44//
    5 // PabloBlock (block-at-a-time language)
     5// PabloB (block-at-a-time language)
    66//
    77// Type System
     
    1717// BitBlock - a special type that evaluates uint128 or uint256
    1818//            at compile time based on the target architecture
    19 // Boolean
     19//
    2020// String Constant
    2121//
    2222// Compound Types
    2323//
    24 // ...
     24// Stream Structure (record type)
    2525//
    2626// Comments
     
    5656  tokens {
    5757 
     58        INIT,
    5859        VAR,
    5960        KERNEL,
     
    6263        STRUCT,
    6364        VOID,
    64         INIT,
    65                
     65       
     66        UINT8,
     67        UINT16,
     68        UINT32,
     69        UINT64,
     70        UINT128,
     71        UINT256,
     72        // BITBLOCK // alias for architecture dependent SIMD instruction width
     73       
    6674        IF,
    6775        ELSE,
     
    6977        RETURN,
    7078
    71         AND   "&",
    72         OR    "|",
    73         NOT   "~",
    74         XOR   "^",
    7579        ASSIGN      "=",
    76         AND_ASSIGN  "&=",
    77         OR_ASSIGN   "|=",
    78         XOR_ASSIGN  "^=",       
    7980        LANGLE          "<",
    8081        RANGLE          ">",
     
    9091        TERMINATOR  ";",
    9192        DOT                     ".",
    92         MINUS           "-",
     93       
    9394  }
    9495}
     
    100101
    101102nodes {
    102   binaryOperator {} [expr, expr1],//, expr4],
    103   unaryOperator {} [expr2],// expr5],
    104103  assign {} [assignRest],
    105104  funcCall {} [funcCallRest],
     105  idisaCall {} [idisaCallRest],
    106106  integerConstant{intValued;} [],
    107107  streamConstant{intValued;} [],
     
    176176        stmt                                    #-> (funcCallOrAssignStmt | ifStmt | whileStmt | returnStmt | localVarDecl) (TERMINATOR)? ;
    177177                       
    178         funcCallOrAssignStmt    -> compoundIdentifier ((funcCallRest _promote_) | (assignRest _promote_)) TERMINATOR ;
     178        funcCallOrAssignStmt    -> compoundIdentifier ( (idisaCallRest _promote_) | (funcCallRest _promote_) | (assignRest _promote_)) TERMINATOR ;
    179179       
    180180        funcCallRest                    -> LROUND^ funcCallArgList RROUND ;
    181 
    182         funcCallArgList                 -> (expr (COMMA expr)*)? ;     
    183                
    184         assignOperator                  -> ASSIGN | AND_ASSIGN | OR_ASSIGN | XOR_ASSIGN ;                               
     181       
     182        funcCallArgList                 -> (expr (COMMA expr)*)? ;
     183       
     184        idisaCallRest                   -> LANGLE^ fieldWidth RANGLE LROUND idisaCallArgList RROUND;
     185
     186        idisaCallArgList                -> (expr (COMMA expr)*)? ;     
     187               
     188        assignOperator                  -> ASSIGN;                             
    185189                                       
    186190        assignRest                              -> assignOperator^! expr ;                             
     
    192196        returnStmt                              -> RETURN (expr)? TERMINATOR ;
    193197                       
    194         localVarDecl                    -> VAR type VarName (assignOperator^! expr) ? ;
    195                
    196         VarName                                 #-> identifier ;
     198        localVarDecl                    -> VAR type varName (assignOperator^! expr) ? ;
     199               
     200        varName                                 #-> identifier ;
    197201
    198202        blockStmt                               -> LCURLY stmt* RCURLY ;
     
    201205        // e x p r e s s i o n s
    202206        //     
    203         expr            #->     expr1 ((OR^|XOR^) expr)? ;
    204                                        
    205         expr1           #-> expr2 ((AND^) expr1)? ;
    206                                        
    207         expr2           #-> NOT^^? expr3  _leftAssoc_;
    208        
    209         expr3           #-> LROUND expr RROUND
    210                                         | streamConstant
     207        expr            #-> integerConstant
    211208                                        | stringConstant
    212                                         | compoundIdentifier (funcCallRest _promote_)?
     209                                        | compoundIdentifier (funcCallRest _promote_ | idisaCallRest _promote_)?
    213210                                        ;
    214211                                                                                                                                                                                       
    215         constant                                #->  stringConstant | signedIntegerConstant ; 
    216                
    217         streamConstant                  -> INTEGER_CONST {@value = @@value;} ;
    218        
    219         signedIntegerConstant   #-> MINUS integerConstant {@:value = 0 - @:value;}
    220                                             | integerConstant ;
    221                                            
     212        constant                                #->  stringConstant | integerConstant ; 
     213                                                                   
    222214        integerConstant                 -> INTEGER_CONST {@value = @@value;} ;
    223215       
     
    226218        compoundIdentifier              #-> identifier (DOT^ identifier)* ;
    227219                                                       
    228         identifier                              -> IDENTIFIER ;
     220        identifier                              -> IDENTIFIER ;   
    229221       
    230222    //   
     
    236228        //
    237229
    238         type                    #->  streamType | structType | void | identifier ; // | tupleType;
     230        type                    #->  streamType | structType | void | identifier | integerType ; // | tupleType;
    239231       
    240232        streamType              ->      STREAM (LANGLE fieldWidth RANGLE)? ;   
     
    243235       
    244236        streamTypeName  #->     identifier ;                           
     237               
     238        integerType             -> UINT8 | UINT16 | UINT32 | UINT64 | UINT128 | UINT256 ;       
    245239               
    246240        //     
Note: See TracChangeset for help on using the changeset viewer.