⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sql2.v

📁 lex 和yacc 的中文指南
💻 V
📖 第 1 页 / 共 5 页
字号:
#############################################################################
#                         A C A D E M I C   C O P Y
# 
# This file was produced by an ACADEMIC COPY of Parser Generator. It is for
# use in non-commercial software only. An ACADEMIC COPY of Parser Generator
# can only be used by a student, or a member of an academic community. If
# however you want to use Parser Generator for commercial purposes then you
# will need to purchase a license. For more information see the online help or
# go to the Bumble-Bee Software homepage at:
# 
# http://www.bumblebeesoftware.com
# 
# This notice must remain present in the file. It cannot be removed.
#############################################################################

#############################################################################
# sql2.v
# YACC verbose file generated from sql2.y.
# 
# Date: 06/06/06
# Time: 22:50:47
# 
# AYACC Version: 2.07
#############################################################################


##############################################################################
# Rules
##############################################################################

    0  $accept : sql_list $end

    1  sql_list : sql ';'
    2           | sql_list sql ';'

    3  sql : schema

    4  schema : CREATE SCHEMA AUTHORIZATION user opt_schema_element_list

    5  opt_schema_element_list :
    6                          | schema_element_list

    7  schema_element_list : schema_element
    8                      | schema_element_list schema_element

    9  schema_element : base_table_def
   10                 | view_def
   11                 | privilege_def

   12  base_table_def : CREATE TABLE table '(' base_table_element_commalist ')'

   13  base_table_element_commalist : base_table_element
   14                               | base_table_element_commalist ',' base_table_element

   15  base_table_element : column_def
   16                     | table_constraint_def

   17  column_def : column data_type column_def_opt_list

   18  column_def_opt_list :
   19                      | column_def_opt_list column_def_opt

   20  column_def_opt : NOT NULLX
   21                 | NOT NULLX UNIQUE
   22                 | NOT NULLX PRIMARY KEY
   23                 | DEFAULT literal
   24                 | DEFAULT NULLX
   25                 | DEFAULT USER
   26                 | CHECK '(' search_condition ')'
   27                 | REFERENCES table
   28                 | REFERENCES table '(' column_commalist ')'

   29  table_constraint_def : UNIQUE '(' column_commalist ')'
   30                       | PRIMARY KEY '(' column_commalist ')'
   31                       | FOREIGN KEY '(' column_commalist ')' REFERENCES table
   32                       | FOREIGN KEY '(' column_commalist ')' REFERENCES table '(' column_commalist ')'
   33                       | CHECK '(' search_condition ')'

   34  column_commalist : column
   35                   | column_commalist ',' column

   36  view_def : CREATE VIEW table opt_column_commalist AS query_spec opt_with_check_option

   37  opt_with_check_option :
   38                        | WITH CHECK OPTION

   39  opt_column_commalist :
   40                       | '(' column_commalist ')'

   41  privilege_def : GRANT privileges ON table TO grantee_commalist opt_with_grant_option

   42  opt_with_grant_option :
   43                        | WITH GRANT OPTION

   44  privileges : ALL PRIVILEGES
   45             | ALL
   46             | operation_commalist

   47  operation_commalist : operation
   48                      | operation_commalist ',' operation

   49  operation : SELECT
   50            | INSERT
   51            | DELETE
   52            | UPDATE opt_column_commalist
   53            | REFERENCES opt_column_commalist

   54  grantee_commalist : grantee
   55                    | grantee_commalist ',' grantee

   56  grantee : PUBLIC
   57          | user

   58  sql : cursor_def

   59  cursor_def : DECLARE cursor CURSOR FOR query_exp opt_order_by_clause

   60  opt_order_by_clause :
   61                      | ORDER BY ordering_spec_commalist

   62  ordering_spec_commalist : ordering_spec
   63                          | ordering_spec_commalist ',' ordering_spec

   64  ordering_spec : INTNUM opt_asc_desc
   65                | column_ref opt_asc_desc

   66  opt_asc_desc :
   67               | ASC
   68               | DESC

   69  sql : manipulative_statement

   70  manipulative_statement : close_statement
   71                         | commit_statement
   72                         | delete_statement_positioned
   73                         | delete_statement_searched
   74                         | fetch_statement
   75                         | insert_statement
   76                         | open_statement
   77                         | rollback_statement
   78                         | select_statement
   79                         | update_statement_positioned
   80                         | update_statement_searched

   81  close_statement : CLOSE cursor

   82  commit_statement : COMMIT WORK

   83  delete_statement_positioned : DELETE FROM table WHERE CURRENT OF cursor

   84  delete_statement_searched : DELETE FROM table opt_where_clause

   85  fetch_statement : FETCH cursor INTO target_commalist

   86  insert_statement : INSERT INTO table opt_column_commalist values_or_query_spec

   87  values_or_query_spec : VALUES '(' insert_atom_commalist ')'
   88                       | query_spec

   89  insert_atom_commalist : insert_atom
   90                        | insert_atom_commalist ',' insert_atom

   91  insert_atom : atom
   92              | NULLX

   93  open_statement : OPEN cursor

   94  rollback_statement : ROLLBACK WORK

   95  select_statement : SELECT opt_all_distinct selection INTO target_commalist table_exp

   96  opt_all_distinct :
   97                   | ALL
   98                   | DISTINCT

   99  update_statement_positioned : UPDATE table SET assignment_commalist WHERE CURRENT OF cursor

  100  assignment_commalist :
  101                       | assignment
  102                       | assignment_commalist ',' assignment

  103  assignment : column '=' scalar_exp
  104             | column '=' NULLX

  105  update_statement_searched : UPDATE table SET assignment_commalist opt_where_clause

  106  target_commalist : target
  107                   | target_commalist ',' target

  108  target : parameter_ref

  109  opt_where_clause :
  110                   | where_clause

  111  query_exp : query_term
  112            | query_exp UNION query_term
  113            | query_exp UNION ALL query_term

  114  query_term : query_spec
  115             | '(' query_exp ')'

  116  query_spec : SELECT opt_all_distinct selection table_exp

  117  selection : scalar_exp_commalist
  118            | '*'

  119  table_exp : from_clause opt_where_clause opt_group_by_clause opt_having_clause

  120  from_clause : FROM table_ref_commalist

  121  table_ref_commalist : table_ref
  122                      | table_ref_commalist ',' table_ref

  123  table_ref : table
  124            | table range_variable

  125  where_clause : WHERE search_condition

  126  opt_group_by_clause :
  127                      | GROUP BY column_ref_commalist

  128  column_ref_commalist : column_ref
  129                       | column_ref_commalist ',' column_ref

  130  opt_having_clause :
  131                    | HAVING search_condition

  132  search_condition :
  133                   | search_condition OR search_condition
  134                   | search_condition AND search_condition
  135                   | NOT search_condition
  136                   | '(' search_condition ')'
  137                   | predicate

  138  predicate : comparison_predicate
  139            | between_predicate
  140            | like_predicate
  141            | test_for_null
  142            | in_predicate
  143            | all_or_any_predicate
  144            | existence_test

  145  comparison_predicate : scalar_exp COMPARISON scalar_exp
  146                       | scalar_exp COMPARISON subquery

  147  between_predicate : scalar_exp NOT BETWEEN scalar_exp AND scalar_exp
  148                    | scalar_exp BETWEEN scalar_exp AND scalar_exp

  149  like_predicate : scalar_exp NOT LIKE atom opt_escape
  150                 | scalar_exp LIKE atom opt_escape

  151  opt_escape :
  152             | ESCAPE atom

  153  test_for_null : column_ref IS NOT NULLX
  154                | column_ref IS NULLX

  155  in_predicate : scalar_exp NOT IN '(' subquery ')'
  156               | scalar_exp IN '(' subquery ')'
  157               | scalar_exp NOT IN '(' atom_commalist ')'
  158               | scalar_exp IN '(' atom_commalist ')'

  159  atom_commalist : atom
  160                 | atom_commalist ',' atom

  161  all_or_any_predicate : scalar_exp COMPARISON any_all_some subquery

  162  any_all_some : ANY
  163               | ALL
  164               | SOME

  165  existence_test : EXISTS subquery

  166  subquery : '(' SELECT opt_all_distinct selection table_exp ')'

  167  scalar_exp : scalar_exp '+' scalar_exp
  168             | scalar_exp '-' scalar_exp
  169             | scalar_exp '*' scalar_exp
  170             | scalar_exp '/' scalar_exp
  171             | '+' scalar_exp
  172             | '-' scalar_exp
  173             | atom
  174             | column_ref
  175             | function_ref
  176             | '(' scalar_exp ')'

  177  scalar_exp_commalist : scalar_exp
  178                       | scalar_exp_commalist ',' scalar_exp

  179  atom : parameter_ref
  180       | literal
  181       | USER

  182  parameter_ref : parameter
  183                | parameter parameter
  184                | parameter INDICATOR parameter

  185  function_ref : AMMSC '(' '*' ')'
  186               | AMMSC '(' DISTINCT column_ref ')'
  187               | AMMSC '(' ALL scalar_exp ')'
  188               | AMMSC '(' scalar_exp ')'

  189  literal : STRING
  190          | INTNUM
  191          | APPROXNUM

  192  table : NAME
  193        | NAME '.' NAME

  194  column_ref : NAME
  195             | NAME '.' NAME
  196             | NAME '.' NAME '.' NAME

  197  data_type : CHARACTER
  198            | CHARACTER '(' INTNUM ')'
  199            | NUMERIC
  200            | NUMERIC '(' INTNUM ')'
  201            | NUMERIC '(' INTNUM ',' INTNUM ')'
  202            | DECIMAL
  203            | DECIMAL '(' INTNUM ')'
  204            | DECIMAL '(' INTNUM ',' INTNUM ')'
  205            | INTEGER
  206            | SMALLINT
  207            | FLOAT
  208            | FLOAT '(' INTNUM ')'
  209            | REAL
  210            | DOUBLE PRECISION

  211  column : NAME

  212  cursor : NAME

  213  parameter : PARAMETER

  214  range_variable : NAME

  215  user : NAME

  216  sql : WHENEVER NOT FOUND when_action
  217      | WHENEVER SQLERROR when_action

  218  when_action : GOTO NAME
  219              | CONTINUE


##############################################################################
# States
##############################################################################

state 0
	$accept : . sql_list $end

	CLOSE  shift 1
	COMMIT  shift 2
	CREATE  shift 3
	DECLARE  shift 4
	DELETE  shift 5
	FETCH  shift 6
	INSERT  shift 7
	OPEN  shift 8
	ROLLBACK  shift 9
	SELECT  shift 10
	UPDATE  shift 11
	WHENEVER  shift 12

	sql_list  goto 13
	sql  goto 14
	schema  goto 15
	cursor_def  goto 16
	manipulative_statement  goto 17
	close_statement  goto 18
	commit_statement  goto 19
	delete_statement_positioned  goto 20
	delete_statement_searched  goto 21
	fetch_statement  goto 22
	insert_statement  goto 23
	open_statement  goto 24
	rollback_statement  goto 25
	select_statement  goto 26
	update_statement_positioned  goto 27
	update_statement_searched  goto 28


state 1
	close_statement : CLOSE . cursor

	NAME  shift 29

	cursor  goto 30


state 2
	commit_statement : COMMIT . WORK

	WORK  shift 31


state 3
	schema : CREATE . SCHEMA AUTHORIZATION user opt_schema_element_list

	SCHEMA  shift 32


state 4
	cursor_def : DECLARE . cursor CURSOR FOR query_exp opt_order_by_clause

	NAME  shift 29

	cursor  goto 33


state 5
	delete_statement_positioned : DELETE . FROM table WHERE CURRENT OF cursor
	delete_statement_searched : DELETE . FROM table opt_where_clause

	FROM  shift 34


state 6
	fetch_statement : FETCH . cursor INTO target_commalist

	NAME  shift 29

	cursor  goto 35


state 7
	insert_statement : INSERT . INTO table opt_column_commalist values_or_query_spec

	INTO  shift 36


state 8
	open_statement : OPEN . cursor

	NAME  shift 29

	cursor  goto 37


state 9
	rollback_statement : ROLLBACK . WORK

	WORK  shift 38


state 10
	select_statement : SELECT . opt_all_distinct selection INTO target_commalist table_exp
	opt_all_distinct : .  (96)

	ALL  shift 39
	DISTINCT  shift 40
	.  reduce 96

	opt_all_distinct  goto 41


state 11
	update_statement_positioned : UPDATE . table SET assignment_commalist WHERE CURRENT OF cursor
	update_statement_searched : UPDATE . table SET assignment_commalist opt_where_clause

	NAME  shift 42

	table  goto 43


state 12
	sql : WHENEVER . NOT FOUND when_action
	sql : WHENEVER . SQLERROR when_action

	NOT  shift 44
	SQLERROR  shift 45


state 13
	$accept : sql_list . $end  (0)
	sql_list : sql_list . sql ';'

	$end  accept
	CLOSE  shift 1
	COMMIT  shift 2
	CREATE  shift 3
	DECLARE  shift 4
	DELETE  shift 5
	FETCH  shift 6
	INSERT  shift 7
	OPEN  shift 8
	ROLLBACK  shift 9
	SELECT  shift 10
	UPDATE  shift 11
	WHENEVER  shift 12

	sql  goto 46
	schema  goto 15
	cursor_def  goto 16
	manipulative_statement  goto 17
	close_statement  goto 18
	commit_statement  goto 19
	delete_statement_positioned  goto 20
	delete_statement_searched  goto 21
	fetch_statement  goto 22
	insert_statement  goto 23
	open_statement  goto 24
	rollback_statement  goto 25
	select_statement  goto 26
	update_statement_positioned  goto 27
	update_statement_searched  goto 28


state 14
	sql_list : sql . ';'

	';'  shift 47


state 15
	sql : schema .  (3)

	.  reduce 3


state 16
	sql : cursor_def .  (58)

	.  reduce 58


state 17
	sql : manipulative_statement .  (69)

	.  reduce 69


state 18
	manipulative_statement : close_statement .  (70)

	.  reduce 70


state 19
	manipulative_statement : commit_statement .  (71)

	.  reduce 71


state 20
	manipulative_statement : delete_statement_positioned .  (72)

	.  reduce 72


state 21
	manipulative_statement : delete_statement_searched .  (73)

	.  reduce 73


state 22
	manipulative_statement : fetch_statement .  (74)

	.  reduce 74


state 23
	manipulative_statement : insert_statement .  (75)

	.  reduce 75


state 24
	manipulative_statement : open_statement .  (76)

	.  reduce 76


state 25
	manipulative_statement : rollback_statement .  (77)

	.  reduce 77


state 26
	manipulative_statement : select_statement .  (78)

	.  reduce 78


state 27
	manipulative_statement : update_statement_positioned .  (79)

	.  reduce 79


state 28
	manipulative_statement : update_statement_searched .  (80)

	.  reduce 80


state 29
	cursor : NAME .  (212)

	.  reduce 212


state 30
	close_statement : CLOSE cursor .  (81)

	.  reduce 81


state 31
	commit_statement : COMMIT WORK .  (82)

	.  reduce 82


state 32
	schema : CREATE SCHEMA . AUTHORIZATION user opt_schema_element_list

	AUTHORIZATION  shift 48


state 33
	cursor_def : DECLARE cursor . CURSOR FOR query_exp opt_order_by_clause

	CURSOR  shift 49


state 34
	delete_statement_positioned : DELETE FROM . table WHERE CURRENT OF cursor
	delete_statement_searched : DELETE FROM . table opt_where_clause

	NAME  shift 42

	table  goto 50


state 35
	fetch_statement : FETCH cursor . INTO target_commalist

	INTO  shift 51


state 36
	insert_statement : INSERT INTO . table opt_column_commalist values_or_query_spec

	NAME  shift 42

	table  goto 52


state 37
	open_statement : OPEN cursor .  (93)

	.  reduce 93


state 38
	rollback_statement : ROLLBACK WORK .  (94)

	.  reduce 94


state 39
	opt_all_distinct : ALL .  (97)

	.  reduce 97

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -