Changeset 3141 for proto/pabloj


Ignore:
Timestamp:
May 15, 2013, 11:55:19 AM (6 years ago)
Author:
shermer
Message:

start of grammar rewriting for installing type system--the type system itself is not ready for these changes, so don't compile this grammar yet.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • proto/pabloj/branches/refactor-experimental/input/grammar/scatter/pabloS.scatter

    r3134 r3141  
    1010//
    1111//
    12 types {}
     12
     13types {
     14        toolchain.pabloS.lang.type.Type,
     15        toolchain.pabloS.lang.type.PrimitiveType,
     16        toolchain.pabloS.lang.type.StreamType,
     17}
     18
    1319
    1420context main {
     
    3743//      TUPLE,
    3844        VOID,
     45        INT,
     46//      STRING,
    3947       
    4048        IF,
     
    7280
    7381nodes {
     82  ASTNode {Type type = null;} [],
    7483  binaryOperator {} [expr expr1],       //, expr4],
    7584  unaryOperator {} [expr2],                     // expr5],
     
    7887  // streamCall {} [streamCallRest],
    7988  integerConstant{intValued;} [],
     89  primitiveType{} [intType voidType],
     90  streamType{int fieldWidth = 1;} [],
    8091}
    8192
     
    119130        //
    120131        stmt                                    #-> (funcCallOrAssignStmt | ifStmt | whileStmt | returnStmt | localVarDecl) (TERMINATOR)? ;
    121                        
    122 //      funcCallOrAssignStmt    #-> expr ((funcCallRest _promote_) | (assignRest _promote_)) TERMINATOR  ; // | (idisaCallRest _promote_)
    123        
     132                               
    124133        funcCallOrAssignStmt    # -> expr (assignRest _promote_)? TERMINATOR ;
    125134       
     
    184193                                                       
    185194        identifier                              -> IDENTIFIER ;
    186        
     195     
     196     
     197           
    187198    //   
    188199        // t y p e s
    189200        //
    190201
    191         // p r i m i t i v e s   t y p e s
    192        
    193         // s t r e a m
    194 
    195         type                    #->     identifier              |
     202        type                    #->     typeName                |
     203                                                        primitiveType   |
    196204                                                        streamType              |
    197                                                         structType              |
    198                                                         voidType                ; // | tupleType;
    199        
    200         streamType              ->      STREAM LANGLE fieldWidth RANGLE ;       
    201                                        
    202         fieldWidth              ->  integerConstant ;   
    203                                        
     205                                                        structType              ;                       // | tupleType;
     206                                                       
     207        typeName                #->  identifier ;
     208       
     209       
     210        // p r i m i t i v e   t y p e s
     211       
     212        primitiveType   #-> ( intType | voidType ) ;
     213       
     214        intType                  -> INT    { @type = {{PrimitiveType.INT}};  } ;
     215        voidType                 -> VOID   { @type = {{PrimitiveType.VOID}}; } ;
     216       
     217       
     218        // s t r e a m
     219       
     220        streamType              ->      STREAM fieldWidthSpec!  {  @fieldWidth = @:value;
     221                                                                                           @type = {{ new StreamType(%?) }} , @fieldWidth ;
     222                                                                                        } ;
     223                                       
     224        fieldWidthSpec  #->  LANGLE integerConstant RANGLE ;   
     225                                       
     226       
     227       
    204228       
    205229        // c o m p o u n d   t y p e s
     
    217241        structMemberName                #-> identifier ;
    218242       
    219         voidType                                -> VOID ;
    220243       
    221244        // t u p l e
Note: See TracChangeset for help on using the changeset viewer.