Ignore:
Timestamp:
Jun 3, 2013, 5:57:23 PM (6 years ago)
Author:
ksherdy
Message:

PabloB kernel state def (partial impl.).

Location:
proto/pabloj/trunk/input
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • proto/pabloj/trunk/input/grammar/scatter/pabloB.scatter

    r3192 r3257  
    77//                      29-03-2013      Added IDISA function call.
    88//                              06-04-2013      Updated to Scatter with types.
    9 //
    10 // TODO:                CodeBlock, types ...
    119//
    1210
     
    3331  // t o k e n s
    3432  tokens {
    35         INIT,
     33        STATE,
    3634        KERNEL,
    3735        FUNCTION,       
     
    9290        // k e r n e l   d e c l a r a t i o n s                                                       
    9391        //
    94         kernelDef                       ->      KERNEL kernelName LCURLY initDef funcDef (optFuncDef)? expr TERMINATOR RCURLY TERMINATOR? ; // TODO - hack - stick CarryDeclare at end for now
     92        kernelDef                       ->      KERNEL kernelName LCURLY stateDef funcDef (optFuncDef)? expr TERMINATOR RCURLY TERMINATOR? ; // KH: TODO - a temporary hack that appends a CarryDeclare node
    9593        kernelName                      #-> identifier ;
    9694       
    9795        //
    98         // k e r n e l   s t a t e   i n i t
     96        // k e r n e l   s t a t e 
    9997        //
    100         initDef                         ->  INIT initBlock TERMINATOR? ;
    101         initBlock                       #-> LCURLY (stateInitStmt)* RCURLY;
    102         stateInitStmt           ->  stateIdentifier LSQUARE stateSize RSQUARE ASSIGN LCURLY stateInitList RCURLY TERMINATOR?; // TODO - array node
    103         stateIdentifier         ->  IDENTIFIER ;
    104         stateSize                       ->  integerConstant ;
    105         stateInitList           ->      integerConstant (COMMA integerConstant)* ; // a carry constant of uintN type, TODO - array init list
    106         stateValue                      ->  integerConstant ;
     98        stateDef                        #->  STATE LCURLY stateParameter* RCURLY TERMINATOR? ;
     99        stateParameter          ->  stateName ASSIGN stateValue TERMINATOR ;
     100        stateName                       #-> identifier ;
     101        stateValue                      ->      LSQUARE integerConstant (COMMA integerConstant)* RSQUARE ;
    107102
    108103        //     
     
    121116        // c o d e   b l o c k  // (32,64,128,256,...)
    122117        //
    123         // codeBlock                    ->              CODEBLOCK codeBlockWidthSpecifier!      { @codeBlockWidth = @:value; }
     118        // codeBlock                    ->              CODEBLOCK codeBlockWidthSpecifier!      { @codeBlockWidth = @:stateValue; }
    124119        //                                                                                                                                      blockStmt (TERMINATOR)? ;
    125120        //                             
     
    130125        //
    131126        stmt                                    #->     localVarDecl | funcCallOrAssignStmt | ifStmt | whileStmt | returnStmt  ;
    132         funcCallOrAssignStmt    #-> expr (assignRest _promote_) ? TERMINATOR ; // add SA to validate expr is a function call   
    133         idisaFuncCallArgList    ->  (expr (COMMA expr)*)? ;
    134         assignOperator                  ->      ASSIGN;                                 
     127        funcCallOrAssignStmt    #-> expr (assignRest _promote_) ? TERMINATOR ; // KH: TODO Add Semantic Analysis pass to validate expr non-terminal is of function call node type       
     128        idisaFuncCallArgList    ->  (expr (COMMA expr)*) ? ;
     129        assignOperator                  ->      ASSIGN ;                               
    135130        assignRest                              ->      assignOperator^! expr ;                         
    136131        ifStmt                                  ->      IF LROUND expr RROUND blockStmt (ELSE blockStmt)? ;                     
    137132        whileStmt                               ->      WHILE LROUND expr RROUND blockStmt ;
    138         returnStmt                              ->      RETURN (expr)? TERMINATOR ;
     133        returnStmt                              ->      RETURN (expr) ? TERMINATOR ;
    139134        localVarDecl                    ->      type varName (assignOperator^! expr) ? TERMINATOR ;
    140135        varName                                 #-> compoundIdentifier ;
  • proto/pabloj/trunk/input/test/pabloB/proto/parabix2_pablo.pablob

    r3192 r3257  
    131131kernel Classify_bytes_Validate_utf8 
    132132{
    133         init
     133        state
    134134        {
    135135         
     
    490490kernel Parse_refs
    491491{
    492         init
     492        state
    493493        {
    494494               
     
    573573kernel Validate_xml_names
    574574{
    575         init
     575        state
    576576        {
    577577               
     
    634634kernel Do_check_streams
    635635{
    636         init
     636        state
    637637        {
    638638               
  • proto/pabloj/trunk/input/test/pabloB/test.pablob

    r3192 r3257  
    33kernel KernelName
    44{
    5     init
     5    state
    66    {
    7            
     7        look_ahead = [0];
     8        look_behind = [0];
     9        carry_init = [0,0,1,1];
    810    }
    911
Note: See TracChangeset for help on using the changeset viewer.