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]
