Ignore:
Timestamp:
Dec 4, 2012, 6:11:40 PM (6 years ago)
Author:
ksherdy
Message:

Initial check in to support both PabloS (stream language syntax) and PabloB (block language syntax).

File:
1 moved

Legend:

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

    r2710 r2749  
    22// Ken Herdy
    33// 8-September-2012
     4//
     5// PabloS (unbounded stream language)
    46//
    57context main {
     
    6466  binaryOperator {} [expr, expr1],//, expr4],
    6567  unaryOperator {} [expr2],// expr5],
    66   Assign {} [AssignRest],
    67   FuncCall {} [FuncCallRest],
     68  assign {} [assignRest],
     69  funcCall {} [funcCallRest],
    6870  integerConstant{intValued;} [],
    6971}
    7072
    7173grammar {
    72         program         -> (typeDecl | typeDef | FuncDef) *;
     74        program         -> (typeDecl | typeDef | funcDef) *;
    7375
    7476        //
     
    9193   
    9294    //
    93         // f u n c t i o n   d e f i n i t i o n s      // d e c l a r a t i o n s ?                                                   
    94         //
    95         FuncDef                 -> FUNCTION type FuncName LROUND parameterList? RROUND blockStmt TERMINATOR?;                           
     95        // f u n c t i o n   d e c l a r a t i o n s ?                                                 
     96        //
     97        funcDef                 -> FUNCTION type funcName LROUND parameterList? RROUND blockStmt TERMINATOR?;                           
    9698                                                                               
    9799        returnType              #-> type ;      // Note: Strictly not required.
     
    99101        parameterList   -> parameter (COMMA parameter)*;
    100102                                                                                                               
    101         FuncName                #-> identifier ;
     103        funcName                #-> identifier ;
    102104                                                                                                                       
    103105        parameter               -> type parameterName ;
     
    112114        // s t a t e m e n t s
    113115        //
    114         Stmt                                    #-> (FuncCallOrAssignStmt | ifStmt | whileStmt | returnStmt | localVarDecl) (TERMINATOR)? ;
     116        stmt                                    #-> (funcCallOrAssignStmt | ifStmt | whileStmt | returnStmt | localVarDecl) (TERMINATOR)? ;
    115117                       
    116         FuncCallOrAssignStmt    -> compoundIdentifier ((FuncCallRest _promote_) | (AssignRest _promote_)) TERMINATOR ;
    117        
    118         FuncCallRest                    -> LROUND^ FuncCallArgList RROUND ;
    119 
    120         FuncCallArgList                 -> (expr (COMMA expr)*)? ;     
    121                
    122         AssignOperator                  -> ASSIGN | AND_ASSIGN | OR_ASSIGN | XOR_ASSIGN ;                               
    123                                        
    124         AssignRest                              -> AssignOperator^! expr ;                             
     118        funcCallOrAssignStmt    -> compoundIdentifier ((funcCallRest _promote_) | (assignRest _promote_)) TERMINATOR ;
     119       
     120        funcCallRest                    -> LROUND^ funcCallArgList RROUND ;
     121
     122        funcCallArgList                 -> (expr (COMMA expr)*)? ;     
     123               
     124        assignOperator                  -> ASSIGN | AND_ASSIGN | OR_ASSIGN | XOR_ASSIGN ;                               
     125                                       
     126        assignRest                              -> assignOperator^! expr ;                             
    125127                                       
    126128        ifStmt                                  -> IF LROUND expr RROUND blockStmt (ELSE blockStmt)? ;                 
     
    130132        returnStmt                              -> RETURN (expr)? TERMINATOR;
    131133                       
    132         localVarDecl                    -> VAR type VarName (AssignOperator^! expr) ?;
     134        localVarDecl                    -> VAR type VarName (assignOperator^! expr) ?;
    133135               
    134136        VarName                                 #-> identifier;
    135137
    136         blockStmt                               -> LCURLY Stmt* RCURLY ;
     138        blockStmt                               -> LCURLY stmt* RCURLY ;
    137139       
    138140        //
     
    147149        expr3           #-> LROUND expr RROUND
    148150                                        | constant
    149                                         | compoundIdentifier (FuncCallRest _promote_)?
     151                                        | compoundIdentifier (funcCallRest _promote_)?
    150152                                        ;
    151153
    152154                                        //(
    153                                         //(FuncCallRest _promote_)?
     155                                        //(funcCallRest _promote_)?
    154156                                        //| (expr4 _promote_)?
    155157                                        //| (expr5 _promote_)?
Note: See TracChangeset for help on using the changeset viewer.