|
From: <bl...@us...> - 2003-08-26 18:26:21
|
Update of /cvsroot/cpptool/rfta/src/pyrfta/test/rfta/parser
In directory sc8-pr-cvs1:/tmp/cvs-serv1555/src/pyrfta/test/rfta/parser
Modified Files:
grammar.py grammartest.py
Log Message:
* allowed an extra id before the class name in class definition.
* a few extra nodes added to wrap some expressions.
Index: grammar.py
===================================================================
RCS file: /cvsroot/cpptool/rfta/src/pyrfta/test/rfta/parser/grammar.py,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** grammar.py 26 Aug 2003 08:30:04 -0000 1.2
--- grammar.py 26 Aug 2003 17:53:49 -0000 1.3
***************
*** 93,97 ****
id_expression_pi = longuest_f( qualified_id_p,
! node_f( 'unqualified_id', unqualified_id_pi ) )
# C++ Standard p65
--- 93,97 ----
id_expression_pi = longuest_f( qualified_id_p,
! node_f( 'unqualified_id', unqualified_id_pi ) )
# C++ Standard p65
***************
*** 99,103 ****
| ( symbol_f('this') >> rename_last_cmd( 'this_ref' ) )
| node_f('braced_expr', symbol_f('(') >> expression_pi >> symbol_f(')') )
! | id_expression_pi )
# Notes: missing template in scope case
--- 99,103 ----
| ( symbol_f('this') >> rename_last_cmd( 'this_ref' ) )
| node_f('braced_expr', symbol_f('(') >> expression_pi >> symbol_f(')') )
! | node_f( 'id_expression', id_expression_pi ) )
# Notes: missing template in scope case
***************
*** 582,586 ****
constant_initializer_p = symbol_f('=') >> constant_expression_pi
! pure_specifier_p = symbol_f('=') >> ZeroParser()
# added, somehow the grammar is not parsing this
--- 582,586 ----
constant_initializer_p = symbol_f('=') >> constant_expression_pi
! pure_specifier_p = node_f( 'pure_specifier', symbol_f('=') >> ZeroParser() )
# added, somehow the grammar is not parsing this
***************
*** 625,629 ****
class_head_name_p = node_f( 'class_name',
! optional_f( nested_name_specifier_pi ) >> (id_p | template_id_pi) )
class_head_p = proxy_f( class_key_pi >> optional_f( class_head_name_p ) >> optional_f( base_clause_p ) )
--- 625,631 ----
class_head_name_p = node_f( 'class_name',
! optional_alternative_f( node_f('dll_macro', id_p ),
! optional_f( nested_name_specifier_pi )
! >> (id_p | template_id_pi) ) )
class_head_p = proxy_f( class_key_pi >> optional_f( class_head_name_p ) >> optional_f( base_clause_p ) )
***************
*** 650,654 ****
mem_initializer_id >> '(' >> optional_f( expression_list_pi ) >> ')' )
! ctor_initializer_p.setParser( symbol_f( ':' ) >> list_f( mem_initializer_p, ',' ) )
# ############### A.8.2: Classes, OverLoading ##################
--- 652,657 ----
mem_initializer_id >> '(' >> optional_f( expression_list_pi ) >> ')' )
! ctor_initializer_p.setParser( node_f( 'constructor_initializer',
! symbol_f( ':' ) >> list_f( mem_initializer_p, ',' ) ) )
# ############### A.8.2: Classes, OverLoading ##################
Index: grammartest.py
===================================================================
RCS file: /cvsroot/cpptool/rfta/src/pyrfta/test/rfta/parser/grammartest.py,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** grammartest.py 26 Aug 2003 08:30:04 -0000 1.2
--- grammartest.py 26 Aug 2003 17:53:50 -0000 1.3
***************
*** 27,30 ****
--- 27,33 ----
return TestNode( 'declarator_id', TestNode( 'unqualified_id', *ids ) )
+ def unqualified_id_expression_n( identifier ):
+ return TestNode( 'id_expression', unqualified_id_n( identifier ) )
+
class GrammarTest(unittest.TestCase,ParserTestHelperMixIn):
***************
*** 88,92 ****
TestNode( 'expression', ('this_ref','this') ),
')' ) )
! self.checkParser( '::my_id', grammar.primary_expression_p )
self.checkParser( 'MyNamespace::my_var', grammar.primary_expression_p )
self.checkParser( '::MyNamespace::MyClass::member_', grammar.primary_expression_p )
--- 91,97 ----
TestNode( 'expression', ('this_ref','this') ),
')' ) )
! self.checkProducedNodes( '::my_id', grammar.primary_expression_p,
! TestNode( 'id_expression',
! TestNode( 'qualified_id', '::', id_n('my_id') ) ) )
self.checkParser( 'MyNamespace::my_var', grammar.primary_expression_p )
self.checkParser( '::MyNamespace::MyClass::member_', grammar.primary_expression_p )
***************
*** 95,111 ****
self.checkProducedNodes( 'xyz', grammar.primary_expression_p,
! TestNode( 'unqualified_id', id_n( 'xyz' ) ) )
self.checkProducedNodes( 'operator =', grammar.primary_expression_p,
! TestNode( 'unqualified_id',
! TestNode( 'operator_function_ref', 'operator', '=' ) ) )
self.checkProducedNodes( 'operator int', grammar.primary_expression_p,
! TestNode( 'unqualified_id',
! TestNode( 'conversion_function_ref',
! 'operator',
! TestNode( 'conversion_type', fundamental_type_specifier_n('int') ) ) ) )
self.checkProducedNodes( '~ClassName()', grammar.primary_expression_p,
! TestNode( 'unqualified_id',
! TestNode( 'destructor_ref', '~', id_n('ClassName') ) ) )
!
def testPostFixExpressionSuffix( self ):
self.checkProducedNodes( '[123]', grammar.array_operator_suffix_p,
--- 100,118 ----
self.checkProducedNodes( 'xyz', grammar.primary_expression_p,
! unqualified_id_expression_n( 'xyz' ) )
self.checkProducedNodes( 'operator =', grammar.primary_expression_p,
! TestNode( 'id_expression',
! TestNode( 'unqualified_id',
! TestNode( 'operator_function_ref', 'operator', '=' ) ) ) )
self.checkProducedNodes( 'operator int', grammar.primary_expression_p,
! TestNode( 'id_expression',
! TestNode( 'unqualified_id',
! TestNode( 'conversion_function_ref',
! 'operator',
! TestNode( 'conversion_type', fundamental_type_specifier_n('int') ) ) ) ) )
self.checkProducedNodes( '~ClassName()', grammar.primary_expression_p,
! TestNode( 'id_expression',
! TestNode( 'unqualified_id',
! TestNode( 'destructor_ref', '~', id_n('ClassName') ) ) ) )
def testPostFixExpressionSuffix( self ):
self.checkProducedNodes( '[123]', grammar.array_operator_suffix_p,
***************
*** 130,134 ****
TestNode( 'array_access',
TestNode( 'array_access',
! JokerTestNode( 'unqualified_id' ),
TestNode('array_index', '[', JokerTestNode( 'expression' ), ']') ), #[1]
TestNode('array_index', '[', JokerTestNode( 'expression' ), ']') ) ) #[2]
--- 137,141 ----
TestNode( 'array_access',
TestNode( 'array_access',
! JokerTestNode( 'id_expression' ),
TestNode('array_index', '[', JokerTestNode( 'expression' ), ']') ), #[1]
TestNode('array_index', '[', JokerTestNode( 'expression' ), ']') ) ) #[2]
***************
*** 158,162 ****
self.checkParser( 'delete ++p', grammar.delete_expression_p )
self.checkProducedNodes( '::delete [] p', grammar.delete_expression_p,
! TestNode( 'delete_operator', '::', 'delete', '[', ']', unqualified_id_n('p') ) )
self.checkParser( 'delete x.z', grammar.delete_expression_p )
--- 165,170 ----
self.checkParser( 'delete ++p', grammar.delete_expression_p )
self.checkProducedNodes( '::delete [] p', grammar.delete_expression_p,
! TestNode( 'delete_operator', '::', 'delete', '[', ']',
! unqualified_id_expression_n('p') ) )
self.checkParser( 'delete x.z', grammar.delete_expression_p )
***************
*** 178,185 ****
TestNode( 'expression_list',
TestNode( 'assignment_expression',
! unqualified_id_n('__FILE__') ),
',',
TestNode( 'assignment_expression',
! unqualified_id_n('__LINE__') ) ),
')'),
TestNode( 'new_type_id', fundamental_type_n('int') ),
--- 186,193 ----
TestNode( 'expression_list',
TestNode( 'assignment_expression',
! unqualified_id_expression_n('__FILE__') ),
',',
TestNode( 'assignment_expression',
! unqualified_id_expression_n('__LINE__') ) ),
')'),
TestNode( 'new_type_id', fundamental_type_n('int') ),
***************
*** 204,212 ****
TestNode( 'unary_operator',
'++',
! unqualified_id_n('my_variable') ) )
self.checkProducedNodes( '!my_variable', grammar.unary_expression_p,
TestNode( 'unary_operator',
'!',
! unqualified_id_n('my_variable') ) )
self.checkParser( '--my_variable', grammar.unary_expression_p )
self.checkParser( '-my_variable', grammar.unary_expression_p )
--- 212,220 ----
TestNode( 'unary_operator',
'++',
! unqualified_id_expression_n('my_variable') ) )
self.checkProducedNodes( '!my_variable', grammar.unary_expression_p,
TestNode( 'unary_operator',
'!',
! unqualified_id_expression_n('my_variable') ) )
self.checkParser( '--my_variable', grammar.unary_expression_p )
self.checkParser( '-my_variable', grammar.unary_expression_p )
***************
*** 215,219 ****
'sizeof',
TestNode( 'unary_operator', '!',
! unqualified_id_n('my_variable') ) ) )
self.checkProducedNodes( 'sizeof(++my_variable)', grammar.unary_expression_p,
TestNode( 'sizeof_operator',
--- 223,227 ----
'sizeof',
TestNode( 'unary_operator', '!',
! unqualified_id_expression_n('my_variable') ) ) )
self.checkProducedNodes( 'sizeof(++my_variable)', grammar.unary_expression_p,
TestNode( 'sizeof_operator',
***************
*** 223,227 ****
TestNode( 'expression',
TestNode( 'unary_operator', '++',
! unqualified_id_n('my_variable') ) ),
')' ) ) )
self.checkParser( 'new int[10]', grammar.unary_expression_p )
--- 231,235 ----
TestNode( 'expression',
TestNode( 'unary_operator', '++',
! unqualified_id_expression_n('my_variable') ) ),
')' ) ) )
self.checkParser( 'new int[10]', grammar.unary_expression_p )
***************
*** 311,315 ****
def testConstantExpressionParser( self ):
self.checkProducedNodes( 'x', grammar.constant_expression_pi,
! TestNode( 'constant_expression', unqualified_id_n('x') ) )
# Statement
--- 319,323 ----
def testConstantExpressionParser( self ):
self.checkProducedNodes( 'x', grammar.constant_expression_pi,
! TestNode( 'constant_expression', unqualified_id_expression_n('x') ) )
# Statement
***************
*** 699,702 ****
--- 707,714 ----
# Class
+ def testPureSpecifier( self ):
+ self.checkProducedNodes( ' = 0', grammar.pure_specifier_p,
+ TestNode( 'pure_specifier', '=', int_n(0) ) )
+
def testBaseClauseParser( self ):
self.checkParser( ": Parent1", grammar.base_clause_p )
***************
*** 708,711 ****
--- 720,724 ----
self.checkParser( "class MyClass : public Parent", grammar.class_head_p )
self.checkParser( "class MyNamespace::MyClass : public Parent, Parent2Impl", grammar.class_head_p )
+ self.checkParser( 'class EXPORT_MACRO MyClass : public Parent', grammar.class_head_p )
def testMemInitializer( self ):
***************
*** 716,719 ****
--- 729,740 ----
TestNode('mem_initializer_id', '::', id_n('Tools'), '::', id_n('Base') ),
'(', JokerTestNode('expression_list', ), ')' ) )
+
+ def testCtorInitializer( self ):
+ self.checkProducedNodes( ': x_(0), y_(0)', grammar.ctor_initializer_p,
+ TestNode( 'constructor_initializer',
+ ':',
+ JokerTestNode( 'mem_initializer' ),
+ ',',
+ JokerTestNode( 'mem_initializer' ) ) )
def testMemberDeclarationParser( self ):
|