/*
  Copyright Dave Bone 1998 - 2014 
  All Rights Reserved. 
  No part of this document may be reproduced without written consent from the author.
	
FILE:		  dbl_colon.lex
Dates:		  23 Mar 2004
Purpose:	  part of a C++ thread's name
              NS_xxx::TH_xxx
Output:       "::"
*/
/@
@i "/usr/local/yacco2/copyright.w"
@** |dbl_colon| grammar.\fbreak
Recognizes the double colon sequence in 
the subrule's thread call.
Why does it exist?
Cuz of my distinction between regular grammar expressions
and the thread calling type.
So this is a word that is outside of identifier thread
jurisdiction. i did generalize keywords  a long time ago
but refined it thru development. 
@/
fsm	
(fsm-id	"dbl_colon.lex"
,fsm-filename dbl_colon
,fsm-namespace NS_dbl_colon
,fsm-class Cdbl_colon
,fsm-version "1.0",fsm-date "8 Jun 2004",fsm-debug "false"
,fsm-comments "This one's for the thread's name :: lexer.")
parallel-parser	
(	
  parallel-thread-function
    TH_dbl_colon
  ***
  parallel-la-boundary
    eolr - ":"
  ***
)
@"/usr/local/yacco2/compiler/grammars/yacco2_T_includes.T"

rules{
Rdbl_colon (
  lhs {
    user-declaration
      public:
      CAbs_lr1_sym* rtn_sym_;
    ***
    op
      rtn_sym_->set_rc(*rule_info__.parser__->start_token__,__FILE__,__LINE__);
      RSVP(rtn_sym_);
      rtn_sym_ = 0;      
    ***  
  }
){
  -> ":" ":"  {
    op 
      rtn_sym_ = new T_2colon; 
    ***
	}
}
}// end of rules
