📄 dsl.y
字号:
| DEFAULT | NULLN | PARM ;function: fname '(' '*' ')' | fname '(' expr_list ')' | fname '(' UNIQUE path ')' ;expr_list: expr | expr_list ',' expr ;/*Data Definition Language*/create: CREATE cluster TABLE path tfd_list with_clause | CREATE VIEW view_name vfd AS select_statement with_clause | CREATE FRAGMENT view_name vfd AS select_statement with_clause | CREATE SNAPSHOT view_name vfd AS select_statement with_clause | CREATE SYNONYM syn_name FOR path | CREATE unique cluster INDEX index_name ON path '(' order_list ')' with_clause | CREATE DATABASE dbname TYPE dbtype ON hname with_clause | CREATE DOMAIN domain_name_list IS domain_types defaults domain_restrict | CREATE TYPE type_name IS | CREATE CONSTRAINT constr_name trigger_list CHECK predicateelse_clause ;alter: ALTER TABLE path alter_list with_clause | ALTER TABLE path path with_clause ;drop: DROP INDEX index_name | DROP object_type path ;comment: COMMENT ON path | COMMENT ON path IS comment_str ;info: INFO ;comment_str: STRING | STRING ',' STRING ;trigger_list: trigger | trigger_list ',' trigger ;trigger: AT event | AFTER event OF path FROM path | BEFORE event OF path FROM path ;event: COMMIT | DELETE | INSERT | UPDATE ;else_clause: | ELSE statement ;index_name: path;cluster: | IDENTIFIER /* |CLUSTERED |NONCLUSTERED */ ;view_name: record | user '.' record ;with_clause: |WITH option_list ;option_list: option | option ',' option_list ;option: IDENTIFIER | IDENTIFIER IDENTIFIER | IDENTIFIER EQ const/*reconfigure| check option |logfile = "file_name"*/ ;tfd_list: primary_key foreign_keys field_dis ;field_dis: '(' tfd_fields ')' ;primary_key: | PRIMARY '(' primary_keys ')' ;primary_keys: field | primary_keys ',' field ;foreign_keys: | foreign_keys foreign_key ;foreign_key: FOREIGN '(' f_key IDENTIFIES path nulls DELETE OF path effect UPDATE OF path effect')' ;/*f_keys: f_key | f_keys ',' f_key ;*/nulls: NULLS ALLOWED | NULLS NOT ALLOWED ;tfd_fields: tfd | tfd_fields ',' tfd ;tfd: field o_domain_name | field '(' field_list ')' o_domain_name ;o_domain_name: |domain_name ;type_name: IDENTIFIER /*Base types: boolean(bit)| char|short_integer|long_integer| byte|short_word|long_word| float|double|extended|bcd|bcdfltpredefine extentions: char|byte[1-2,000,000,000] [short|long]_[integer|word][1-2,000,000,000] float|double|extended[1-2,000,000,000] bcd|bcdflt[1-2,000,000,000] date_[] money time_[m,ap,sm,sap,micro] */ ;domain_name_list: domain_name | domain_name_list ',' domain_name ;domain_types: domain_type | '(' domain_type_list ')' ;defaults: | DEFAULT ;domain_restrict: where_clause | select_statement ;domain_type_list: | domain_type_list ',' domain_type ;domain_type: type_name | type_name '(' i_list ')' ;i_list: INTEGER | i_list ',' INTEGER ;vfd: | '(' vfd_list ')' ;vfd_list: field | vfd_list ',' field ;alter_list: alteration | alter_list ',' alteration ;alteration: ADD '(' a_tfd_fields ')' | DROP vfd | MODIFY '(' m_tfd_fields ')' ;a_tfd_fields: tfd before | a_tfd_fields ',' tfd before ;m_tfd_fields: field tfd | m_tfd_fields ',' field tfd ;before: | BEFORE field ;effect: IDENTIFIER/* CASCADES | RESTRICTED | NULLIFIES*/ ;/**/object_type: DATABASE| DOMAIN| PROGRAM| SYNONYM| TYPE| TABLE| VIEW ;/*Security*/grant: GRANT privileges gr_on TO users at_option between_option on_option where_option wgo ;at_option: |AT terminal_list ;between_option: |BETWEEN time1 AND time2 ;on_option: |ON day1 AND day2 ;where_option: |WHERE predicate ;wgo: | WITH GRANT OPTION ;terminal_list: tty | tty ',' terminal_list ;revoke: REVOKE privileges gr_on FROM users ;privileges: | privileg | privileges ',' privileg ;privileg: priv_name | priv_name '(' field_list ')' ;gr_on: | ON object_type objects ;users: user | users ',' user ;objects: IDENTIFIER | objects ',' IDENTIFIER ;/*Transaction Management*/lock: LOCK TABLE path IN mode MODE ;begin: BBEGIN work ;commit: COMMIT work ;rollback: ROLLBACK work | ROLLBACK SYNC ;rollforward: ROLLFORWARD path FROM path roll_op ;roll_op: |TO STRING time ;time: |STRING ;sync: SYNC ;work: |WORK ;/*Acess management*/close: CLOSE dbname ;open: OPEN dbname password ;password: |IDENTIFIER ;/*DataBase Maintaince and Configuration*/audit: AUDIT into_clause path_list from_clause where_clause /* Set audit flag */ ;check: CHECK ;dump: DUMP DATABASE dbname to_clause | DUMP TABLE dbname to_clause ;repair: REPAIR ;restore: RESTORE DATABASE dbname rfrom_clause | RESTORE TABLE dbname rfrom_clause ;to_clause: |TO filename ;rfrom_clause: |FROM filename ;set: SET option_list ;where_clause: | WHERE predicate ;from_clause: | FROM path_list ;/*CONSTRAND IDENTIFIERS*/mode: IDENTIFIER/* check SHARE | EXCLUSIVE | OFF*/ ;priv_name: IDENTIFIER | ALTER | CREATE | DELETE | DUMP | RESTORE | DROP | INSERT | LOCK | SELECT | UPDATE/* check | CREATE_TABLE | CREATE_DATABASE | CREATE_INDEX | ALL*/ ;s_control: IDENTIFIER ;/*IDENTIFIERS*/alias: IDENTIFIER;constr_name: IDENTIFIER;/* Constraint Name */day1: IDENTIFIER;day2: IDENTIFIER;dbtype: PARM | IDENTIFIER;/* Database type */dbname: PARM | IDENTIFIER;/* Database name */domain_name: IDENTIFIER;field: IDENTIFIER;filename: PARM | IDENTIFIER; /* File name */fname: IDENTIFIER; /* FUNCTION NAME */f_key: IDENTIFIER;hname: IDENTIFIER;parm_name: IDENTIFIER;/* Field or Record path element */path_element: IDENTIFIER {strcat(path_name,$1);};prog_name: IDENTIFIER;record: IDENTIFIER;syn_name: IDENTIFIER;tty: IDENTIFIER;time1: IDENTIFIER;time2: IDENTIFIER;user: PARM | IDENTIFIER;/*range_num: IDENTIFIER | INTEGER;*/%%#include "lex.yy.c"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -