Changeset 2366


Ignore:
Timestamp:
Sep 14, 2012, 7:50:47 PM (7 years ago)
Author:
ksherdy
Message:

Updated Pablo grammar.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • proto/pablo/input/grammar/scatter/pablo.scatter

    r2362 r2366  
    2020  tokens {
    2121 
    22 //      TYPEDEF,
     22        TYPEDEF,
     23        VAR,
    2324        FUNCTION,       
    2425        STREAM,
     
    6061
    6162nodes {
    62   binaryOperator {} [expression, expression1],
    63   unaryOperator {} [expression2,expression3],
    64   postfixOperator {} [expression4],
    65 //  compoundVariable {} [compoundVariableTail],
    66 //  assignment {} [assignmentExprTail],
    67 //  ifStatement {} [ifStatementBulk],
     63  binaryOperator {} [expression, expression1, expression4],
     64  unaryOperator {} [expression2, expression5],
     65  postfixOperator {} [expression5Rest],
    6866  functionCall {} [functionCallRest],
    69 //  tupleIndex {} [tupleIndexTail],
    70 //  tupleIdentifier {} [tupleTail],
    71 //  localDeclaration {} [localDeclarationTail], // variable definitions
    72 //  ASTNode [variableFunctionCall], //[assignmentOrFunctionInvocation, variableOrFunctionInvocation],
     67  //assignmentStatement {} [functionCallOrAssignmentStatement],
    7368}
    7469
    7570grammar {
    76         program         -> (typeDecl | functionDef)*;
    77 
    78     //
    79         // t y p e   d e c l a r a t i o n s             
    80         //
    81         typeDecl                                ->  type directDeclaratorList? TERMINATOR ? ;
    82     directDeclaratorList        #-> identifier (COMMA identifier)* ;
    83        
    84         //
    85         // t y p e   d e f i n i t i o n s                     
    86         //
    87         // typeDef                      ->  TYPEDEF type directDeclaratorList TERMINATOR ? ;
     71        program         -> (declarations | functionDef ) *;
     72
     73        //
     74        // t o p - l e v e l 
     75        //
     76       
     77        //
     78        // d e c l a r a t i o n s
     79        //
     80        declarations                    #-> (typeDecl | typeDef) TERMINATOR ;
     81
     82        typeDecl                                ->  type ;
     83               
     84        typeDef                                 ->  TYPEDEF type declaratorList ? ;
     85       
     86        declaratorList                  ->  identifier (COMMA identifier)? ;
     87       
    8888   
    8989    //
    9090        // f u n c t i o n   d e f i n i t i o n s                                                             
    9191        //
    92         functionDef             -> FUNCTION type functionName LROUND (parameter (COMMA parameter)*)? RROUND blockStatement TERMINATOR ?;                               
     92        functionDef             -> FUNCTION type functionName LROUND (parameter (COMMA parameter)*)? RROUND blockStatement TERMINATOR?;                         
    9393                                                                               
    94         returnType              #-> type;
     94        returnType              #-> type ;
    9595                                                                                                               
    9696        functionName    #-> identifier ;
     
    103103               
    104104        //
     105        // f u n c t i o n - l e v e l 
     106        //
     107       
     108        //
    105109        // s t a t e m e n t s
    106110        //
    107         statement                                                       #-> (localDecl | functionCallOrAssignmentStatement | ifStatement | whileStatement | returnStatement) (TERMINATOR)?      ;
    108        
    109         localDecl                                                       -> typeDecl ( assignmentStatement)? ;
    110        
    111         functionCallOrAssignmentStatement       ->  expression3 (assignmentStatement _promote_ )?;
    112                
     111        statement                                                       #-> (localVarDecl | functionCallOrAssignmentStatement | ifStatement | whileStatement | returnStatement) TERMINATOR?     ;
     112       
     113        localVarDecl                                            -> VAR type localVarDeclList ;
     114       
     115        localVarDeclList                                        -> localVarDecl (COMMA localVarDecl)* ;
     116               
     117        localVarDecl                                            -> identifier (assignmentStatement _promote_) ?;
     118               
     119        functionCallOrAssignmentStatement       #->  expression3 (assignmentStatement _promote_ )?;
     120                       
    113121        assignmentStatement                                     -> assignmentOperator expression ;
    114        
    115         functionCall                                            -> functionCallRest ;
    116        
     122               
    117123        assignmentOperator                                      -> ASSIGN | AND_ASSIGN | OR_ASSIGN | NOT_ASSIGN | XOR_ASSIGN ;                         
    118124                                       
    119         ifStatement                                                     -> IF LROUND expression RROUND blockStatement (ELSE blockStatement)? ;
    120                                                        
    121         whileStatement                                          -> WHILE LROUND expression RROUND blockStatement ;
     125        ifStatement                                                     -> IF LROUND ifCondition RROUND blockStatement (ELSE blockStatement)? ;
     126                                                       
     127        ifCondition                                                     -> expression ;                                         
     128                                                       
     129        whileStatement                                          -> WHILE LROUND whileCondition RROUND blockStatement ;
     130       
     131        whileCondition                                          -> expression ;
    122132       
    123133        returnStatement                                         -> RETURN (expression)? ;
    124134       
     135       
    125136        //
    126137        // e x p r e s s i o n s
     
    131142                                       
    132143        expression2             #-> NOT^^? expression3 _leftAssoc_ ;
    133                                                                                        
    134         expression3             #-> expression5 (expression4)?
     144       
     145        expression3             #-> LROUND expression RROUND
     146                                        | INTEGER_CONST
     147                                        | identifier (
     148                                                (functionCallRest _promote_)?
     149                                                | (expression4 _promote_)?
     150                                                | (expression5 _promote_)?
     151                                        )?
    135152                                        ;
    136        
    137         expression4             #-> (DOT^^ identifier expression4?)?
    138                                         | (LSQUARE INTEGER_CONST^^ RSQUARE expression4?)?
    139                                         | (functionCallRest)?
    140                                         ;
     153
     154        expression4             -> DOT expression3 ;
    141155                                               
    142         expression5             #-> identifier
    143                                         | constant
    144                                         | LROUND expression RROUND
    145                                         ;                                                                       
    146        
     156        expression5     -> (LSQUARE INTEGER_CONST^^ RSQUARE) (expression5Rest)?   ;     
     157               
     158        expression5Rest -> DOT expression ;     
     159               
     160        integer                 -> INTEGER_CONST ;                                                                                     
     161                                                                                                                                                                               
    147162        functionCallRest                -> LROUND^^ (argumentExpressionList)? RROUND;
    148163       
     
    153168        identifier                              -> IDENTIFIER ;
    154169       
    155     //    
     170    //   
    156171        // t y p e s
    157172        //
     
    161176        // s t r e a m
    162177
    163         type                    ->  streamType | structType | tupleType | VOID ; // | identifier;
     178        type                    ->  streamType | structType | tupleType | VOID | identifier;
    164179       
    165180        streamType              ->      STREAM (LANGLE fieldWidth RANGLE)? ;   
Note: See TracChangeset for help on using the changeset viewer.