📄 preproc.y
字号:
%name-prefix="base_yy"%locations%union { double dval; char *str; int ival; struct when action; struct index index; int tagname; struct this_type type; enum ECPGttype type_enum; enum ECPGdtype dtype_enum; struct fetch_desc descriptor; struct su_symbol struct_union; struct prep prep;}/* special embedded SQL token */%token SQL_ALLOCATE SQL_AUTOCOMMIT SQL_BOOL SQL_BREAK SQL_CALL SQL_CARDINALITY SQL_CONNECT SQL_CONTINUE SQL_COUNT SQL_DATA SQL_DATETIME_INTERVAL_CODE SQL_DATETIME_INTERVAL_PRECISION SQL_DESCRIBE SQL_DESCRIPTOR SQL_DISCONNECT SQL_FOUND SQL_FREE SQL_GO SQL_GOTO SQL_IDENTIFIED SQL_INDICATOR SQL_KEY_MEMBER SQL_LENGTH SQL_LONG SQL_NULLABLE SQL_OCTET_LENGTH SQL_OPEN SQL_OUTPUT SQL_REFERENCE SQL_RETURNED_LENGTH SQL_RETURNED_OCTET_LENGTH SQL_SCALE SQL_SECTION SQL_SHORT SQL_SIGNED SQL_SQL SQL_SQLERROR SQL_SQLPRINT SQL_SQLWARNING SQL_START SQL_STOP SQL_STRUCT SQL_UNSIGNED SQL_VAR SQL_WHENEVER/* C token */%token S_ADD S_AND S_ANYTHING S_AUTO S_CONST S_DEC S_DIV S_DOTPOINT S_EQUAL S_EXTERN S_INC S_LSHIFT S_MEMPOINT S_MEMBER S_MOD S_MUL S_NEQUAL S_OR S_REGISTER S_RSHIFT S_STATIC S_SUB S_VOLATILE S_TYPEDEF/* I need this and don't know where it is defined inside the backend */%token TYPECAST/* ordinary key words in alphabetical order */%token <keyword> ABORT_P ABSOLUTE_P ACCESS ACTION ADD_P ADMIN AFTER AGGREGATE ALL ALSO ALTER ALWAYS ANALYSE ANALYZE AND ANY ARRAY AS ASC ASSERTION ASSIGNMENT ASYMMETRIC AT AUTHORIZATION BACKWARD BEFORE BEGIN_P BETWEEN BIGINT BINARY BIT BOOLEAN_P BOTH BY CACHE CALLED CASCADE CASCADED CASE CAST CHAIN CHAR_P CHARACTER CHARACTERISTICS CHECK CHECKPOINT CLASS CLOSE CLUSTER COALESCE COLLATE COLUMN COMMENT COMMIT COMMITTED CONCURRENTLY CONFIGURATION CONNECTION CONSTRAINT CONSTRAINTS CONTENT_P CONVERSION_P COPY COST CREATE CREATEDB CREATEROLE CREATEUSER CROSS CSV CURRENT_P CURRENT_DATE CURRENT_ROLE CURRENT_TIME CURRENT_TIMESTAMP CURRENT_USER CURSOR CYCLE DATABASE DAY_P DEALLOCATE DEC DECIMAL_P DECLARE DEFAULT DEFAULTS DEFERRABLE DEFERRED DEFINER DELETE_P DELIMITER DELIMITERS DESC DICTIONARY DISABLE_P DISCARD DISTINCT DO DOCUMENT_P DOMAIN_P DOUBLE_P DROP EACH ELSE ENABLE_P ENCODING ENCRYPTED END_P ENUM_P ESCAPE EXCEPT EXCLUSIVE EXCLUDING EXECUTE EXISTS EXPLAIN EXTERNAL EXTRACT FALSE_P FAMILY FETCH FIRST_P FLOAT_P FOR FORCE FOREIGN FORWARD FREEZE FROM FULL FUNCTION GET GLOBAL GRANT GRANTED GREATEST GROUP_P HANDLER HAVING HEADER_P HOLD HOUR_P IF_P ILIKE IMMEDIATE IMMUTABLE IMPLICIT_P IN_P INCLUDING INCREMENT INDEX INDEXES INHERIT INHERITS INITIALLY INNER_P INOUT INPUT_P INSENSITIVE INSERT INSTEAD INT_P INTEGER INTERSECT INTERVAL INTO INVOKER IS ISNULL ISOLATION JOIN KEY LANCOMPILER LANGUAGE LARGE_P LAST_P LEADING LEAST LEFT LEVEL LIKE LIMIT LISTEN LOAD LOCAL LOCALTIME LOCALTIMESTAMP LOCATION LOCK_P LOGIN_P MAPPING MATCH MAXVALUE MINUTE_P MINVALUE MODE MONTH_P MOVE NAME_P NAMES NATIONAL NATURAL NCHAR NEW NEXT NO NOCREATEDB NOCREATEROLE NOCREATEUSER NOINHERIT NOLOGIN_P NONE NOSUPERUSER NOT NOTHING NOTIFY NOTNULL NOWAIT NULL_P NULLIF NULLS_P NUMERIC OBJECT_P OF OFF OFFSET OIDS OLD ON ONLY OPERATOR OPTION OR ORDER OUT_P OUTER_P OVERLAPS OVERLAY OWNED OWNER PARSER PARTIAL PASSWORD PLACING PLANS POSITION PRECISION PRESERVE PREPARE PREPARED PRIMARY PRIOR PRIVILEGES PROCEDURAL PROCEDURE QUOTE READ REAL REASSIGN RECHECK REFERENCES REINDEX RELATIVE_P RELEASE RENAME REPEATABLE REPLACE REPLICA RESET RESTART RESTRICT RETURNING RETURNS REVOKE RIGHT ROLE ROLLBACK ROW ROWS RULE SAVEPOINT SCHEMA SCROLL SEARCH SECOND_P SECURITY SELECT SEQUENCE SERIALIZABLE SESSION SESSION_USER SET SETOF SHARE SHOW SIMILAR SIMPLE SMALLINT SOME STABLE STANDALONE_P START STATEMENT STATISTICS STDIN STDOUT STORAGE STRICT_P STRIP_P SUBSTRING SUPERUSER_P SYMMETRIC SYSID SYSTEM_P TABLE TABLESPACE TEMP TEMPLATE TEMPORARY TEXT_P THEN TIME TIMESTAMP TO TRAILING TRANSACTION TREAT TRIGGER TRIM TRUE_P TRUNCATE TRUSTED TYPE_P UNCOMMITTED UNENCRYPTED UNION UNIQUE UNKNOWN UNLISTEN UNTIL UPDATE USER USING VACUUM VALID VALIDATOR VALUE_P VALUES VARCHAR VARYING VERBOSE VERSION_P VIEW VOLATILE WHEN WHERE WHITESPACE_P WITH WITHOUT WORK WRITE XML_P XMLATTRIBUTES XMLCONCAT XMLELEMENT XMLFOREST XMLPARSE XMLPI XMLROOT XMLSERIALIZE YEAR_P YES_P ZONE/* The grammar thinks these are keywords, but they are not in the keywords.c * list and so can never be entered directly. The filter in parser.c * creates these tokens when required. */%token NULLS_FIRST NULLS_LAST WITH_CASCADED WITH_LOCAL WITH_CHECK/* Special token types, not actually keywords - see the "lex" file */%token <str> IDENT SCONST Op CSTRING CVARIABLE CPP_LINE IP BCONST%token <str> XCONST DOLCONST ECONST NCONST%token <ival> ICONST PARAM%token <dval> FCONST/* precedence: lowest to highest */%nonassoc SET /* see relation_expr_opt_alias */%left UNION EXCEPT%left INTERSECT%left OR%left AND%right NOT%right '='%nonassoc '<' '>'%nonassoc LIKE ILIKE SIMILAR%nonassoc ESCAPE%nonassoc OVERLAPS%nonassoc BETWEEN%nonassoc IN_P%left POSTFIXOP /* dummy for postfix Op rules */%left Op OPERATOR /* multi-character ops and user-defined operators */%nonassoc NOTNULL%nonassoc ISNULL%nonassoc IS NULL_P TRUE_P FALSE_P UNKNOWN%left '+' '-'%left '*' '/' '%'%left '^'/* Unary Operators */%left AT ZONE%right UMINUS%left '[' ']'%left '(' ')'%left TYPECAST%left '.'%left JOIN CROSS LEFT FULL RIGHT INNER_P NATURAL/* kluge to keep xml_whitespace_option from causing shift/reduce conflicts */%right PRESERVE STRIP_P%type <str> Iconst Fconst Sconst TransactionStmt CreateStmt RoleId%type <str> CreateAsElement OptCreateAs CreateAsList CreateAsStmt%type <str> comment_text ConstraintDeferrabilitySpec TableElementList%type <str> key_match ColLabel SpecialRuleRelation ColId columnDef%type <str> ColConstraint ColConstraintElem drop_type Bconst Iresult%type <str> TableConstraint OptTableElementList Xconst opt_transaction%type <str> ConstraintElem key_actions ColQualList cluster_index_specification%type <str> target_list target_el alias_clause type_func_name_keyword%type <str> qualified_name database_name alter_using type_function_name%type <str> access_method attr_name index_name name func_name%type <str> file_name AexprConst c_expr ConstTypename var_list%type <str> a_expr b_expr TruncateStmt CommentStmt OnCommitOption opt_by%type <str> opt_indirection expr_list extract_list extract_arg%type <str> position_list substr_list substr_from alter_column_default%type <str> trim_list in_expr substr_for attrs TableFuncElement%type <str> Typename SimpleTypename Numeric opt_float DiscardStmt%type <str> Character character opt_varying opt_charset enum_val_list%type <str> opt_timezone opt_interval table_ref fetch_direction%type <str> ConstDatetime AlterDomainStmt AlterSeqStmt alter_rel_cmds%type <str> SelectStmt into_clause OptTemp ConstraintAttributeSpec%type <str> opt_table opt_all sort_clause sortby_list ConstraintAttr%type <str> sortby qualified_name_list name_list ColId_or_Sconst%type <str> group_clause having_clause from_clause opt_distinct opt_hold%type <str> join_outer where_clause relation_expr sub_type arg_class%type <str> opt_column_list insert_rest InsertStmt param_name%type <str> columnList DeleteStmt UpdateStmt DeclareCursorStmt%type <str> NotifyStmt columnElem UnlistenStmt TableElement fetch_count%type <str> copy_delimiter ListenStmt CopyStmt copy_file_name opt_binary%type <str> FetchStmt from_in CreateOpClassStmt returning_clause%type <str> ClosePortalStmt DropStmt VacuumStmt AnalyzeStmt opt_verbose%type <str> opt_full func_arg OptWith opt_freeze alter_table_cmd%type <str> analyze_keyword opt_name_list ExplainStmt index_params%type <str> index_elem opt_class access_method_clause alter_table_cmds%type <str> index_opt_unique IndexStmt func_return ConstInterval%type <str> func_args_list func_args opt_with def_arg overlay_placing%type <str> def_elem def_list definition DefineStmt select_with_parens%type <str> opt_instead event RuleActionList opt_using CreateAssertStmt%type <str> RuleActionStmtOrEmpty RuleActionMulti func_as reindex_type%type <str> RuleStmt opt_column oper_argtypes NumConst var_name%type <str> MathOp RemoveFuncStmt ECPGunreserved_con opt_database_name%type <str> RemoveAggrStmt opt_procedural select_no_parens CreateCastStmt%type <str> RemoveOperStmt RenameStmt all_Op opt_trusted opt_lancompiler%type <str> VariableSetStmt var_value zone_value VariableShowStmt%type <str> VariableResetStmt AlterTableStmt from_list overlay_list%type <str> relation_name OptTableSpace LockStmt opt_lock %type <str> CreateUserStmt AlterUserStmt CreateSeqStmt OptSeqList%type <str> OptSeqElem TriggerForSpec TriggerForOpt TriggerForType%type <str> DropTrigStmt TriggerOneEvent TriggerEvents RuleActionStmt%type <str> TriggerActionTime CreateTrigStmt DropPLangStmt DropCastStmt%type <str> CreatePLangStmt TriggerFuncArgs TriggerFuncArg simple_select%type <str> ViewStmt LoadStmt CreatedbStmt createdb_opt_item ExplainableStmt%type <str> createdb_opt_list opt_encoding OptInherit opt_equal%type <str> privilege_list privilege privilege_target opt_if_exists%type <str> opt_grant_grant_option cursor_options DropOwnedStmt%type <str> transaction_mode_list_or_empty transaction_mode_list%type <str> function_with_argtypes_list function_with_argtypes IntConstVar%type <str> DropdbStmt ClusterStmt grantee RevokeStmt Bit DropOpClassStmt%type <str> GrantStmt privileges PosAllConst constraints_set_list%type <str> ConstraintsSetStmt AllConst CreateDomainStmt opt_nowait%type <str> case_expr when_clause_list case_default case_arg when_clause%type <str> select_clause opt_select_limit select_limit_value opt_recheck%type <str> ConstraintTimeSpec AlterDatabaseSetStmt DropAssertStmt%type <str> select_offset_value ReindexStmt join_type opt_boolean%type <str> join_qual joined_table opclass_item relation_expr_opt_alias%type <str> lock_type array_expr_list ReassignOwnedStmt for_locking_item%type <str> OptConstrFromTable OptTempTableName StringConst array_expr%type <str> constraints_set_mode comment_type opt_check_option%type <str> CreateGroupStmt AlterGroupStmt DropGroupStmt key_delete%type <str> opt_force key_update CreateSchemaStmt PosIntStringConst%type <str> IntConst PosIntConst grantee_list func_type opt_or_replace%type <str> select_limit CheckPointStmt ECPGColId old_aggr_list%type <str> OptSchemaName OptSchemaEltList schema_stmt opt_drop_behavior%type <str> handler_name any_name_list any_name opt_as insert_column_list%type <str> columnref values_clause AllConstVar prep_type_clause ExecuteStmt%type <str> insert_column_item DropRuleStmt ctext_expr execute_param_clause %type <str> createfunc_opt_item set_rest alter_rel_cmd%type <str> CreateFunctionStmt createfunc_opt_list func_table%type <str> DropUserStmt copy_from copy_opt_list copy_opt_item%type <str> opt_oids TableLikeClause key_action opt_definition%type <str> cast_context row qual_Op qual_all_Op opt_default%type <str> CreateConversionStmt any_operator opclass_item_list%type <str> iso_level type_list CharacterWithLength ConstCharacter%type <str> CharacterWithoutLength BitWithLength BitWithoutLength%type <str> ConstBit GenericType TableFuncElementList opt_analyze%type <str> opt_sort_clause subquery_Op transaction_mode_item%type <str> ECPGWhenever ECPGConnect connection_target ECPGOpen%type <str> indicator ecpg_using ecpg_into DeallocateStmt%type <str> storage_declaration storage_clause opt_initializer c_anything%type <str> variable_list variable c_thing c_term ECPGKeywords_vanames%type <str> opt_pointer ECPGDisconnect dis_name storage_modifier%type <str> execstring server_name ECPGVarDeclaration func_expr%type <str> connection_object opt_server opt_port c_stuff c_stuff_item%type <str> user_name opt_user char_variable ora_user ident opt_reference%type <str> var_type_declarations quoted_ident_stringvar ECPGKeywords_rest%type <str> db_prefix server opt_options opt_connection_name c_list%type <str> ECPGSetConnection ECPGTypedef c_args ECPGKeywords ECPGCKeywords%type <str> enum_type civar civarind ECPGCursorStmt PreparableStmt%type <str> ECPGFree ECPGDeclare ECPGVar at enum_definition%type <str> struct_union_type s_struct_union vt_declarations execute_rest%type <str> var_declaration type_declaration single_vt_declaration%type <str> ECPGSetAutocommit on_off variable_declarations ECPGDescribe%type <str> ECPGAllocateDescr ECPGDeallocateDescr symbol opt_output%type <str> ECPGGetDescriptorHeader ECPGColLabel SetResetClause AlterUserSetStmt%type <str> reserved_keyword unreserved_keyword ecpg_interval opt_ecpg_using%type <str> col_name_keyword precision opt_scale ECPGExecuteImmediateStmt%type <str> ECPGTypeName using_list ECPGColLabelCommon UsingConst %type <str> using_descriptor into_descriptor opt_nulls_order opt_asc_desc%type <str> prepared_name struct_union_type_with_symbol OptConsTableSpace%type <str> ECPGunreserved ECPGunreserved_interval cvariable opt_bit_field%type <str> AlterOwnerStmt OptTableSpaceOwner CreateTableSpaceStmt%type <str> DropTableSpaceStmt indirection indirection_el ECPGSetDescriptorHeader%type <str> AlterDatabaseStmt CreateRoleStmt OptRoleList AlterRoleStmt AlterRoleSetStmt%type <str> DropRoleStmt add_drop opt_validator common_func_opt_item%type <str> opt_grant_admin_option AlterFunctionStmt alterfunc_opt_list opt_restrict%type <str> AlterObjectSchemaStmt alterdb_opt_list for_locking_clause opt_for_locking_clause%type <str> locked_rels_list opt_granted_by RevokeRoleStmt alterdb_opt_item using_clause%type <str> GrantRoleStmt opt_asymmetric aggr_args old_aggr_definition%type <str> old_aggr_elem for_locking_items TableLikeOptionList TableLikeOption%type <str> set_target_list set_clause_list set_clause multiple_set_clause%type <str> ctext_expr_list ctext_row single_set_clause set_target opt_type_modifiers%type <str> opclass_drop_list opclass_drop DropOpFamilyStmt opt_opfamily%type <str> CreateOpFamilyStmt AlterOpFamilyStmt create_as_target%type <str> xml_attributes xml_attribute_list document_or_content xml_whitespace_option%type <str> opt_xml_root_standalone xml_root_version xml_attribute_el %type <str> where_or_current_clause AlterTSConfigurationStmt AlterTSDictionaryStmt%type <struct_union> s_struct_union_symbol%type <descriptor> ECPGGetDescriptor ECPGSetDescriptor%type <type_enum> simple_type signed_type unsigned_type%type <dtype_enum> descriptor_item desc_header_item%type <type> var_type%type <prep> PrepareStmt%type <action> action%type <index> opt_array_bounds%%prog: statements;statements: /*EMPTY*/ | statements statement ;statement: ecpgstart at stmt ';' { connection = NULL; } | ecpgstart stmt ';' | ecpgstart ECPGVarDeclaration { fprintf(yyout, "%s", $2); free($2); output_line_number(); } | ECPGDeclaration | c_thing { fprintf(yyout, "%s", $1); free($1); } | CPP_LINE { fprintf(yyout, "%s", $1); free($1); } | '{' { braces_open++; fputs("{", yyout); } | '}' { remove_typedefs(braces_open); remove_variables(braces_open--); fputs("}", yyout); } ;at: AT connection_object { connection = $2; /* * Do we have a variable as connection target? * Remove the variable from the variable * list or else it will be used twice */ if (argsinsert != NULL) argsinsert = NULL; } ;stmt: AlterDatabaseStmt { output_statement($1, 0, ECPGst_normal); } | AlterDatabaseSetStmt { output_statement($1, 0, ECPGst_normal); } | AlterDomainStmt { output_statement($1, 0, ECPGst_normal); } | AlterFunctionStmt { output_statement($1, 0, ECPGst_normal); } | AlterGroupStmt { output_statement($1, 0, ECPGst_normal); } | AlterObjectSchemaStmt { output_statement($1, 0, ECPGst_normal); } | AlterOwnerStmt { output_statement($1, 0, ECPGst_normal); } | AlterSeqStmt { output_statement($1, 0, ECPGst_normal); } | AlterTableStmt { output_statement($1, 0, ECPGst_normal); } | AlterRoleSetStmt { output_statement($1, 0, ECPGst_normal); } | AlterRoleStmt { output_statement($1, 0, ECPGst_normal); } | AlterTSConfigurationStmt { output_statement($1, 0, ECPGst_normal); } | AlterTSDictionaryStmt { output_statement($1, 0, ECPGst_normal); } | AlterUserStmt { output_statement($1, 0, ECPGst_normal); } | AlterUserSetStmt { output_statement($1, 0, ECPGst_normal); } | AnalyzeStmt { output_statement($1, 0, ECPGst_normal); } | CheckPointStmt { output_statement($1, 0, ECPGst_normal); } | ClosePortalStmt {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -