'////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
'        KEYWORDS COMBINATION RECONGINTION       
'============================================================================================================================


'============================================================================================================================
'        group of keywords which can be caught in specific states; f.e. state select - keyword else; 
'----------------------------------------------------------------------------------------------------------------------------
do?      while.k        <    +.dowhile
         until.k        <    +.dountil
         .              <    +.do +
loop?    while.k        <    +.loopwhile
         until.k        <    +.loopuntil
         .              <    +.loop +

select?  case.k         <    +.selectcase            
case?    else.k         <    +.t +.caseelse
         .              <    +.t +.case +
'============================================================================================================================


'============================================================================================================================
'          group of keyword end 
'----------------------------------------------------------------------------------------------------------------------------
end?    if.k            <    +.t +.endif                   'yes, it teminates if 
        select.k        <    +.t +.endselect      
        sub.k           <    +.t +.endfun
        function.k      <    +.t +.endfun
        .               <    .i "Unclosed End" +.E         '"overhead"?

'============================================================================================================================
'          group of keyword exit
'----------------------------------------------------------------------------------------------------------------------------
exit?   sub.k           <    +.exitfun     
        function.k      <    +.exitfun 
        for.k           <    +.exitfor
        do.k            <    +.exitfor      'will trigger break; no reason for .exitdo;


-       :               +.t  +.:                 
        .10             +.t  +.r10                
        .eot            +.t  +.r10 +.print_declarations "exception: program must end in html mode" +.end             


'============================================================================================================================
'       miscellaneous keywords 
'----------------------------------------------------------------------------------------------------------------------------
ws      const.k         define(           >const                  'see const2 above;
const2  =               ,                 =const3
const3  .n              .&        )       =e,=,e
        .str            .&        )       =e,=,e
'----------------------------------------------------------------------------------------------------------------------------
-          _.k          >continue    
continue   .r10         <                 'return to parent state;
           .                              'ignore
'----------------------------------------------------------------------------------------------------------------------------
ws         while.k      +.dowhile            
'----------------------------------------------------------------------------------------------------------------------------


'============================================================================================================================
'          group of common keywords which are NOT CAUGHT (so, why they need to be at the end of schema) 
'----------------------------------------------------------------------------------------------------------------------------
-          true.k        +true.idv         
           false.k       +false.idv        

'          keywords which can have followers: 
-          select.k        >select?
           case.k          >case?
           end.k           >end?                     
           exit.k          >exit?
           do.k            >do?
           loop.k          >loop?

'          procedure openers 
           sub.k           +.t +.sub 
           function.k      +.t +.fun

'          statement/block end related events 
           else.k          +.t +.else                  
           elseif.k        +.t +.elseif 
           next.k          +.t +.next  
           wend.k          +loop.k            

          'special cases
ws         set.k                                   'ignore object syntax "set object = ... "; 
ws,we      new.k                                   'the same for "set object = new variable";