Tag: cws_src680_qiq
User: fs      
Date: 06/05/10 03:21:52

Modified:
 /dba/connectivity/source/parse/
  sqlbison.y

Log:
 #i51443# added conversion from scanner's rule-ID to Rule enum

File Changes:

Directory: /dba/connectivity/source/parse/
==========================================

File [changed]: sqlbison.y
Url: 
http://dba.openoffice.org/source/browse/dba/connectivity/source/parse/sqlbison.y?r1=1.51&r2=1.51.168.1
Delta lines:  +23 -191
----------------------
--- sqlbison.y  17 Feb 2005 10:15:54 -0000      1.51
+++ sqlbison.y  10 May 2006 10:21:49 -0000      1.51.168.1
@@ -1,7 +1,7 @@
 %{
 //--------------------------------------------------------------------------
 //
-// $Header: dba/connectivity/source/parse/sqlbison.y,v 1.51 2005/02/17 
10:15:54 vg Exp $
+// $Header: dba/connectivity/source/parse/sqlbison.y,v 1.51.168.1 2006/05/10 
10:21:49 fs Exp $
 //
 // Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
 //
@@ -9,7 +9,7 @@
 //     OJ
 //
 // Last change:
-//     $Author: vg $ $Date: 2005/02/17 10:15:54 $ $Revision: 1.51 $
+//     $Author: fs $ $Date: 2006/05/10 10:21:49 $ $Revision: 1.51.168.1 $
 //
 // Description:
 //
@@ -3313,6 +3313,7 @@
 //==========================================================================
 
 sal_uInt32                     
OSQLParser::s_nRuleIDs[OSQLParseNode::rule_count + 1];
+OSQLParser::RuleIDMap   OSQLParser::s_aReverseRuleIDLookup;
 OParseContext          OSQLParser::s_aDefaultContext;
 
 sal_Int32                      OSQLParser::s_nRefCount = 0;
@@ -3341,6 +3342,9 @@
                        s_pGarbageCollector = NULL;
                        // is only set the first time so we should delete it 
only when there no more instances
                        s_xLocaleData = NULL;
+
+            RuleIDMap aEmpty;
+            s_aReverseRuleIDLookup.swap( aEmpty );
                }
                m_pParseTree = NULL;
        }
@@ -3480,7 +3484,7 @@
 //-----------------------------------------------------------------------------
 sal_uInt32 OSQLParser::StrToRuleID(const ::rtl::OString & rValue)
 {
-       // In yysvar nach dem angegebenen Namen suchen, den 
::com::sun::star::sdbcx::Index zurueckliefern
+       // In yysvar nach dem angegebenen Namen suchen, den Index zurueckliefern
        // (oder 0, wenn nicht gefunden)
        static sal_uInt32 nLen = sizeof(yytname)/sizeof(yytname[0]);
        for (sal_uInt32 i = YYTRANSLATE(SQL_TOKEN_INVALIDSYMBOL); i < (nLen-1); 
i++)
@@ -3494,186 +3498,14 @@
 }
 
 //-----------------------------------------------------------------------------
+OSQLParseNode::Rule OSQLParser::RuleIDToRule( sal_uInt32 _nRule )
+{
+    return s_aReverseRuleIDLookup[ _nRule ];
+}
+
+//-----------------------------------------------------------------------------
 sal_uInt32 OSQLParser::RuleID(OSQLParseNode::Rule eRule)
 {
-       if (!s_nRuleIDs[eRule])
-       {
-               switch (eRule)
-               {
-                       case OSQLParseNode::select_statement:
-                               s_nRuleIDs[eRule] = 
StrToRuleID("select_statement"); break;
-                       case OSQLParseNode::from_clause:
-                               s_nRuleIDs[eRule] = StrToRuleID("from_clause"); 
break;
-                       case OSQLParseNode::table_ref_commalist:
-                               s_nRuleIDs[eRule] = 
StrToRuleID("table_ref_commalist"); break;
-                       case OSQLParseNode::table_exp:
-                               s_nRuleIDs[eRule] = StrToRuleID("table_exp"); 
break;
-                       case OSQLParseNode::table_ref:
-                               s_nRuleIDs[eRule] = StrToRuleID("table_ref"); 
break;
-                       case OSQLParseNode::catalog_name:
-                               s_nRuleIDs[eRule] = 
StrToRuleID("catalog_name"); break;
-                       case OSQLParseNode::schema_name:
-                               s_nRuleIDs[eRule] = StrToRuleID("schema_name"); 
break;
-                       case OSQLParseNode::table_name:
-                               s_nRuleIDs[eRule] = StrToRuleID("table_name"); 
break;
-                       case OSQLParseNode::opt_column_commalist:
-                               s_nRuleIDs[eRule] = 
StrToRuleID("opt_column_commalist"); break;
-                       case OSQLParseNode::column_commalist:
-                               s_nRuleIDs[eRule] = 
StrToRuleID("column_commalist"); break;
-                       case OSQLParseNode::column_ref_commalist:
-                               s_nRuleIDs[eRule] = 
StrToRuleID("column_ref_commalist"); break;
-                       case OSQLParseNode::column_ref:
-                               s_nRuleIDs[eRule] = StrToRuleID("column_ref"); 
break;
-                       case OSQLParseNode::opt_order_by_clause:
-                               s_nRuleIDs[eRule] = 
StrToRuleID("opt_order_by_clause"); break;
-                       case OSQLParseNode::ordering_spec_commalist:
-                               s_nRuleIDs[eRule] = 
StrToRuleID("ordering_spec_commalist"); break;
-                       case OSQLParseNode::ordering_spec:
-                               s_nRuleIDs[eRule] = 
StrToRuleID("ordering_spec"); break;
-                       case OSQLParseNode::opt_asc_desc:
-                               s_nRuleIDs[eRule] = 
StrToRuleID("opt_asc_desc"); break;
-                       case OSQLParseNode::where_clause:
-                               s_nRuleIDs[eRule] = 
StrToRuleID("where_clause"); break;
-                       case OSQLParseNode::opt_where_clause:
-                               s_nRuleIDs[eRule] = 
StrToRuleID("opt_where_clause"); break;
-                       case OSQLParseNode::search_condition:
-                               s_nRuleIDs[eRule] = 
StrToRuleID("search_condition"); break;
-                       case OSQLParseNode::comparison_predicate:
-                               s_nRuleIDs[eRule] = 
StrToRuleID("comparison_predicate"); break;
-                       case OSQLParseNode::between_predicate:
-                               s_nRuleIDs[eRule] = 
StrToRuleID("between_predicate"); break;
-                       case OSQLParseNode::like_predicate:
-                               s_nRuleIDs[eRule] = 
StrToRuleID("like_predicate"); break;
-                       case OSQLParseNode::opt_escape:
-                               s_nRuleIDs[eRule] = StrToRuleID("opt_escape"); 
break;
-                       case OSQLParseNode::test_for_null:
-                               s_nRuleIDs[eRule] = 
StrToRuleID("test_for_null"); break;
-                       case OSQLParseNode::scalar_exp_commalist:
-                               s_nRuleIDs[eRule] = 
StrToRuleID("scalar_exp_commalist"); break;
-                       case OSQLParseNode::scalar_exp:
-                               s_nRuleIDs[eRule] = StrToRuleID("scalar_exp"); 
break;
-                       case OSQLParseNode::parameter_ref:
-                               s_nRuleIDs[eRule] = 
StrToRuleID("parameter_ref"); break;
-                       case OSQLParseNode::parameter:
-                               s_nRuleIDs[eRule] = StrToRuleID("parameter"); 
break;
-                       case OSQLParseNode::general_set_fct:
-                               s_nRuleIDs[eRule] = 
StrToRuleID("general_set_fct"); break;
-                       case OSQLParseNode::range_variable:
-                               s_nRuleIDs[eRule] = 
StrToRuleID("range_variable"); break;
-                       case OSQLParseNode::column:
-                               s_nRuleIDs[eRule] = StrToRuleID("column"); 
break;
-//                     case OSQLParseNode::delete_statement_positioned:
-//                             s_nRuleIDs[eRule] = 
StrToRuleID("delete_statement_positioned"); break;
-                       case OSQLParseNode::delete_statement_searched:
-                               s_nRuleIDs[eRule] = 
StrToRuleID("delete_statement_searched"); break;
-//                     case OSQLParseNode::update_statement_positioned:
-//                             s_nRuleIDs[eRule] = 
StrToRuleID("update_statement_positioned"); break;
-                       case OSQLParseNode::update_statement_searched:
-                               s_nRuleIDs[eRule] = 
StrToRuleID("update_statement_searched"); break;
-                       case OSQLParseNode::assignment_commalist:
-                               s_nRuleIDs[eRule] = 
StrToRuleID("assignment_commalist"); break;
-                       case OSQLParseNode::assignment:
-                               s_nRuleIDs[eRule] = StrToRuleID("assignment"); 
break;
-                       case OSQLParseNode::values_or_query_spec:
-                               s_nRuleIDs[eRule] = 
StrToRuleID("values_or_query_spec"); break;
-                       case OSQLParseNode::insert_statement:
-                               s_nRuleIDs[eRule] = 
StrToRuleID("insert_statement"); break;
-                       case OSQLParseNode::insert_atom_commalist:
-                               s_nRuleIDs[eRule] = 
StrToRuleID("insert_atom_commalist"); break;
-                       case OSQLParseNode::insert_atom:
-                               s_nRuleIDs[eRule] = StrToRuleID("insert_atom"); 
break;
-                       case OSQLParseNode::predicate_check:
-                               s_nRuleIDs[eRule] = 
StrToRuleID("predicate_check"); break;
-                       case OSQLParseNode::qualified_join:
-                               s_nRuleIDs[eRule] = 
StrToRuleID("qualified_join"); break;
-                       case OSQLParseNode::cross_union:
-                               s_nRuleIDs[eRule] = StrToRuleID("cross_union"); 
break;
-                       case OSQLParseNode::select_sublist:
-                               s_nRuleIDs[eRule] = 
StrToRuleID("select_sublist"); break;
-                       case OSQLParseNode::derived_column:
-                               s_nRuleIDs[eRule] = 
StrToRuleID("derived_column"); break;
-                       case OSQLParseNode::column_val:
-                               s_nRuleIDs[eRule] = StrToRuleID("column_val"); 
break;
-                       case OSQLParseNode::set_fct_spec:
-                               s_nRuleIDs[eRule] = 
StrToRuleID("set_fct_spec"); break;
-                       case OSQLParseNode::boolean_term:
-                               s_nRuleIDs[eRule] = 
StrToRuleID("boolean_term"); break;
-                       case OSQLParseNode::boolean_primary:
-                               s_nRuleIDs[eRule] = 
StrToRuleID("boolean_primary"); break;
-                       case OSQLParseNode::num_value_exp:
-                               s_nRuleIDs[eRule] = 
StrToRuleID("num_value_exp"); break;
-                       case OSQLParseNode::join_type:
-                               s_nRuleIDs[eRule] = StrToRuleID("join_type"); 
break;
-                       case OSQLParseNode::position_exp:
-                               s_nRuleIDs[eRule] = 
StrToRuleID("position_exp"); break;
-                       case OSQLParseNode::extract_exp:
-                               s_nRuleIDs[eRule] = StrToRuleID("extract_exp"); 
break;
-                       case OSQLParseNode::length_exp:
-                               s_nRuleIDs[eRule] = StrToRuleID("length_exp"); 
break;
-                       case OSQLParseNode::char_value_fct:
-                               s_nRuleIDs[eRule] = 
StrToRuleID("char_value_fct"); break;
-                       case OSQLParseNode::odbc_call_spec:
-                               s_nRuleIDs[eRule] = 
StrToRuleID("odbc_call_spec"); break;
-                       case OSQLParseNode::in_predicate:
-                               s_nRuleIDs[eRule] = 
StrToRuleID("in_predicate"); break;
-                       case OSQLParseNode::existence_test:
-                               s_nRuleIDs[eRule] = 
StrToRuleID("existence_test"); break;
-                       case OSQLParseNode::unique_test:
-                               s_nRuleIDs[eRule] = StrToRuleID("unique_test"); 
break;
-                       case OSQLParseNode::all_or_any_predicate:
-                               s_nRuleIDs[eRule] = 
StrToRuleID("all_or_any_predicate"); break;
-                       case OSQLParseNode::named_columns_join:
-                               s_nRuleIDs[eRule] = 
StrToRuleID("named_columns_join"); break;
-                       case OSQLParseNode::join_condition:
-                               s_nRuleIDs[eRule] = 
StrToRuleID("join_condition"); break;
-                       case OSQLParseNode::joined_table:
-                               s_nRuleIDs[eRule] = 
StrToRuleID("joined_table"); break;
-                       case OSQLParseNode::boolean_factor:
-                               s_nRuleIDs[eRule] = 
StrToRuleID("boolean_factor"); break;
-                       case OSQLParseNode::factor:
-                               s_nRuleIDs[eRule] = StrToRuleID("factor"); 
break;
-                       case OSQLParseNode::sql_not:
-                               s_nRuleIDs[eRule] = StrToRuleID("not"); break;
-                       case OSQLParseNode::boolean_test:
-                               s_nRuleIDs[eRule] = 
StrToRuleID("boolean_test"); break;
-                       case OSQLParseNode::manipulative_statement:
-                               s_nRuleIDs[eRule] = 
StrToRuleID("manipulative_statement"); break;
-                       case OSQLParseNode::subquery:
-                               s_nRuleIDs[eRule] = StrToRuleID("subquery"); 
break;
-                       case OSQLParseNode::value_exp_commalist:
-                               s_nRuleIDs[eRule] = 
StrToRuleID("value_exp_commalist"); break;
-                       case OSQLParseNode::odbc_fct_spec:
-                               s_nRuleIDs[eRule] = 
StrToRuleID("odbc_fct_spec"); break;
-                       case OSQLParseNode::union_statement:
-                               s_nRuleIDs[eRule] = 
StrToRuleID("union_statement"); break;
-                       case OSQLParseNode::outer_join_type:
-                               s_nRuleIDs[eRule] = 
StrToRuleID("outer_join_type"); break;
-                       case OSQLParseNode::char_value_exp:
-                               s_nRuleIDs[eRule] = 
StrToRuleID("char_value_exp"); break;
-                       case OSQLParseNode::term:
-                               s_nRuleIDs[eRule] = StrToRuleID("term"); break;
-                       case OSQLParseNode::value_exp_primary:
-                               s_nRuleIDs[eRule] = 
StrToRuleID("value_exp_primary"); break;
-                       case OSQLParseNode::value_exp:
-                               s_nRuleIDs[eRule] = StrToRuleID("value_exp"); 
break;
-                       case OSQLParseNode::fold:
-                               s_nRuleIDs[eRule] = StrToRuleID("fold"); break;
-                       case OSQLParseNode::char_substring_fct:
-                               s_nRuleIDs[eRule] = 
StrToRuleID("char_substring_fct"); break;
-                       case OSQLParseNode::selection:
-                               s_nRuleIDs[eRule] = StrToRuleID("selection"); 
break;
-                       case OSQLParseNode::base_table_def:

-                               s_nRuleIDs[eRule] = 
StrToRuleID("base_table_def"); break;

-                       case OSQLParseNode::base_table_element_commalist:

-                               s_nRuleIDs[eRule] = 
StrToRuleID("base_table_element_commalist"); break;

-                       case OSQLParseNode::data_type:

-                               s_nRuleIDs[eRule] = StrToRuleID("data_type"); 
break;

-                       case OSQLParseNode::column_def:

-                               s_nRuleIDs[eRule] = StrToRuleID("column_def"); 
break;

-                       default:
-                               OSL_ENSURE(0,"interner Fehler: Regel nicht 
bekannt, in OSQLParser::RuleID nachtragen!");
-               }
-       }
        return s_nRuleIDs[(sal_uInt16)eRule];
 }
 // -------------------------------------------------------------------------




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to