8
0
mirror of https://github.com/FirebirdSQL/firebird.git synced 2025-01-31 14:03:04 +01:00
firebird-mirror/src/qli/compile.h
2009-01-10 10:51:02 +00:00

252 lines
6.4 KiB
C

/*
* PROGRAM: JRD Command Oriented Query Language
* MODULE: compile.h
* DESCRIPTION: Parser/compiler definitions
*
* The contents of this file are subject to the Interbase Public
* License Version 1.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy
* of the License at http://www.Inprise.com/IPL.html
*
* Software distributed under the License is distributed on an
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
* or implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code was created by Inprise Corporation
* and its predecessors. Portions created by Inprise Corporation are
* Copyright (C) Inprise Corporation.
*
* All Rights Reserved.
* Contributor(s): ______________________________________.
*/
#ifndef QLI_COMPILE_H
#define QLI_COMPILE_H
// Name nodes -- used to hold names between parse and compilation
typedef struct nam {
blk nam_header;
qli_symbol* nam_symbol; // Symbol pointer, if any
USHORT nam_length; // Length of name
TEXT nam_string[1]; // Actual name string
} *NAM;
// Qualified procedure node -- used to hold qualified procedure names
typedef struct qpr {
blk qpr_header;
qli_dbb* qpr_database; // database block
nam* qpr_name; // name block
} *QPR;
// Qualified function node -- used to hold qualified function names
typedef struct qfn {
blk qfn_header;
qli_dbb* qfn_database; // database block
nam* qfn_name; // name block
} *QFN;
// Qualified filter node -- used to hold qualified filter names
typedef struct qfl {
blk qfl_header;
qli_dbb* qfl_database; // database block
nam* qfl_name; // name block
} *QFL;
// SHOW options
enum show_t {
show_all,
show_relation,
show_relations,
show_system_relations,
show_database,
show_databases,
show_procedure,
show_procedures,
show_version,
show_variable,
show_variables,
show_indices,
//show_qualified_procedure,
show_field,
show_filter,
show_filters,
show_global_field,
show_global_fields,
show_trigger,
show_triggers,
show_security_class,
show_security_classes,
//show_forms,
show_function,
show_functions,
show_views,
show_system_triggers,
show_matching_language,
show_db_indices,
show_db_fields
};
enum set_t {
set_blr,
set_statistics,
//set_epilog, // Unused
set_columns,
set_lines,
set_semi,
set_echo,
//set_form,
set_matching_language,
set_prompt,
set_continuation,
set_user,
set_password,
//set_euc_justify, // JPN specific option
set_count,
set_charset
#ifdef DEV_BUILD
,set_hex_output,
set_explain
#endif
};
// Position assignments for syntax tree nodes
const int s_rel_relation = 0; // Actual relation block
const int s_rel_context = 1; // Symbol block for context, if any
const int s_rel_count = 2;
const int s_prt_list = 0; // Print list
const int s_prt_rse = 1; // Rse, if any
const int s_prt_output = 2; // Output file, if any
const int s_prt_distinct = 3; // Simple flag indicating distinct
const int s_prt_order = 4; // SQL order clause
const int s_prt_form = 5;
const int s_prt_count = 6;
const int s_rse_first = 0; // FIRST clause, if any
const int s_rse_boolean = 1; // Boolean clause, if any
const int s_rse_sort = 2; // Sort clause, if any
const int s_rse_reduced = 3; // Reduced clause, if any
const int s_rse_group_by = 4;
const int s_rse_having = 5;
const int s_rse_outer = 6; // Outer context value (implicit ANY)
const int s_rse_inner = 7; // Inner context value
const int s_rse_op = 8; // Comparison operator
const int s_rse_join_type = 9; // Join type
const int s_rse_all_flag = 10; // Explicit "ALL" flag
const int s_rse_list = 11;
const int s_rse_count = 12;
const int s_for_rse = 0;
const int s_for_statement = 1;
const int s_for_count = 2;
const int s_itm_value = 0; // Value of print item
const int s_itm_edit_string = 1; // Edit string, if any
const int s_itm_header = 2; // Query header, if any
const int s_itm_count = 3;
const int s_sto_relation = 0;
const int s_sto_statement = 1;
const int s_sto_rse = 2;
const int s_sto_fields = 3;
const int s_sto_values = 4;
const int s_sto_form = 5;
const int s_sto_count = 6;
const int s_asn_from = 0;
const int s_asn_to = 1;
const int s_asn_count = 2;
const int s_mod_list = 0; // Field list
const int s_mod_statement = 1; // Sub-statement
const int s_mod_rse = 2; // Record selection expression
const int s_mod_form = 3;
const int s_mod_count = 4;
const int s_era_rse = 0;
const int s_era_count = 1;
const int s_rpt_value = 0;
const int s_rpt_statement = 1;
const int s_rpt_count = 2;
const int s_if_boolean = 0;
const int s_if_true = 1;
const int s_if_false = 2;
const int s_if_count = 3;
const int s_stt_rse = 0;
const int s_stt_value = 1;
const int s_stt_default = 2;
const int s_stt_distinct = 3;
const int s_stt_count = 4;
const int s_out_file = 0;
const int s_out_pipe = 1;
const int s_out_count = 2;
const int s_fmt_value = 0;
const int s_fmt_edit = 1;
const int s_fmt_count = 2;
const int s_dfi_name = 0;
const int s_dfi_relation = 1; // Define index
const int s_dfi_fields = 2;
const int s_dfi_count = 3;
const int s_mfi_name = 0; // Modify an index
const int s_mfi_database = 1;
const int s_mfi_count = 2;
const int s_ffr_form = 0;
const int s_ffr_statement = 1;
const int s_ffr_count = 2;
const int s_frm_form = 0;
const int s_frm_context = 1;
const int s_frm_database = 2;
const int s_frm_count = 3;
const int s_men_string = 0;
const int s_men_labels = 1;
const int s_men_statements = 2;
const int s_men_count = 3;
const int s_fun_args = 0;
const int s_fun_function = 1;
const int s_fun_count = 2;
const int s_idx_field = 0; // array subscript
const int s_idx_subs = 1;
const int s_idx_count = 2;
const int s_crv_name = 0;
const int s_crv_rse = 1;
const int s_crv_count = 2;
const int s_grant_fields = 0;
const int s_grant_relation = 1;
const int s_grant_users = 2;
const int s_grant_privileges = 3;
const int s_grant_count = 4;
// some flags for index definitions
const USHORT s_dfi_flag_unique = 1;
const USHORT s_dfi_flag_inactive = 2;
const USHORT s_dfi_flag_activity = 4;
const USHORT s_dfi_flag_selectivity = 8;
const USHORT s_dfi_flag_descending = 16;
const USHORT s_dfi_flag_order = 32;
const USHORT s_dfi_flag_statistics = 64;
#endif // QLI_COMPILE_H