/* Author: Dave Bone FILE: pager_1.lex Date: 7 mar 2014 Purpose: Test out David Pager lr(1) resolution page 61 */ /@ @** David Pager Grammar.\fbreak David Pager\fbreak The Lane Table Method Of Constructing LR(1) Parsers.\fbreak @/ fsm (fsm-id "pager_1.lex",fsm-filename pager_1,fsm-namespace NS_pager_1 ,fsm-class Cpager_1{ /@ The |RSVP_FSM| macro is used to pass back an error to the calling grammar in its ``Accept queue''! Here the error is within the monolithic grammar so place it directly into the ``Error queue''. Please read ``wlibrary.pdf'' or ``o2book.pdf'' on the differences between:\fbreak |RSVP| and |RSVP_FSM| and their contextes to place a T into the ``Accept queue'' whereas |ADD_TOKEN_TO_ERROR_QUEUE| and |ADD_TOKEN_TO_ERROR_QUEUE_FSM| macros store the T into the ``Error queue''. \fbreak {\bf{Note}}: Reference to |current_token| to fetch its token stream gps. @/ failed CAbs_lr1_sym* sym = new Err_bad_T_inputted; sym->set_rc(*parser__->current_token__,__FILE__,__LINE__); ADD_TOKEN_TO_ERROR_QUEUE_FSM(*sym); return true; *** } ,fsm-version "1.0",fsm-date "7 mar 2014",fsm-debug "true" ,fsm-comments "Test out David Pager LR(1) resolution page 61.") @"/usr/local/yacco2/grammar-testsuite/testout_T_includes.T" rules{ Rs(){ -> Re eog } Re(){ -> a Rx d -> b Rx c -> a Ry c -> b Ry d } Rx(){ -> e Rx -> e } Ry(){ -> e Ry -> e } }