Changeset 2355


Ignore:
Timestamp:
Sep 2, 2012, 5:13:23 PM (7 years ago)
Author:
ksherdy
Message:

Pablo grammar, test cases, launchers initial check in. Additional work required.

Location:
proto/pablo
Files:
8 added
1 edited

Legend:

Unmodified
Added
Removed
  • proto/pablo/input/grammar/antlr/pablo.g

    r2354 r2355  
    3434// f u n c t i o n   d e f i n i t i o n                                                               
    3535functionDef
    36                                 : FUNCTION functionReturnTypeSpecifier functionName LROUND parameterList RROUND blockStatement 
     36                                : FUNCTION functionReturnTypeSpecifier functionName LROUND parameterList? RROUND blockStatement 
    3737                                ;                               
    3838                                                                       
     
    4747parameterList
    4848                                : parameter (COMMA parameter)*
    49                                 | // epsilon
    5049                                ;
    5150
     
    6362
    6463statementList
    65                                 :       statement*
     64                                : statement*
    6665                                ;
    6766
     
    8483
    8584compoundVariable
    86                                 : identifier ('.' identifier)*
     85                                : identifier (DOT identifier)*
    8786                                ;
    8887
     
    9695
    9796functionCall
    98                                 : compoundVariable LROUND expressionList RROUND
     97                                : compoundVariable LROUND expressionList? RROUND
    9998                                ;
    10099                               
     
    125124                                | constant
    126125                                ;
    127                                
     126
    128127variableFunctionTuple
    129128                                : compoundVariable (functionTail | tupleTail)? // TODO - Refer to Pablo grammar.
     
    131130                               
    132131functionTail
    133                                 : LROUND expressionList RROUND
     132                                : LROUND expressionList? RROUND
    134133                                ;
    135134                               
    136135expressionList
    137136                                : expression (COMMA expression)*
    138                                 | // epsilon
    139137                                ;
    140138                               
     
    143141                                ;
    144142                               
    145 index           :       INTEGER
     143index                   : INTEGER_CONST
    146144                                ;                               
    147145
    148146constant
    149                                 :       INTEGER // '-1' | '0' // 'AllOnes' | 'AllZeroes'
     147                                : INTEGER_CONST // '-1' | '0' // 'AllOnes' | 'AllZeroes'
    150148                                | SQ_STRING
    151149                                | DQ_STRING
     
    156154// t y p e s
    157155typeSpecifier           
    158                                 : streamTypeSpecifier | recordTypeSpecifier | tupleTypeSpecifier | identifier
     156                                : streamTypeSpecifier | structTypeSpecifier | tupleTypeSpecifier | identifier
    159157                                ;
    160158
    161159streamTypeSpecifier
    162                                 : STREAM LANGLE INTEGER RANGLE
    163                                 | STREAM // default of field width 1                   
     160                                : STREAM (LANGLE INTEGER_CONST RANGLE)? // default of field width 1                     
    164161                                ;
    165162       
    166 recordTypeSpecifier     
    167                                 :       RECORD identifier LCURLY recordTypeSpecifierBody RCURLY
    168                                 | RECORD identifier
    169                                 ;
    170                                
    171 recordTypeSpecifierBody
    172                                 : recordMember TERMINATOR (recordMember TERMINATOR)*
    173                                 ;
    174                                
    175 recordMember
    176                                 : typeSpecifier recordMemberName
    177                                 ;
    178 
    179 recordMemberName
     163structTypeSpecifier     
     164                                : STRUCT identifier (LCURLY structTypeSpecifierBody RCURLY)?
     165                                ;
     166                               
     167structTypeSpecifierBody
     168                                : structMember TERMINATOR (structMember TERMINATOR)*
     169                                ;
     170                               
     171structMember
     172                                : typeSpecifier structMemberName
     173                                ;
     174
     175structMemberName
    180176                                :       identifier
    181177                                ;
    182178
    183179tupleTypeSpecifier
    184                                 : TUPLE IDENTIFIER LROUND typeSpecifier (COMMA typeSpecifier)* RROUND
    185                                 | TUPLE IDENTIFIER
     180                                : TUPLE IDENTIFIER (LROUND typeSpecifier (COMMA typeSpecifier)* RROUND)?
    186181                                ;
    187182
     
    220215FUNCTION      : 'function';     
    221216STREAM        : 'stream'  ;
    222 RECORD        : 'struct'  ;
     217STRUCT        : 'struct'  ;
    223218TUPLE         : 'tuple'   ;
    224219VOID          : 'void'    ;
     
    226221SQ_STRING               : '\'' ('a'..'z' | 'A'..'Z'| '0'..'9' | ' ' | '-')* '\'';
    227222DQ_STRING               : '"' ('a'..'z' | 'A'..'Z'| '0'..'9' | ' ' | '-')* '"';
    228 IDENTIFIER      : ('a'..'z' | 'A'..'Z' | '_') ('a'..'z' | 'A'..'Z'| '0'..'9' | '_')*;
    229 INTEGER : ('0'..'9')+;
     223IDENTIFIER              : ('a'..'z' | 'A'..'Z' | '_') ('a'..'z' | 'A'..'Z'| '0'..'9' | '_')*;
     224INTEGER_CONST   : ('0'..'9')+;
    230225   
    231226WhiteSpace // Tab, vertical tab, form feed, space, non-breaking space and any other unicode "space separator".
Note: See TracChangeset for help on using the changeset viewer.