Changeset 2356


Ignore:
Timestamp:
Sep 4, 2012, 5:14:59 PM (7 years ago)
Author:
ksherdy
Message:

Added node definitions and test cases.

Location:
proto/pablo
Files:
124 added
2 edited

Legend:

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

    r2355 r2356  
     1//
     2// Meta Symbols
     3//
     4// #                    - Compress node.
     5// _promote_    - Promote children to parent node.
     6// ^                    - Up.
     7// !                    - Omit node.
     8//
     9//
    110
    211context main {
     
    6170//  binaryOperator {} [expression, expression1, expression3],
    6271//  unaryOperator {} [expression2],
    63 //  assignment {} [assignmentStatementRest],
     72  assignment {} [assignmentStatementTail],
    6473//  ifStatement {} [ifStatementBulk],
    65 //  functionInvocation {} [functionInvocationRest],
     74  functionCall {} [functionCallTail],
    6675//  ASTNode [assignmentOrFunctionInvocation, variableOrFunctionInvocation],
    6776}
     
    8796        functionReturnTypeSpecifier     -> typeSpecifier | VOID ;
    8897                                                                                                               
    89         functionName    -> identifier ;
     98        functionName    #-> identifier ;
    9099                                                                                                                       
    91100        parameterList   -> parameter (COMMA parameter)* ;
     
    93102        parameter               -> typeSpecifier parameterName ;
    94103                                       
    95         parameterName   -> identifier ;
     104        parameterName   #-> identifier ;
    96105       
    97106        blockStatement  -> LCURLY statementList RCURLY ;
     
    102111        // s t a t e m e n t s
    103112        //
    104         statement                       -> (variableDefinition | assignmentStatement | ifStatement | functionCall | whileStatement | returnStatement) (TERMINATOR)?     ;
    105                                                
     113        statement                       -> (variableDefinition | assignmentStatementOrFunctionCall | ifStatement | whileStatement | returnStatement) (TERMINATOR)?      ;
     114                       
    106115        variableDefinition      -> typeSpecifier variableName (assignmentOperator expression)? ;
    107116                                       
    108         variableName            -> identifier ;
    109                                                
    110         assignmentStatement     -> compoundVariable assignmentOperator expression ;
     117        variableName            #-> identifier ;
     118       
     119        assignmentStatementOrFunctionCall -> compoundVariable (assignmentStatementTail _promote_ | functionCallTail _promote_) ;
     120       
     121        assignmentStatementTail -> assignmentOperator^! expression ;
     122       
     123        functionCallTail        -> LROUND expressionList? RROUND ;
    111124       
    112125        compoundVariable        -> identifier (DOT identifier)* ;
     
    115128                                       
    116129        ifStatement             -> IF LROUND expression RROUND blockStatement (ELSE blockStatement)? ;
    117        
    118         functionCall    -> compoundVariable LROUND expressionList RROUND ;
    119                                        
     130                                               
    120131        whileStatement  -> WHILE LROUND expression RROUND DO blockStatement     ;
    121132       
     
    136147                                       
    137148        variableFunctionTuple   -> compoundVariable (functionTail | tupleTail)? ;
    138                                        
     149                                               
    139150        functionTail                    -> LROUND expressionList? RROUND ;
    140151                                       
     
    157168        // t y p e s
    158169        //
    159         typeSpecifier                   ->      streamTypeSpecifier | structTypeSpecifier | tupleTypeSpecifier | identifier     ;
     170        typeSpecifier                   #-> streamTypeSpecifier | structTypeSpecifier | tupleTypeSpecifier;// | identifier      ;
    160171       
    161172        streamTypeSpecifier             ->      STREAM (LANGLE fieldWidth RANGLE)? ;   
    162173                                       
    163         fieldWidth                              -> INTEGER_CONST ;                                     
     174        fieldWidth                              ->  INTEGER_CONST ;                                     
    164175               
    165176        structTypeSpecifier             ->      STRUCT identifier (LCURLY structTypeSpecifierBody RCURLY)? ;
    166177                                       
    167         structTypeSpecifierBody ->      structMember TERMINATOR (structMember TERMINATOR)* ;
     178        structTypeSpecifierBody -> structMember TERMINATOR (structMember TERMINATOR)* ;
    168179                                       
    169180        structMember                    ->      typeSpecifier structMemberName ;
    170181       
    171         structMemberName                ->      identifier ;
     182        structMemberName                #-> identifier ;
    172183       
    173184        tupleTypeSpecifier              ->      TUPLE IDENTIFIER (LROUND typeSpecifier (COMMA typeSpecifier)* RROUND)? ;                               
  • proto/pablo/input/test/test.pablo

    r2355 r2356  
    1 typedef struct BasisBits BasisBits;
     1function void Assignments() {
     2        stream s = 4;
     3        stream s &= 4;
     4        stream s |= 4;
     5        stream s ~= 4;
     6        stream s ^= 4;
     7};
Note: See TracChangeset for help on using the changeset viewer.