Update of /cvsroot/cpptool/rfta/src/pyrfta/test/rfta/parser
In directory sc8-pr-cvs1:/tmp/cvs-serv5731/src/pyrfta/test/rfta/parser
Modified Files:
grammar.py grammartest.py
Log Message:
* added error recovery for class member specification
Index: grammar.py
===================================================================
RCS file: /cvsroot/cpptool/rfta/src/pyrfta/test/rfta/parser/grammar.py,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** grammar.py 24 Aug 2003 21:00:36 -0000 1.1
--- grammar.py 26 Aug 2003 08:30:04 -0000 1.2
***************
*** 606,611 ****
access_specification_p = node_f( 'access_specification', access_specifier_p >> ':' )
member_specification_p = node_f('member_specification',
! repeat_f( 1, access_specification_p | member_declaration_p ) )
class_key_pi.setParser( one_of_f('class struct union' ) )
--- 606,613 ----
access_specification_p = node_f( 'access_specification', access_specifier_p >> ':' )
+ member_error_p = node_f( 'member_error', block_error_f() )
+
member_specification_p = node_f('member_specification',
! repeat_f( 1, access_specification_p | member_declaration_p | member_error_p ) )
class_key_pi.setParser( one_of_f('class struct union' ) )
Index: grammartest.py
===================================================================
RCS file: /cvsroot/cpptool/rfta/src/pyrfta/test/rfta/parser/grammartest.py,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** grammartest.py 24 Aug 2003 21:00:36 -0000 1.1
--- grammartest.py 26 Aug 2003 08:30:04 -0000 1.2
***************
*** 776,779 ****
--- 776,783 ----
TestNode( 'using_id', id_n('Base'), '::', id_n('visit') ),
';' ) ) )
+ self.checkProducedErrorNodes( "typedef std::map<int,std::string> Dico; Dico dico_;", grammar.member_specification_p,
+ TestNode( 'member_specification',
+ JokerTestNode( 'member_error' ),
+ JokerTestNode( 'member_declaration' ) ) ) # need more detailed check
def testClassSpecifierParser( self ):
|