Commit 292015d4 authored by Marko Mäkelä's avatar Marko Mäkelä

MDEV-21254 Remove unused keywords from the InnoDB SQL parser

The InnoDB internal SQL parser, which is used for updating the InnoDB
data dictionary tables (to be removed in MDEV-11655), persistent
statistics (to be refactored in MDEV-15020) and fulltext indexes,
implements some unused keywords and built-in functions:

OUT BINARY BLOB INTEGER FLOAT SUM DISTINCT READ
COMPACT BLOCK_SIZE
TO_CHAR TO_NUMBER BINARY_TO_NUMBER REPLSTR SYSDATE PRINTF ASSERT
RND RND_STR ROW_PRINTF UNSIGNED

Also, procedures are never declared with parameters. Only one top-level
procedure is declared and invoked at a time, and parameters are being
passed via pars_info_t.
parent 59e14b96
......@@ -30,9 +30,6 @@ Created 12/29/1997 Heikki Tuuri
#include "row0sel.h"
#include "rem0cmp.h"
/** The RND function seed */
static ulint eval_rnd = 128367121;
/** Dummy adress used when we should allocate a buffer of size 0 in
eval_node_alloc_val_buf */
......@@ -310,119 +307,17 @@ eval_aggregate(
/*===========*/
func_node_t* node) /*!< in: aggregate operation node */
{
que_node_t* arg;
lint val;
lint arg_val;
int func;
ut_ad(que_node_get_type(node) == QUE_NODE_FUNC);
val = eval_node_get_int_val(node);
func = node->func;
if (func == PARS_COUNT_TOKEN) {
val = val + 1;
} else {
ut_ad(func == PARS_SUM_TOKEN);
arg = node->args;
arg_val = eval_node_get_int_val(arg);
val = val + arg_val;
}
ut_a(node->func == PARS_COUNT_TOKEN);
val = val + 1;
eval_node_set_int_val(node, val);
}
/*****************************************************************//**
Evaluates a predefined function node where the function is not relevant
in benchmarks. */
static
void
eval_predefined_2(
/*==============*/
func_node_t* func_node) /*!< in: predefined function node */
{
que_node_t* arg;
que_node_t* arg1;
que_node_t* arg2 = 0; /* remove warning (??? bug ???) */
lint int_val;
byte* data;
ulint len1;
ulint len2;
int func;
ulint i;
ut_ad(que_node_get_type(func_node) == QUE_NODE_FUNC);
arg1 = func_node->args;
if (arg1) {
arg2 = que_node_get_next(arg1);
}
func = func_node->func;
if (func == PARS_PRINTF_TOKEN) {
arg = arg1;
while (arg) {
dfield_print(que_node_get_val(arg));
arg = que_node_get_next(arg);
}
putc('\n', stderr);
} else if (func == PARS_ASSERT_TOKEN) {
if (!eval_node_get_ibool_val(arg1)) {
fputs("SQL assertion fails in a stored procedure!\n",
stderr);
}
ut_a(eval_node_get_ibool_val(arg1));
/* This function, or more precisely, a debug procedure,
returns no value */
} else if (func == PARS_RND_TOKEN) {
len1 = (ulint) eval_node_get_int_val(arg1);
len2 = (ulint) eval_node_get_int_val(arg2);
ut_ad(len2 >= len1);
if (len2 > len1) {
int_val = (lint) (len1
+ (eval_rnd % (len2 - len1 + 1)));
} else {
int_val = (lint) len1;
}
eval_rnd = ut_rnd_gen_next_ulint(eval_rnd);
eval_node_set_int_val(func_node, int_val);
} else if (func == PARS_RND_STR_TOKEN) {
len1 = (ulint) eval_node_get_int_val(arg1);
data = eval_node_ensure_val_buf(func_node, len1);
for (i = 0; i < len1; i++) {
data[i] = (byte)(97 + (eval_rnd % 3));
eval_rnd = ut_rnd_gen_next_ulint(eval_rnd);
}
} else {
ut_error;
}
}
/*****************************************************************//**
Evaluates a notfound-function node. */
UNIV_INLINE
......@@ -493,46 +388,6 @@ eval_substr(
dfield_set_data(dfield, str1 + len1, len2);
}
/*****************************************************************//**
Evaluates a replstr-procedure node. */
static
void
eval_replstr(
/*=========*/
func_node_t* func_node) /*!< in: function node */
{
que_node_t* arg1;
que_node_t* arg2;
que_node_t* arg3;
que_node_t* arg4;
byte* str1;
byte* str2;
ulint len1;
ulint len2;
arg1 = func_node->args;
arg2 = que_node_get_next(arg1);
ut_ad(que_node_get_type(arg1) == QUE_NODE_SYMBOL);
arg3 = que_node_get_next(arg2);
arg4 = que_node_get_next(arg3);
str1 = static_cast<byte*>(dfield_get_data(que_node_get_val(arg1)));
str2 = static_cast<byte*>(dfield_get_data(que_node_get_val(arg2)));
len1 = (ulint) eval_node_get_int_val(arg3);
len2 = (ulint) eval_node_get_int_val(arg4);
if ((dfield_get_len(que_node_get_val(arg1)) < len1 + len2)
|| (dfield_get_len(que_node_get_val(arg2)) < len2)) {
ut_error;
}
ut_memcpy(str1 + len1, str2, len2);
}
/*****************************************************************//**
Evaluates an instr-function node. */
static
......@@ -605,44 +460,6 @@ eval_instr(
eval_node_set_int_val(func_node, int_val);
}
/*****************************************************************//**
Evaluates a predefined function node. */
UNIV_INLINE
void
eval_binary_to_number(
/*==================*/
func_node_t* func_node) /*!< in: function node */
{
que_node_t* arg1;
dfield_t* dfield;
byte* str1;
byte* str2;
ulint len1;
ulint int_val;
arg1 = func_node->args;
dfield = que_node_get_val(arg1);
str1 = static_cast<byte*>(dfield_get_data(dfield));
len1 = dfield_get_len(dfield);
if (len1 > 4) {
ut_error;
}
if (len1 == 4) {
str2 = str1;
} else {
int_val = 0;
str2 = (byte*) &int_val;
ut_memcpy(str2 + (4 - len1), str1, len1);
}
eval_node_copy_and_alloc_val(func_node, str2, 4);
}
/*****************************************************************//**
Evaluates a predefined function node. */
static
......@@ -734,95 +551,12 @@ eval_to_binary(
}
/*****************************************************************//**
Evaluates a predefined function node. */
UNIV_INLINE
void
eval_predefined(
/*============*/
func_node_t* func_node) /*!< in: function node */
Evaluate LENGTH(). */
inline void eval_length(func_node_t* func_node)
{
que_node_t* arg1;
lint int_val;
byte* data;
int func;
func = func_node->func;
arg1 = func_node->args;
if (func == PARS_LENGTH_TOKEN) {
int_val = (lint) dfield_get_len(que_node_get_val(arg1));
} else if (func == PARS_TO_CHAR_TOKEN) {
/* Convert number to character string as a
signed decimal integer. */
ulint uint_val;
int int_len;
int_val = eval_node_get_int_val(arg1);
/* Determine the length of the string. */
if (int_val == 0) {
int_len = 1; /* the number 0 occupies 1 byte */
} else {
int_len = 0;
if (int_val < 0) {
uint_val = ((ulint) -int_val - 1) + 1;
int_len++; /* reserve space for minus sign */
} else {
uint_val = (ulint) int_val;
}
for (; uint_val > 0; int_len++) {
uint_val /= 10;
}
}
/* allocate the string */
data = eval_node_ensure_val_buf(func_node, int_len + 1);
/* add terminating NUL character */
data[int_len] = 0;
/* convert the number */
if (int_val == 0) {
data[0] = '0';
} else {
int tmp;
if (int_val < 0) {
data[0] = '-'; /* preceding minus sign */
uint_val = ((ulint) -int_val - 1) + 1;
} else {
uint_val = (ulint) int_val;
}
for (tmp = int_len; uint_val > 0; uint_val /= 10) {
data[--tmp] = (byte)
('0' + (byte)(uint_val % 10));
}
}
dfield_set_len(que_node_get_val(func_node), int_len);
return;
} else if (func == PARS_TO_NUMBER_TOKEN) {
int_val = atoi((char*)
dfield_get_data(que_node_get_val(arg1)));
} else if (func == PARS_SYSDATE_TOKEN) {
int_val = (lint) time(NULL);
} else {
eval_predefined_2(func_node);
return;
}
eval_node_set_int_val(func_node, int_val);
eval_node_set_int_val(func_node,
dfield_get_len(que_node_get_val
(func_node->args)));
}
/*****************************************************************//**
......@@ -852,8 +586,7 @@ eval_func(
if (dfield_is_null(que_node_get_val(arg))
&& (fclass != PARS_FUNC_CMP)
&& (func != PARS_NOTFOUND_TOKEN)
&& (func != PARS_PRINTF_TOKEN)) {
&& (func != PARS_NOTFOUND_TOKEN)) {
ut_error;
}
......@@ -878,24 +611,20 @@ eval_func(
case PARS_SUBSTR_TOKEN:
eval_substr(func_node);
return;
case PARS_REPLSTR_TOKEN:
eval_replstr(func_node);
return;
case PARS_INSTR_TOKEN:
eval_instr(func_node);
return;
case PARS_BINARY_TO_NUMBER_TOKEN:
eval_binary_to_number(func_node);
return;
case PARS_CONCAT_TOKEN:
eval_concat(func_node);
return;
case PARS_TO_BINARY_TOKEN:
eval_to_binary(func_node);
return;
default:
eval_predefined(func_node);
case PARS_LENGTH_TOKEN:
eval_length(func_node);
return;
default:
ut_error;
}
case PARS_FUNC_LOGICAL:
eval_logical(func_node);
......
/* A Bison parser, made by GNU Bison 3.0.4. */
/* A Bison parser, made by GNU Bison 3.4.2. */
/* Bison interface for Yacc-like parsers in C
Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation,
Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
......@@ -30,6 +31,9 @@
This special exception was added by the Free Software Foundation in
version 2.2 of Bison. */
/* Undocumented macros, especially those whose name start with YY_,
are private implementation details. Do not rely on them. */
#ifndef YY_YY_PARS0GRM_TAB_H_INCLUDED
# define YY_YY_PARS0GRM_TAB_H_INCLUDED
/* Debug traces. */
......@@ -58,91 +62,71 @@ extern int yydebug;
PARS_NE_TOKEN = 268,
PARS_PROCEDURE_TOKEN = 269,
PARS_IN_TOKEN = 270,
PARS_OUT_TOKEN = 271,
PARS_BINARY_TOKEN = 272,
PARS_BLOB_TOKEN = 273,
PARS_INT_TOKEN = 274,
PARS_FLOAT_TOKEN = 275,
PARS_CHAR_TOKEN = 276,
PARS_IS_TOKEN = 277,
PARS_BEGIN_TOKEN = 278,
PARS_END_TOKEN = 279,
PARS_IF_TOKEN = 280,
PARS_THEN_TOKEN = 281,
PARS_ELSE_TOKEN = 282,
PARS_ELSIF_TOKEN = 283,
PARS_LOOP_TOKEN = 284,
PARS_WHILE_TOKEN = 285,
PARS_RETURN_TOKEN = 286,
PARS_SELECT_TOKEN = 287,
PARS_SUM_TOKEN = 288,
PARS_COUNT_TOKEN = 289,
PARS_DISTINCT_TOKEN = 290,
PARS_FROM_TOKEN = 291,
PARS_WHERE_TOKEN = 292,
PARS_FOR_TOKEN = 293,
PARS_DDOT_TOKEN = 294,
PARS_READ_TOKEN = 295,
PARS_ORDER_TOKEN = 296,
PARS_BY_TOKEN = 297,
PARS_ASC_TOKEN = 298,
PARS_DESC_TOKEN = 299,
PARS_INSERT_TOKEN = 300,
PARS_INTO_TOKEN = 301,
PARS_VALUES_TOKEN = 302,
PARS_UPDATE_TOKEN = 303,
PARS_SET_TOKEN = 304,
PARS_DELETE_TOKEN = 305,
PARS_CURRENT_TOKEN = 306,
PARS_OF_TOKEN = 307,
PARS_CREATE_TOKEN = 308,
PARS_TABLE_TOKEN = 309,
PARS_INDEX_TOKEN = 310,
PARS_UNIQUE_TOKEN = 311,
PARS_CLUSTERED_TOKEN = 312,
PARS_ON_TOKEN = 313,
PARS_ASSIGN_TOKEN = 314,
PARS_DECLARE_TOKEN = 315,
PARS_CURSOR_TOKEN = 316,
PARS_SQL_TOKEN = 317,
PARS_OPEN_TOKEN = 318,
PARS_FETCH_TOKEN = 319,
PARS_CLOSE_TOKEN = 320,
PARS_NOTFOUND_TOKEN = 321,
PARS_TO_CHAR_TOKEN = 322,
PARS_TO_NUMBER_TOKEN = 323,
PARS_TO_BINARY_TOKEN = 324,
PARS_BINARY_TO_NUMBER_TOKEN = 325,
PARS_SUBSTR_TOKEN = 326,
PARS_REPLSTR_TOKEN = 327,
PARS_CONCAT_TOKEN = 328,
PARS_INSTR_TOKEN = 329,
PARS_LENGTH_TOKEN = 330,
PARS_SYSDATE_TOKEN = 331,
PARS_PRINTF_TOKEN = 332,
PARS_ASSERT_TOKEN = 333,
PARS_RND_TOKEN = 334,
PARS_RND_STR_TOKEN = 335,
PARS_ROW_PRINTF_TOKEN = 336,
PARS_COMMIT_TOKEN = 337,
PARS_ROLLBACK_TOKEN = 338,
PARS_WORK_TOKEN = 339,
PARS_UNSIGNED_TOKEN = 340,
PARS_EXIT_TOKEN = 341,
PARS_FUNCTION_TOKEN = 342,
PARS_LOCK_TOKEN = 343,
PARS_SHARE_TOKEN = 344,
PARS_MODE_TOKEN = 345,
PARS_LIKE_TOKEN = 346,
PARS_LIKE_TOKEN_EXACT = 347,
PARS_LIKE_TOKEN_PREFIX = 348,
PARS_LIKE_TOKEN_SUFFIX = 349,
PARS_LIKE_TOKEN_SUBSTR = 350,
PARS_TABLE_NAME_TOKEN = 351,
PARS_COMPACT_TOKEN = 352,
PARS_BLOCK_SIZE_TOKEN = 353,
PARS_BIGINT_TOKEN = 354,
NEG = 355
PARS_INT_TOKEN = 271,
PARS_CHAR_TOKEN = 272,
PARS_IS_TOKEN = 273,
PARS_BEGIN_TOKEN = 274,
PARS_END_TOKEN = 275,
PARS_IF_TOKEN = 276,
PARS_THEN_TOKEN = 277,
PARS_ELSE_TOKEN = 278,
PARS_ELSIF_TOKEN = 279,
PARS_LOOP_TOKEN = 280,
PARS_WHILE_TOKEN = 281,
PARS_RETURN_TOKEN = 282,
PARS_SELECT_TOKEN = 283,
PARS_COUNT_TOKEN = 284,
PARS_FROM_TOKEN = 285,
PARS_WHERE_TOKEN = 286,
PARS_FOR_TOKEN = 287,
PARS_DDOT_TOKEN = 288,
PARS_ORDER_TOKEN = 289,
PARS_BY_TOKEN = 290,
PARS_ASC_TOKEN = 291,
PARS_DESC_TOKEN = 292,
PARS_INSERT_TOKEN = 293,
PARS_INTO_TOKEN = 294,
PARS_VALUES_TOKEN = 295,
PARS_UPDATE_TOKEN = 296,
PARS_SET_TOKEN = 297,
PARS_DELETE_TOKEN = 298,
PARS_CURRENT_TOKEN = 299,
PARS_OF_TOKEN = 300,
PARS_CREATE_TOKEN = 301,
PARS_TABLE_TOKEN = 302,
PARS_INDEX_TOKEN = 303,
PARS_UNIQUE_TOKEN = 304,
PARS_CLUSTERED_TOKEN = 305,
PARS_ON_TOKEN = 306,
PARS_ASSIGN_TOKEN = 307,
PARS_DECLARE_TOKEN = 308,
PARS_CURSOR_TOKEN = 309,
PARS_SQL_TOKEN = 310,
PARS_OPEN_TOKEN = 311,
PARS_FETCH_TOKEN = 312,
PARS_CLOSE_TOKEN = 313,
PARS_NOTFOUND_TOKEN = 314,
PARS_TO_BINARY_TOKEN = 315,
PARS_SUBSTR_TOKEN = 316,
PARS_CONCAT_TOKEN = 317,
PARS_INSTR_TOKEN = 318,
PARS_LENGTH_TOKEN = 319,
PARS_COMMIT_TOKEN = 320,
PARS_ROLLBACK_TOKEN = 321,
PARS_WORK_TOKEN = 322,
PARS_EXIT_TOKEN = 323,
PARS_FUNCTION_TOKEN = 324,
PARS_LOCK_TOKEN = 325,
PARS_SHARE_TOKEN = 326,
PARS_MODE_TOKEN = 327,
PARS_LIKE_TOKEN = 328,
PARS_LIKE_TOKEN_EXACT = 329,
PARS_LIKE_TOKEN_PREFIX = 330,
PARS_LIKE_TOKEN_SUFFIX = 331,
PARS_LIKE_TOKEN_SUBSTR = 332,
PARS_TABLE_NAME_TOKEN = 333,
PARS_BIGINT_TOKEN = 334,
NEG = 335
};
#endif
......
......@@ -48,29 +48,15 @@ extern int yydebug;
NOT re-entrant */
extern sym_tab_t* pars_sym_tab_global;
extern pars_res_word_t pars_to_char_token;
extern pars_res_word_t pars_to_number_token;
extern pars_res_word_t pars_to_binary_token;
extern pars_res_word_t pars_binary_to_number_token;
extern pars_res_word_t pars_substr_token;
extern pars_res_word_t pars_replstr_token;
extern pars_res_word_t pars_concat_token;
extern pars_res_word_t pars_length_token;
extern pars_res_word_t pars_instr_token;
extern pars_res_word_t pars_sysdate_token;
extern pars_res_word_t pars_printf_token;
extern pars_res_word_t pars_assert_token;
extern pars_res_word_t pars_rnd_token;
extern pars_res_word_t pars_rnd_str_token;
extern pars_res_word_t pars_count_token;
extern pars_res_word_t pars_sum_token;
extern pars_res_word_t pars_distinct_token;
extern pars_res_word_t pars_binary_token;
extern pars_res_word_t pars_blob_token;
extern pars_res_word_t pars_int_token;
extern pars_res_word_t pars_bigint_token;
extern pars_res_word_t pars_char_token;
extern pars_res_word_t pars_float_token;
extern pars_res_word_t pars_update_token;
extern pars_res_word_t pars_asc_token;
extern pars_res_word_t pars_desc_token;
......@@ -236,17 +222,6 @@ pars_insert_statement(
que_node_t* values_list, /*!< in: value expression list or NULL */
sel_node_t* select); /*!< in: select condition or NULL */
/*********************************************************************//**
Parses a procedure parameter declaration.
@return own: symbol table node of type SYM_VAR */
sym_node_t*
pars_parameter_declaration(
/*=======================*/
sym_node_t* node, /*!< in: symbol table node allocated for the
id of the parameter */
ulint param_type,
/*!< in: PARS_INPUT or PARS_OUTPUT */
pars_res_word_t* type); /*!< in: pointer to a type token */
/*********************************************************************//**
Parses an elsif element.
@return elsif node */
elsif_node_t*
......@@ -358,8 +333,6 @@ pars_column_def(
pars_res_word_t* type, /*!< in: data type */
sym_node_t* len, /*!< in: length of column, or
NULL */
void* is_unsigned, /*!< in: if not NULL, column
is of type UNSIGNED. */
void* is_not_null); /*!< in: if not NULL, column
is of type NOT NULL. */
/*********************************************************************//**
......@@ -370,9 +343,7 @@ pars_create_table(
/*==============*/
sym_node_t* table_sym, /*!< in: table name node in the symbol
table */
sym_node_t* column_defs, /*!< in: list of column names */
sym_node_t* compact, /* in: non-NULL if COMPACT table. */
sym_node_t* block_size); /* in: block size (can be NULL) */
sym_node_t* column_defs); /*!< in: list of column names */
/*********************************************************************//**
Parses an index creation operation.
@return index create subgraph */
......@@ -394,7 +365,6 @@ pars_procedure_definition(
/*======================*/
sym_node_t* sym_node, /*!< in: procedure id node in the symbol
table */
sym_node_t* param_list, /*!< in: parameter declaration list */
que_node_t* stat_list); /*!< in: statement list */
/*************************************************************//**
......@@ -672,7 +642,6 @@ struct proc_node_t{
que_common_t common; /*!< type: QUE_NODE_PROC */
sym_node_t* proc_id; /*!< procedure name symbol in the symbol
table of this same procedure */
sym_node_t* param_list; /*!< input and output parameters */
que_node_t* stat_list; /*!< statement list */
sym_tab_t* sym_tab; /*!< symbol table of this procedure */
};
......@@ -747,7 +716,7 @@ struct col_assign_node_t{
#define PARS_FUNC_LOGICAL 2 /*!< AND, OR, NOT */
#define PARS_FUNC_CMP 3 /*!< comparison operators */
#define PARS_FUNC_PREDEFINED 4 /*!< TO_NUMBER, SUBSTR, ... */
#define PARS_FUNC_AGGREGATE 5 /*!< COUNT, DISTINCT, SUM */
#define PARS_FUNC_AGGREGATE 5 /*!< COUNT */
#define PARS_FUNC_OTHER 6 /*!< these are not real functions,
e.g., := */
/* @} */
......
......@@ -356,8 +356,8 @@ static void yynoreturn yy_fatal_error ( const char* msg );
(yy_hold_char) = *yy_cp; \
*yy_cp = '\0'; \
(yy_c_buf_p) = yy_cp;
#define YY_NUM_RULES 123
#define YY_END_OF_BUFFER 124
#define YY_NUM_RULES 102
#define YY_END_OF_BUFFER 103
/* This struct is not used in this scanner,
but its presence is necessary. */
struct yy_trans_info
......@@ -365,53 +365,42 @@ struct yy_trans_info
flex_int32_t yy_verify;
flex_int32_t yy_nxt;
};
static const flex_int16_t yy_accept[404] =
static const flex_int16_t yy_accept[307] =
{ 0,
0, 0, 118, 118, 0, 0, 0, 0, 124, 122,
121, 121, 8, 122, 113, 5, 102, 108, 111, 109,
106, 110, 122, 112, 1, 122, 107, 105, 103, 104,
116, 95, 95, 95, 95, 95, 95, 95, 95, 95,
95, 95, 95, 95, 95, 95, 95, 95, 95, 95,
114, 115, 118, 119, 6, 7, 9, 10, 121, 4,
97, 117, 2, 1, 3, 98, 99, 101, 100, 0,
95, 0, 95, 95, 95, 95, 95, 44, 95, 95,
95, 95, 95, 95, 95, 95, 95, 95, 95, 95,
95, 95, 95, 28, 17, 25, 95, 95, 95, 95,
95, 95, 54, 62, 95, 14, 95, 95, 95, 95,
95, 95, 95, 95, 95, 95, 95, 95, 95, 95,
95, 95, 95, 95, 118, 119, 119, 120, 6, 7,
9, 10, 2, 0, 96, 13, 45, 95, 95, 95,
95, 95, 95, 95, 95, 95, 95, 95, 95, 95,
95, 95, 95, 95, 95, 27, 95, 95, 95, 41,
95, 95, 95, 95, 21, 95, 95, 95, 95, 95,
15, 95, 95, 95, 18, 95, 95, 95, 95, 95,
81, 95, 95, 95, 51, 95, 12, 95, 36, 95,
95, 95, 95, 95, 95, 95, 95, 95, 95, 95,
0, 96, 95, 95, 95, 95, 20, 95, 24, 95,
95, 95, 95, 95, 95, 95, 95, 95, 95, 95,
46, 95, 30, 95, 88, 95, 95, 39, 95, 95,
95, 95, 95, 48, 95, 93, 90, 32, 92, 95,
11, 65, 95, 95, 95, 42, 95, 95, 95, 95,
95, 95, 95, 95, 95, 95, 29, 95, 95, 95,
95, 95, 95, 95, 95, 95, 86, 0, 95, 26,
95, 95, 95, 67, 95, 95, 95, 95, 37, 95,
95, 95, 95, 95, 95, 31, 66, 23, 95, 59,
95, 76, 95, 95, 95, 43, 95, 95, 95, 95,
95, 95, 95, 95, 91, 95, 95, 56, 95, 95,
95, 95, 95, 95, 95, 40, 33, 0, 80, 94,
19, 95, 95, 84, 95, 75, 55, 95, 64, 95,
52, 95, 95, 47, 95, 77, 95, 79, 95, 95,
34, 95, 95, 95, 35, 73, 95, 95, 95, 95,
60, 95, 50, 49, 95, 95, 95, 57, 53, 63,
95, 95, 22, 95, 95, 74, 82, 95, 95, 78,
95, 69, 95, 95, 95, 95, 95, 38, 89, 68,
95, 85, 95, 95, 95, 87, 95, 95, 61, 16,
95, 71, 70, 95, 58, 83, 95, 95, 95, 95,
95, 72, 0
0, 0, 97, 97, 0, 0, 0, 0, 103, 101,
100, 100, 8, 101, 92, 5, 81, 87, 90, 88,
85, 89, 101, 91, 1, 101, 86, 84, 82, 83,
95, 74, 74, 74, 74, 74, 74, 74, 74, 74,
74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
93, 94, 97, 98, 6, 7, 9, 10, 100, 4,
76, 96, 2, 1, 3, 77, 78, 80, 79, 0,
74, 0, 74, 74, 74, 74, 36, 74, 74, 74,
74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
23, 17, 20, 74, 74, 74, 74, 74, 74, 46,
52, 74, 14, 74, 74, 74, 74, 74, 74, 74,
74, 74, 74, 74, 74, 74, 74, 74, 97, 98,
98, 99, 6, 7, 9, 10, 2, 0, 75, 13,
37, 74, 74, 74, 74, 74, 74, 74, 74, 74,
74, 74, 74, 74, 74, 22, 74, 74, 34, 74,
74, 74, 74, 18, 74, 74, 74, 74, 74, 15,
74, 74, 74, 74, 74, 74, 74, 43, 74, 12,
74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
0, 75, 74, 74, 19, 74, 74, 74, 74, 74,
74, 74, 74, 74, 74, 38, 25, 74, 67, 74,
32, 74, 74, 74, 74, 40, 74, 72, 69, 27,
71, 74, 11, 55, 74, 74, 74, 74, 74, 74,
74, 74, 24, 74, 74, 74, 74, 74, 74, 66,
0, 21, 74, 57, 74, 74, 74, 31, 74, 74,
74, 74, 74, 26, 56, 74, 49, 74, 62, 74,
74, 35, 74, 74, 74, 74, 70, 74, 48, 74,
74, 74, 74, 33, 28, 0, 73, 74, 64, 61,
47, 74, 54, 74, 44, 74, 39, 63, 74, 74,
29, 74, 30, 60, 74, 50, 42, 41, 74, 45,
53, 74, 74, 74, 74, 74, 74, 68, 58, 74,
65, 74, 51, 16, 59, 0
} ;
static const YY_CHAR yy_ec[256] =
......@@ -424,12 +413,12 @@ static const YY_CHAR yy_ec[256] =
17, 17, 17, 17, 17, 17, 17, 18, 19, 20,
21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
1, 1, 1, 1, 51, 1, 34, 34, 34, 34,
41, 42, 43, 44, 45, 46, 47, 48, 49, 34,
1, 1, 1, 1, 50, 1, 34, 34, 34, 34,
34, 34, 34, 34, 34, 34, 34, 52, 34, 34,
34, 34, 53, 34, 54, 34, 34, 34, 34, 34,
34, 34, 55, 1, 56, 1, 1, 1, 1, 1,
34, 34, 34, 34, 34, 34, 34, 51, 34, 34,
34, 34, 52, 34, 53, 34, 34, 34, 34, 34,
34, 34, 54, 1, 55, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
......@@ -446,418 +435,324 @@ static const YY_CHAR yy_ec[256] =
1, 1, 1, 1, 1
} ;
static const YY_CHAR yy_meta[57] =
static const YY_CHAR yy_meta[56] =
{ 0,
1, 1, 1, 2, 3, 1, 1, 4, 1, 1,
5, 1, 1, 1, 1, 6, 7, 1, 1, 1,
8, 1, 1, 6, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 1, 1
9, 9, 9, 1, 1
} ;
static const flex_int16_t yy_base[417] =
static const flex_int16_t yy_base[320] =
{ 0,
0, 0, 296, 281, 283, 280, 261, 252, 253, 1285,
55, 57, 1285, 0, 1285, 1285, 1285, 1285, 1285, 1285,
1285, 1285, 211, 213, 46, 202, 1285, 43, 1285, 199,
1285, 46, 50, 56, 52, 66, 64, 51, 81, 92,
91, 94, 96, 111, 113, 116, 130, 134, 53, 143,
1285, 1285, 0, 106, 0, 206, 0, 205, 141, 0,
1285, 1285, 177, 56, 152, 1285, 1285, 1285, 1285, 161,
140, 147, 152, 154, 155, 161, 167, 171, 177, 172,
184, 174, 188, 189, 191, 194, 203, 212, 217, 219,
222, 223, 228, 224, 226, 233, 235, 239, 244, 251,
256, 260, 261, 262, 265, 271, 266, 281, 277, 287,
282, 288, 303, 306, 307, 292, 310, 321, 322, 323,
324, 325, 335, 338, 0, 112, 173, 1285, 0, 152,
0, 145, 130, 59, 0, 339, 341, 353, 351, 354,
365, 367, 355, 372, 376, 383, 379, 386, 388, 385,
398, 392, 402, 401, 414, 415, 416, 417, 426, 430,
432, 437, 433, 439, 442, 443, 449, 456, 460, 461,
463, 470, 472, 473, 479, 483, 485, 489, 492, 495,
498, 499, 502, 508, 509, 514, 515, 518, 520, 527,
530, 534, 536, 541, 543, 553, 555, 557, 559, 568,
41, 0, 564, 569, 570, 573, 574, 585, 580, 589,
586, 595, 598, 600, 605, 610, 611, 617, 620, 615,
622, 627, 626, 631, 641, 642, 646, 647, 648, 651,
652, 653, 657, 662, 663, 667, 669, 673, 680, 682,
684, 685, 686, 687, 689, 696, 698, 700, 701, 703,
699, 710, 714, 716, 729, 732, 731, 733, 735, 734,
746, 747, 748, 752, 753, 759, 749, 39, 769, 770,
771, 773, 774, 780, 783, 784, 787, 785, 786, 802,
800, 803, 816, 817, 818, 819, 820, 823, 833, 835,
836, 837, 838, 839, 848, 849, 852, 853, 854, 859,
863, 870, 868, 872, 875, 884, 885, 887, 889, 890,
888, 904, 906, 907, 908, 918, 919, 73, 921, 922,
923, 924, 933, 934, 936, 937, 938, 939, 940, 949,
952, 955, 953, 965, 969, 970, 971, 972, 974, 975,
981, 984, 986, 988, 990, 991, 1000, 1006, 1004, 1009,
1016, 1018, 1020, 1021, 1025, 1027, 1032, 1034, 1038, 1039,
1041, 1043, 1048, 1050, 1052, 1055, 1059, 1064, 1066, 1068,
1071, 1073, 1077, 1084, 1086, 1087, 1091, 1093, 1098, 1100,
1102, 1104, 1105, 1111, 1114, 1116, 1117, 1118, 1120, 1127,
1129, 1130, 1134, 1139, 1141, 1145, 1146, 1148, 1150, 1151,
1155, 1157, 1285, 1197, 1206, 1215, 1218, 1221, 1225, 1234,
1243, 1252, 1261, 1268, 1272, 1275
0, 0, 262, 259, 249, 244, 239, 234, 236, 960,
54, 56, 960, 0, 960, 960, 960, 960, 960, 960,
960, 960, 217, 220, 45, 186, 960, 42, 960, 184,
960, 45, 49, 55, 51, 65, 80, 50, 69, 94,
90, 92, 104, 60, 114, 116, 131, 134, 135, 149,
960, 960, 0, 61, 0, 194, 0, 197, 133, 0,
960, 960, 163, 53, 143, 960, 960, 960, 960, 147,
125, 123, 138, 151, 152, 153, 155, 166, 169, 173,
170, 171, 176, 180, 193, 182, 200, 204, 206, 209,
210, 211, 213, 224, 225, 226, 235, 240, 242, 245,
251, 252, 255, 256, 258, 261, 270, 274, 272, 277,
289, 288, 276, 294, 295, 300, 304, 305, 0, 79,
110, 960, 0, 116, 0, 113, 98, 58, 0, 306,
315, 316, 318, 319, 322, 328, 329, 332, 334, 338,
344, 353, 351, 354, 366, 360, 367, 369, 376, 378,
381, 385, 388, 382, 394, 400, 403, 404, 406, 407,
410, 417, 423, 424, 426, 429, 433, 440, 442, 443,
444, 445, 454, 456, 459, 461, 472, 473, 474, 477,
53, 0, 475, 478, 479, 490, 502, 504, 505, 507,
508, 509, 511, 518, 520, 523, 524, 525, 529, 538,
541, 542, 543, 545, 547, 544, 556, 557, 558, 559,
560, 569, 572, 574, 578, 581, 579, 583, 588, 590,
600, 601, 602, 607, 611, 613, 612, 618, 622, 629,
41, 634, 636, 638, 639, 643, 645, 648, 649, 650,
655, 659, 661, 660, 670, 675, 676, 679, 680, 682,
686, 689, 691, 696, 693, 700, 705, 706, 709, 711,
712, 716, 722, 723, 726, 72, 727, 736, 737, 738,
739, 740, 742, 743, 752, 753, 755, 757, 758, 759,
764, 770, 769, 771, 774, 784, 785, 786, 787, 789,
790, 791, 796, 801, 802, 803, 806, 807, 812, 817,
816, 823, 826, 828, 832, 960, 872, 881, 890, 893,
896, 900, 909, 918, 927, 936, 943, 947, 950
} ;
static const flex_int16_t yy_def[417] =
static const flex_int16_t yy_def[320] =
{ 0,
403, 1, 404, 404, 405, 405, 406, 406, 403, 403,
403, 403, 403, 407, 403, 403, 403, 403, 403, 403,
403, 403, 403, 403, 403, 408, 403, 403, 403, 403,
403, 409, 409, 409, 409, 409, 34, 409, 409, 409,
409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
403, 403, 410, 411, 412, 403, 413, 403, 403, 407,
403, 403, 403, 403, 408, 403, 403, 403, 403, 414,
409, 415, 409, 409, 409, 409, 409, 409, 409, 409,
409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
409, 409, 409, 409, 410, 411, 411, 403, 412, 403,
413, 403, 403, 403, 416, 409, 409, 409, 409, 409,
409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
403, 416, 409, 409, 409, 409, 409, 409, 409, 409,
409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
409, 409, 409, 409, 409, 409, 409, 403, 409, 409,
409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
409, 409, 409, 409, 409, 409, 409, 403, 409, 409,
409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
409, 409, 0, 403, 403, 403, 403, 403, 403, 403,
403, 403, 403, 403, 403, 403
306, 1, 307, 307, 308, 308, 309, 309, 306, 306,
306, 306, 306, 310, 306, 306, 306, 306, 306, 306,
306, 306, 306, 306, 306, 311, 306, 306, 306, 306,
306, 312, 312, 312, 312, 312, 312, 312, 312, 312,
312, 312, 312, 312, 312, 312, 312, 312, 312, 312,
306, 306, 313, 314, 315, 306, 316, 306, 306, 310,
306, 306, 306, 306, 311, 306, 306, 306, 306, 317,
312, 318, 312, 312, 312, 312, 312, 312, 312, 312,
312, 312, 312, 312, 312, 312, 312, 312, 312, 312,
312, 312, 312, 312, 312, 312, 312, 312, 312, 312,
312, 312, 312, 312, 312, 312, 312, 312, 312, 312,
312, 312, 312, 312, 312, 312, 312, 312, 313, 314,
314, 306, 315, 306, 316, 306, 306, 306, 319, 312,
312, 312, 312, 312, 312, 312, 312, 312, 312, 312,
312, 312, 312, 312, 312, 312, 312, 312, 312, 312,
312, 312, 312, 312, 312, 312, 312, 312, 312, 312,
312, 312, 312, 312, 312, 312, 312, 312, 312, 312,
312, 312, 312, 312, 312, 312, 312, 312, 312, 312,
306, 319, 312, 312, 312, 312, 312, 312, 312, 312,
312, 312, 312, 312, 312, 312, 312, 312, 312, 312,
312, 312, 312, 312, 312, 312, 312, 312, 312, 312,
312, 312, 312, 312, 312, 312, 312, 312, 312, 312,
312, 312, 312, 312, 312, 312, 312, 312, 312, 312,
306, 312, 312, 312, 312, 312, 312, 312, 312, 312,
312, 312, 312, 312, 312, 312, 312, 312, 312, 312,
312, 312, 312, 312, 312, 312, 312, 312, 312, 312,
312, 312, 312, 312, 312, 306, 312, 312, 312, 312,
312, 312, 312, 312, 312, 312, 312, 312, 312, 312,
312, 312, 312, 312, 312, 312, 312, 312, 312, 312,
312, 312, 312, 312, 312, 312, 312, 312, 312, 312,
312, 312, 312, 312, 312, 0, 306, 306, 306, 306,
306, 306, 306, 306, 306, 306, 306, 306, 306
} ;
static const flex_int16_t yy_nxt[1342] =
static const flex_int16_t yy_nxt[1016] =
{ 0,
10, 11, 12, 13, 10, 14, 15, 16, 17, 18,
19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
29, 30, 31, 10, 32, 33, 34, 35, 36, 37,
38, 38, 39, 38, 38, 40, 41, 42, 43, 44,
38, 45, 46, 47, 48, 49, 50, 38, 38, 38,
38, 38, 38, 38, 51, 52, 59, 59, 59, 59,
63, 70, 64, 67, 68, 70, 70, 70, 70, 72,
63, 70, 64, 72, 72, 72, 72, 122, 75, 72,
84, 70, 76, 73, 85, 77, 135, 79, 74, 72,
318, 80, 89, 268, 81, 71, 70, 82, 78, 90,
83, 86, 91, 87, 72, 92, 70, 70, 93, 70,
94, 70, 201, 88, 72, 72, 127, 72, 95, 72,
97, 128, 403, 96, 98, 103, 70, 403, 70, 100,
99, 70, 101, 104, 72, 105, 72, 106, 102, 72,
107, 109, 59, 59, 112, 70, 133, 113, 132, 70,
110, 111, 108, 72, 117, 70, 114, 72, 70, 130,
115, 118, 70, 72, 116, 134, 72, 70, 119, 70,
70, 120, 403, 121, 123, 72, 70, 72, 72, 136,
137, 124, 70, 127, 72, 139, 70, 70, 128, 70,
72, 140, 70, 133, 72, 72, 138, 72, 141, 70,
72, 143, 149, 70, 70, 142, 70, 72, 132, 70,
144, 72, 72, 130, 72, 151, 145, 72, 70, 69,
146, 147, 66, 62, 152, 61, 72, 70, 148, 150,
156, 153, 70, 154, 70, 72, 155, 70, 70, 70,
72, 70, 72, 70, 157, 72, 72, 72, 70, 72,
70, 72, 403, 163, 70, 58, 72, 159, 72, 70,
158, 161, 72, 160, 58, 162, 70, 72, 164, 165,
168, 70, 166, 167, 72, 70, 70, 70, 170, 72,
70, 70, 169, 72, 72, 72, 70, 56, 72, 72,
56, 54, 70, 173, 72, 172, 70, 70, 174, 171,
72, 178, 70, 70, 72, 72, 54, 70, 403, 175,
72, 72, 403, 176, 181, 72, 179, 182, 70, 177,
180, 70, 70, 184, 403, 70, 72, 186, 183, 72,
72, 185, 188, 72, 190, 191, 70, 70, 70, 70,
70, 187, 403, 189, 72, 72, 72, 72, 72, 192,
70, 196, 403, 70, 70, 194, 70, 403, 72, 403,
197, 72, 72, 198, 72, 195, 70, 199, 70, 70,
70, 403, 193, 403, 72, 403, 72, 72, 72, 200,
70, 203, 70, 204, 403, 403, 205, 70, 72, 206,
72, 70, 207, 208, 70, 72, 209, 403, 70, 72,
70, 70, 72, 70, 403, 214, 72, 70, 72, 72,
403, 72, 216, 70, 210, 72, 70, 70, 211, 212,
220, 72, 213, 215, 72, 72, 217, 218, 221, 70,
70, 70, 70, 219, 403, 403, 403, 72, 72, 72,
72, 70, 223, 226, 222, 70, 224, 70, 70, 72,
227, 403, 70, 72, 70, 72, 72, 70, 70, 225,
72, 230, 72, 229, 70, 72, 72, 231, 228, 403,
233, 70, 72, 235, 403, 70, 70, 236, 70, 72,
234, 403, 232, 72, 72, 70, 72, 70, 70, 239,
237, 403, 240, 72, 70, 72, 72, 403, 70, 238,
70, 243, 72, 403, 70, 241, 72, 70, 72, 242,
70, 245, 72, 70, 70, 72, 246, 70, 72, 403,
244, 72, 72, 70, 70, 72, 403, 247, 403, 70,
70, 72, 72, 70, 250, 70, 252, 72, 72, 248,
403, 72, 70, 72, 403, 70, 403, 403, 249, 70,
72, 70, 251, 72, 255, 253, 70, 72, 70, 72,
254, 258, 259, 403, 72, 256, 72, 403, 70, 403,
70, 257, 70, 260, 70, 262, 72, 263, 72, 70,
72, 261, 72, 70, 70, 70, 403, 72, 70, 70,
403, 72, 72, 72, 266, 70, 72, 72, 265, 264,
70, 70, 267, 72, 70, 269, 270, 271, 72, 72,
70, 403, 72, 70, 272, 70, 403, 274, 72, 273,
70, 72, 277, 72, 278, 70, 70, 276, 72, 275,
70, 403, 70, 72, 72, 70, 403, 70, 72, 281,
72, 70, 70, 72, 283, 72, 70, 403, 279, 72,
72, 403, 403, 280, 72, 282, 70, 70, 284, 285,
286, 70, 70, 70, 72, 72, 70, 70, 70, 72,
72, 72, 70, 287, 72, 72, 72, 70, 70, 403,
72, 403, 70, 403, 70, 72, 72, 293, 70, 288,
72, 289, 72, 291, 292, 70, 72, 70, 290, 70,
70, 70, 70, 72, 70, 72, 294, 72, 72, 72,
72, 70, 72, 70, 70, 70, 70, 298, 70, 72,
295, 72, 72, 72, 72, 70, 72, 296, 302, 70,
297, 70, 403, 72, 403, 403, 304, 72, 303, 72,
299, 300, 305, 301, 70, 403, 70, 70, 70, 70,
70, 403, 72, 307, 72, 72, 72, 72, 72, 306,
308, 70, 70, 70, 70, 309, 310, 70, 70, 72,
72, 72, 72, 403, 70, 72, 72, 313, 311, 403,
315, 316, 72, 403, 70, 70, 70, 317, 70, 70,
312, 314, 72, 72, 72, 70, 72, 72, 70, 70,
70, 70, 70, 72, 403, 403, 72, 72, 72, 72,
72, 323, 319, 325, 320, 70, 403, 70, 70, 403,
403, 321, 403, 72, 322, 72, 72, 324, 326, 403,
327, 70, 70, 70, 70, 70, 403, 328, 70, 72,
72, 72, 72, 72, 329, 331, 72, 403, 70, 403,
70, 70, 70, 70, 70, 332, 72, 330, 72, 72,
72, 72, 72, 70, 70, 333, 335, 70, 70, 70,
336, 72, 72, 403, 70, 72, 72, 72, 70, 334,
339, 338, 72, 70, 403, 70, 72, 70, 403, 403,
70, 72, 337, 72, 343, 72, 341, 340, 72, 70,
70, 403, 70, 70, 70, 70, 342, 72, 72, 344,
72, 72, 72, 72, 349, 345, 403, 403, 403, 70,
403, 70, 70, 70, 350, 346, 348, 72, 347, 72,
72, 72, 351, 70, 70, 353, 70, 70, 70, 70,
403, 72, 72, 352, 72, 72, 72, 72, 70, 70,
354, 70, 70, 70, 70, 70, 72, 72, 403, 72,
72, 72, 72, 72, 70, 403, 356, 70, 70, 403,
70, 403, 72, 355, 357, 72, 72, 360, 72, 358,
70, 361, 359, 403, 70, 70, 70, 70, 72, 70,
70, 362, 72, 72, 72, 72, 70, 72, 72, 70,
403, 70, 403, 70, 72, 70, 70, 72, 364, 72,
363, 72, 368, 72, 72, 70, 366, 403, 365, 70,
369, 70, 403, 72, 70, 367, 403, 72, 370, 72,
371, 70, 72, 70, 373, 70, 70, 403, 403, 72,
70, 72, 70, 72, 72, 372, 374, 70, 72, 70,
72, 403, 403, 70, 70, 72, 70, 72, 70, 376,
377, 72, 72, 70, 72, 70, 72, 70, 375, 403,
70, 72, 403, 72, 70, 72, 403, 380, 72, 70,
379, 70, 72, 70, 378, 403, 70, 72, 70, 72,
403, 72, 70, 381, 72, 403, 72, 403, 382, 70,
72, 70, 70, 383, 403, 385, 70, 72, 70, 72,
72, 386, 384, 70, 72, 70, 72, 70, 389, 70,
70, 72, 403, 72, 387, 72, 70, 72, 72, 70,
390, 70, 70, 70, 72, 70, 388, 72, 403, 72,
72, 72, 70, 72, 70, 70, 395, 403, 391, 70,
72, 403, 72, 72, 70, 393, 70, 72, 396, 392,
70, 70, 72, 70, 72, 70, 70, 394, 72, 72,
70, 72, 70, 72, 72, 400, 397, 403, 72, 401,
72, 403, 403, 403, 399, 403, 403, 403, 403, 403,
398, 403, 403, 403, 403, 403, 402, 53, 53, 53,
53, 53, 53, 53, 53, 53, 55, 55, 55, 55,
55, 55, 55, 55, 55, 57, 57, 57, 57, 57,
57, 57, 57, 57, 60, 403, 60, 65, 65, 65,
71, 71, 403, 71, 125, 125, 125, 125, 403, 125,
125, 125, 125, 126, 126, 126, 126, 126, 126, 126,
126, 126, 129, 129, 129, 403, 129, 129, 129, 129,
129, 131, 403, 131, 131, 131, 131, 131, 131, 131,
135, 403, 403, 403, 403, 403, 135, 72, 72, 403,
72, 202, 403, 202, 9, 403, 403, 403, 403, 403,
403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
403
38, 38, 38, 51, 52, 59, 59, 59, 59, 63,
70, 64, 67, 68, 70, 70, 70, 63, 72, 64,
70, 121, 72, 72, 72, 70, 122, 75, 72, 83,
70, 76, 73, 72, 70, 129, 78, 74, 72, 306,
79, 266, 72, 80, 306, 70, 81, 77, 91, 82,
84, 104, 85, 72, 231, 70, 92, 70, 87, 70,
181, 93, 86, 72, 127, 72, 126, 72, 88, 70,
121, 89, 94, 124, 90, 122, 95, 72, 97, 70,
98, 70, 96, 100, 59, 59, 99, 72, 70, 72,
70, 101, 105, 102, 107, 103, 70, 108, 72, 70,
70, 128, 106, 70, 72, 111, 109, 72, 72, 116,
110, 72, 112, 306, 70, 130, 70, 70, 70, 113,
70, 114, 72, 115, 72, 72, 72, 131, 72, 127,
117, 70, 132, 133, 70, 70, 70, 118, 70, 72,
134, 70, 72, 72, 72, 70, 72, 70, 140, 72,
126, 124, 142, 72, 69, 72, 66, 135, 70, 137,
138, 143, 141, 136, 147, 70, 72, 139, 144, 70,
146, 70, 145, 72, 70, 70, 70, 72, 70, 72,
62, 61, 72, 72, 72, 306, 72, 58, 152, 70,
70, 70, 58, 148, 150, 149, 151, 72, 72, 72,
70, 56, 157, 153, 154, 70, 56, 70, 72, 156,
70, 155, 159, 72, 158, 72, 70, 70, 72, 54,
70, 70, 54, 70, 72, 72, 70, 161, 72, 72,
162, 72, 163, 160, 72, 70, 306, 70, 306, 70,
306, 70, 70, 72, 164, 72, 166, 72, 169, 72,
72, 165, 171, 70, 70, 167, 306, 170, 306, 70,
70, 72, 72, 168, 172, 70, 173, 72, 72, 70,
70, 70, 176, 72, 306, 174, 175, 72, 72, 72,
70, 70, 178, 70, 70, 177, 179, 70, 72, 72,
306, 72, 72, 70, 70, 72, 180, 70, 183, 70,
184, 72, 72, 70, 306, 72, 306, 72, 189, 70,
185, 72, 191, 306, 186, 188, 70, 72, 70, 70,
187, 190, 306, 306, 72, 70, 72, 72, 306, 195,
196, 70, 70, 72, 70, 192, 193, 306, 194, 72,
72, 70, 72, 70, 197, 200, 70, 70, 198, 72,
70, 72, 306, 70, 72, 72, 306, 202, 72, 70,
199, 72, 306, 203, 201, 70, 204, 72, 70, 70,
206, 70, 70, 72, 207, 70, 72, 72, 208, 72,
72, 205, 70, 72, 211, 306, 212, 209, 70, 70,
72, 70, 306, 210, 70, 213, 72, 72, 70, 72,
216, 215, 72, 306, 214, 70, 72, 70, 70, 70,
70, 219, 306, 72, 218, 72, 72, 72, 72, 70,
217, 70, 306, 306, 70, 306, 70, 72, 306, 72,
222, 224, 72, 220, 72, 226, 221, 70, 70, 70,
70, 223, 70, 70, 70, 72, 72, 72, 72, 225,
72, 72, 72, 306, 306, 70, 306, 306, 306, 229,
306, 230, 232, 72, 228, 233, 227, 70, 234, 70,
70, 306, 70, 70, 70, 72, 70, 72, 72, 237,
72, 72, 72, 70, 72, 70, 236, 240, 70, 70,
70, 72, 242, 72, 70, 235, 72, 72, 72, 241,
238, 239, 72, 70, 244, 306, 70, 70, 70, 70,
70, 72, 70, 243, 72, 72, 72, 72, 72, 245,
72, 70, 70, 70, 70, 70, 306, 306, 306, 72,
72, 72, 72, 72, 70, 246, 248, 70, 249, 70,
247, 306, 72, 70, 70, 72, 70, 72, 70, 250,
306, 72, 72, 70, 72, 70, 72, 251, 255, 253,
306, 72, 306, 72, 256, 70, 70, 70, 257, 252,
254, 306, 70, 72, 72, 72, 70, 70, 70, 259,
72, 306, 306, 70, 72, 72, 72, 70, 306, 260,
263, 72, 306, 258, 70, 72, 264, 306, 306, 70,
265, 70, 72, 70, 70, 261, 262, 72, 70, 72,
70, 72, 72, 70, 70, 70, 72, 268, 72, 306,
70, 72, 72, 72, 70, 70, 70, 271, 72, 267,
306, 306, 72, 72, 72, 70, 269, 272, 270, 275,
70, 70, 306, 72, 70, 70, 273, 70, 72, 72,
274, 70, 72, 72, 70, 72, 70, 276, 70, 72,
306, 70, 72, 278, 72, 70, 72, 282, 280, 72,
70, 70, 277, 72, 70, 306, 70, 70, 72, 72,
279, 70, 72, 281, 72, 72, 306, 70, 70, 72,
286, 70, 70, 283, 287, 72, 72, 284, 285, 72,
72, 70, 70, 70, 70, 70, 306, 70, 70, 72,
72, 72, 72, 72, 288, 72, 72, 70, 70, 306,
70, 291, 70, 70, 70, 72, 72, 289, 72, 70,
72, 72, 72, 290, 70, 70, 70, 72, 306, 70,
306, 292, 72, 72, 72, 293, 295, 72, 296, 70,
70, 70, 70, 294, 70, 70, 70, 72, 72, 72,
72, 70, 72, 72, 72, 297, 70, 70, 70, 72,
306, 70, 70, 299, 72, 72, 72, 70, 298, 72,
72, 70, 70, 303, 306, 72, 301, 306, 70, 72,
72, 70, 300, 70, 302, 304, 72, 70, 306, 72,
306, 72, 306, 306, 306, 72, 306, 306, 306, 306,
306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
306, 305, 53, 53, 53, 53, 53, 53, 53, 53,
53, 55, 55, 55, 55, 55, 55, 55, 55, 55,
57, 57, 57, 57, 57, 57, 57, 57, 57, 60,
306, 60, 65, 65, 65, 71, 71, 306, 71, 119,
119, 119, 119, 306, 119, 119, 119, 119, 120, 120,
120, 120, 120, 120, 120, 120, 120, 123, 123, 123,
306, 123, 123, 123, 123, 123, 125, 306, 125, 125,
125, 125, 125, 125, 125, 129, 306, 306, 306, 306,
306, 129, 72, 72, 306, 72, 182, 306, 182, 9,
306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
306, 306, 306, 306, 306
} ;
static const flex_int16_t yy_chk[1342] =
static const flex_int16_t yy_chk[1016] =
{ 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 11, 11, 12, 12,
25, 32, 25, 28, 28, 33, 38, 35, 49, 32,
64, 34, 64, 33, 38, 35, 49, 49, 33, 34,
35, 36, 33, 32, 35, 33, 318, 34, 32, 36,
268, 34, 37, 201, 34, 37, 39, 34, 33, 37,
34, 36, 37, 36, 39, 37, 41, 40, 37, 42,
39, 43, 134, 36, 41, 40, 54, 42, 39, 43,
40, 54, 126, 39, 40, 43, 44, 126, 45, 41,
40, 46, 42, 43, 44, 43, 45, 43, 42, 46,
43, 45, 59, 59, 46, 47, 133, 46, 132, 48,
45, 45, 44, 47, 47, 71, 46, 48, 50, 130,
46, 47, 72, 71, 46, 70, 50, 73, 47, 74,
75, 48, 65, 48, 50, 73, 76, 74, 75, 73,
74, 50, 77, 127, 76, 75, 78, 80, 127, 82,
77, 76, 79, 63, 78, 80, 74, 82, 76, 81,
79, 79, 82, 83, 84, 77, 85, 81, 58, 86,
80, 83, 84, 56, 85, 84, 80, 86, 87, 30,
81, 81, 26, 24, 84, 23, 87, 88, 81, 83,
87, 84, 89, 85, 90, 88, 86, 91, 92, 94,
89, 95, 90, 93, 88, 91, 92, 94, 96, 95,
97, 93, 9, 95, 98, 8, 96, 90, 97, 99,
89, 92, 98, 91, 7, 93, 100, 99, 95, 95,
99, 101, 97, 98, 100, 102, 103, 104, 100, 101,
105, 107, 99, 102, 103, 104, 106, 6, 105, 107,
5, 4, 109, 105, 106, 102, 108, 111, 106, 101,
109, 109, 110, 112, 108, 111, 3, 116, 0, 107,
110, 112, 0, 108, 110, 116, 109, 111, 113, 108,
109, 114, 115, 112, 0, 117, 113, 113, 111, 114,
115, 112, 115, 117, 116, 117, 118, 119, 120, 121,
122, 114, 0, 115, 118, 119, 120, 121, 122, 118,
123, 121, 0, 124, 136, 120, 137, 0, 123, 0,
122, 124, 136, 123, 137, 120, 139, 123, 138, 140,
143, 0, 119, 0, 139, 0, 138, 140, 143, 124,
141, 138, 142, 139, 0, 0, 140, 144, 141, 141,
142, 145, 142, 142, 147, 144, 143, 0, 146, 145,
150, 148, 147, 149, 0, 147, 146, 152, 150, 148,
0, 149, 149, 151, 144, 152, 154, 153, 145, 146,
152, 151, 146, 148, 154, 153, 150, 150, 153, 155,
156, 157, 158, 151, 0, 0, 0, 155, 156, 157,
158, 159, 155, 158, 154, 160, 155, 161, 163, 159,
159, 0, 162, 160, 164, 161, 163, 165, 166, 157,
162, 163, 164, 162, 167, 165, 166, 164, 161, 0,
165, 168, 167, 166, 0, 169, 170, 167, 171, 168,
165, 0, 164, 169, 170, 172, 171, 173, 174, 170,
168, 0, 171, 172, 175, 173, 174, 0, 176, 169,
177, 174, 175, 0, 178, 172, 176, 179, 177, 173,
180, 177, 178, 181, 182, 179, 178, 183, 180, 0,
176, 181, 182, 184, 185, 183, 0, 179, 0, 186,
187, 184, 185, 188, 182, 189, 184, 186, 187, 180,
0, 188, 190, 189, 0, 191, 0, 0, 181, 192,
190, 193, 183, 191, 190, 186, 194, 192, 195, 193,
188, 193, 193, 0, 194, 191, 195, 0, 196, 0,
197, 192, 198, 193, 199, 195, 196, 196, 197, 203,
198, 194, 199, 200, 204, 205, 0, 203, 206, 207,
0, 200, 204, 205, 199, 209, 206, 207, 198, 197,
208, 211, 200, 209, 210, 203, 204, 205, 208, 211,
212, 0, 210, 213, 206, 214, 0, 210, 212, 208,
215, 213, 213, 214, 214, 216, 217, 212, 215, 211,
220, 0, 218, 216, 217, 219, 0, 221, 220, 217,
218, 223, 222, 219, 219, 221, 224, 0, 215, 223,
222, 0, 0, 216, 224, 218, 225, 226, 220, 222,
224, 227, 228, 229, 225, 226, 230, 231, 232, 227,
228, 229, 233, 226, 230, 231, 232, 234, 235, 0,
233, 0, 236, 0, 237, 234, 235, 233, 238, 227,
236, 229, 237, 231, 232, 239, 238, 240, 230, 241,
242, 243, 244, 239, 245, 240, 235, 241, 242, 243,
244, 246, 245, 247, 251, 248, 249, 245, 250, 246,
240, 247, 251, 248, 249, 252, 250, 243, 250, 253,
244, 254, 0, 252, 0, 0, 252, 253, 251, 254,
247, 248, 253, 249, 255, 0, 257, 256, 258, 260,
259, 0, 255, 255, 257, 256, 258, 260, 259, 254,
256, 261, 262, 263, 267, 258, 259, 264, 265, 261,
262, 263, 267, 0, 266, 264, 265, 262, 260, 0,
264, 265, 266, 0, 269, 270, 271, 266, 272, 273,
261, 263, 269, 270, 271, 274, 272, 273, 275, 276,
278, 279, 277, 274, 0, 0, 275, 276, 278, 279,
277, 275, 269, 277, 271, 281, 0, 280, 282, 0,
0, 272, 0, 281, 273, 280, 282, 276, 278, 0,
280, 283, 284, 285, 286, 287, 0, 281, 288, 283,
284, 285, 286, 287, 282, 284, 288, 0, 289, 0,
290, 291, 292, 293, 294, 285, 289, 283, 290, 291,
292, 293, 294, 295, 296, 289, 293, 297, 298, 299,
294, 295, 296, 0, 300, 297, 298, 299, 301, 291,
298, 297, 300, 303, 0, 302, 301, 304, 0, 0,
305, 303, 295, 302, 302, 304, 300, 299, 305, 306,
307, 0, 308, 311, 309, 310, 301, 306, 307, 303,
308, 311, 309, 310, 310, 304, 0, 0, 0, 312,
0, 313, 314, 315, 311, 306, 309, 312, 307, 313,
314, 315, 312, 316, 317, 314, 319, 320, 321, 322,
0, 316, 317, 313, 319, 320, 321, 322, 323, 324,
315, 325, 326, 327, 328, 329, 323, 324, 0, 325,
326, 327, 328, 329, 330, 0, 322, 331, 333, 0,
332, 0, 330, 321, 323, 331, 333, 330, 332, 325,
334, 332, 328, 0, 335, 336, 337, 338, 334, 339,
340, 333, 335, 336, 337, 338, 341, 339, 340, 342,
0, 343, 0, 344, 341, 345, 346, 342, 337, 343,
335, 344, 343, 345, 346, 347, 340, 0, 339, 349,
344, 348, 0, 347, 350, 342, 0, 349, 347, 348,
348, 351, 350, 352, 350, 353, 354, 0, 0, 351,
355, 352, 356, 353, 354, 349, 352, 357, 355, 358,
356, 0, 0, 359, 360, 357, 361, 358, 362, 356,
357, 359, 360, 363, 361, 364, 362, 365, 355, 0,
366, 363, 0, 364, 367, 365, 0, 364, 366, 368,
362, 369, 367, 370, 361, 0, 371, 368, 372, 369,
0, 370, 373, 365, 371, 0, 372, 0, 368, 374,
373, 375, 376, 369, 0, 373, 377, 374, 378, 375,
376, 374, 371, 379, 377, 380, 378, 381, 377, 382,
383, 379, 0, 380, 375, 381, 384, 382, 383, 385,
381, 386, 387, 388, 384, 389, 376, 385, 0, 386,
387, 388, 390, 389, 391, 392, 388, 0, 383, 393,
390, 0, 391, 392, 394, 385, 395, 393, 391, 384,
396, 397, 394, 398, 395, 399, 400, 387, 396, 397,
401, 398, 402, 399, 400, 399, 394, 0, 401, 400,
402, 0, 0, 0, 398, 0, 0, 0, 0, 0,
397, 0, 0, 0, 0, 0, 401, 404, 404, 404,
404, 404, 404, 404, 404, 404, 405, 405, 405, 405,
405, 405, 405, 405, 405, 406, 406, 406, 406, 406,
406, 406, 406, 406, 407, 0, 407, 408, 408, 408,
409, 409, 0, 409, 410, 410, 410, 410, 0, 410,
410, 410, 410, 411, 411, 411, 411, 411, 411, 411,
411, 411, 412, 412, 412, 0, 412, 412, 412, 412,
412, 413, 0, 413, 413, 413, 413, 413, 413, 413,
414, 0, 0, 0, 0, 0, 414, 415, 415, 0,
415, 416, 0, 416, 403, 403, 403, 403, 403, 403,
403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
403
1, 1, 1, 1, 1, 11, 11, 12, 12, 25,
32, 25, 28, 28, 33, 38, 35, 64, 32, 64,
34, 54, 33, 38, 35, 44, 54, 33, 34, 35,
36, 33, 32, 44, 39, 266, 34, 32, 36, 120,
34, 231, 39, 34, 120, 37, 34, 33, 39, 34,
36, 44, 36, 37, 181, 41, 39, 42, 37, 40,
128, 39, 36, 41, 127, 42, 126, 40, 37, 43,
121, 37, 40, 124, 37, 121, 40, 43, 41, 45,
42, 46, 40, 43, 59, 59, 42, 45, 72, 46,
71, 43, 45, 43, 46, 43, 47, 46, 71, 48,
49, 70, 45, 73, 47, 47, 46, 48, 49, 49,
46, 73, 47, 65, 50, 73, 74, 75, 76, 47,
77, 48, 50, 48, 74, 75, 76, 74, 77, 63,
50, 78, 75, 76, 79, 81, 82, 50, 80, 78,
78, 83, 79, 81, 82, 84, 80, 86, 81, 83,
58, 56, 83, 84, 30, 86, 26, 79, 85, 80,
80, 83, 82, 79, 86, 87, 85, 80, 83, 88,
85, 89, 84, 87, 90, 91, 92, 88, 93, 89,
24, 23, 90, 91, 92, 9, 93, 8, 92, 94,
95, 96, 7, 87, 89, 88, 90, 94, 95, 96,
97, 6, 96, 92, 92, 98, 5, 99, 97, 95,
100, 94, 97, 98, 96, 99, 101, 102, 100, 4,
103, 104, 3, 105, 101, 102, 106, 99, 103, 104,
102, 105, 103, 98, 106, 107, 0, 109, 0, 108,
0, 113, 110, 107, 104, 109, 106, 108, 108, 113,
110, 105, 110, 112, 111, 107, 0, 109, 0, 114,
115, 112, 111, 107, 111, 116, 112, 114, 115, 117,
118, 130, 115, 116, 0, 113, 114, 117, 118, 130,
131, 132, 117, 133, 134, 116, 117, 135, 131, 132,
0, 133, 134, 136, 137, 135, 118, 138, 132, 139,
133, 136, 137, 140, 0, 138, 0, 139, 138, 141,
134, 140, 140, 0, 135, 137, 143, 141, 142, 144,
136, 139, 0, 0, 143, 146, 142, 144, 0, 143,
144, 145, 147, 146, 148, 141, 141, 0, 142, 145,
147, 149, 148, 150, 145, 148, 151, 154, 145, 149,
152, 150, 0, 153, 151, 154, 0, 151, 152, 155,
147, 153, 0, 152, 150, 156, 153, 155, 157, 158,
154, 159, 160, 156, 155, 161, 157, 158, 156, 159,
160, 153, 162, 161, 159, 0, 160, 157, 163, 164,
162, 165, 0, 158, 166, 161, 163, 164, 167, 165,
164, 163, 166, 0, 162, 168, 167, 169, 170, 171,
172, 167, 0, 168, 166, 169, 170, 171, 172, 173,
165, 174, 0, 0, 175, 0, 176, 173, 0, 174,
172, 174, 175, 169, 176, 176, 171, 177, 178, 179,
183, 173, 180, 184, 185, 177, 178, 179, 183, 175,
180, 184, 185, 0, 0, 186, 0, 0, 0, 179,
0, 180, 183, 186, 178, 184, 177, 187, 186, 188,
189, 0, 190, 191, 192, 187, 193, 188, 189, 189,
190, 191, 192, 194, 193, 195, 188, 192, 196, 197,
198, 194, 194, 195, 199, 187, 196, 197, 198, 193,
190, 191, 199, 200, 198, 0, 201, 202, 203, 206,
204, 200, 205, 195, 201, 202, 203, 206, 204, 200,
205, 207, 208, 209, 210, 211, 0, 0, 0, 207,
208, 209, 210, 211, 212, 202, 204, 213, 205, 214,
203, 0, 212, 215, 217, 213, 216, 214, 218, 207,
0, 215, 217, 219, 216, 220, 218, 212, 218, 216,
0, 219, 0, 220, 219, 221, 222, 223, 220, 215,
217, 0, 224, 221, 222, 223, 225, 227, 226, 222,
224, 0, 0, 228, 225, 227, 226, 229, 0, 224,
227, 228, 0, 221, 230, 229, 228, 0, 0, 232,
229, 233, 230, 234, 235, 225, 226, 232, 236, 233,
237, 234, 235, 238, 239, 240, 236, 235, 237, 0,
241, 238, 239, 240, 242, 244, 243, 239, 241, 233,
0, 0, 242, 244, 243, 245, 236, 240, 237, 243,
246, 247, 0, 245, 248, 249, 241, 250, 246, 247,
242, 251, 248, 249, 252, 250, 253, 246, 255, 251,
0, 254, 252, 250, 253, 256, 255, 255, 253, 254,
257, 258, 248, 256, 259, 0, 260, 261, 257, 258,
251, 262, 259, 254, 260, 261, 0, 263, 264, 262,
261, 265, 267, 256, 262, 263, 264, 258, 260, 265,
267, 268, 269, 270, 271, 272, 0, 273, 274, 268,
269, 270, 271, 272, 263, 273, 274, 275, 276, 0,
277, 274, 278, 279, 280, 275, 276, 268, 277, 281,
278, 279, 280, 272, 283, 282, 284, 281, 0, 285,
0, 276, 283, 282, 284, 279, 282, 285, 285, 286,
287, 288, 289, 280, 290, 291, 292, 286, 287, 288,
289, 293, 290, 291, 292, 289, 294, 295, 296, 293,
0, 297, 298, 293, 294, 295, 296, 299, 292, 297,
298, 301, 300, 297, 0, 299, 295, 0, 302, 301,
300, 303, 294, 304, 296, 300, 302, 305, 0, 303,
0, 304, 0, 0, 0, 305, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 302, 307, 307, 307, 307, 307, 307, 307, 307,
307, 308, 308, 308, 308, 308, 308, 308, 308, 308,
309, 309, 309, 309, 309, 309, 309, 309, 309, 310,
0, 310, 311, 311, 311, 312, 312, 0, 312, 313,
313, 313, 313, 0, 313, 313, 313, 313, 314, 314,
314, 314, 314, 314, 314, 314, 314, 315, 315, 315,
0, 315, 315, 315, 315, 315, 316, 0, 316, 316,
316, 316, 316, 316, 316, 317, 0, 0, 0, 0,
0, 317, 318, 318, 0, 318, 319, 0, 319, 306,
306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
306, 306, 306, 306, 306
} ;
static yy_state_type yy_last_accepting_state;
......@@ -961,9 +856,9 @@ string_append(
stringbuf_len += len;
}
#line 964 "lexyy.cc"
#line 859 "lexyy.cc"
#line 966 "lexyy.cc"
#line 861 "lexyy.cc"
#define INITIAL 0
#define comment 1
......@@ -1184,7 +1079,7 @@ YY_DECL
#line 112 "pars0lex.l"
#line 1187 "lexyy.cc"
#line 1082 "lexyy.cc"
while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */
{
......@@ -1211,13 +1106,13 @@ YY_DECL
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
if ( yy_current_state >= 404 )
if ( yy_current_state >= 307 )
yy_c = yy_meta[yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
++yy_cp;
}
while ( yy_current_state != 403 );
while ( yy_current_state != 306 );
yy_cp = (yy_last_accepting_cpos);
yy_current_state = (yy_last_accepting_state);
......@@ -1436,544 +1331,397 @@ case 18:
YY_RULE_SETUP
#line 252 "pars0lex.l"
{
return(PARS_OUT_TOKEN);
return(PARS_INT_TOKEN);
}
YY_BREAK
case 19:
YY_RULE_SETUP
#line 256 "pars0lex.l"
{
return(PARS_BINARY_TOKEN);
return(PARS_CHAR_TOKEN);
}
YY_BREAK
case 20:
YY_RULE_SETUP
#line 260 "pars0lex.l"
{
return(PARS_BLOB_TOKEN);
return(PARS_IS_TOKEN);
}
YY_BREAK
case 21:
YY_RULE_SETUP
#line 264 "pars0lex.l"
{
return(PARS_INT_TOKEN);
return(PARS_BEGIN_TOKEN);
}
YY_BREAK
case 22:
YY_RULE_SETUP
#line 268 "pars0lex.l"
{
return(PARS_INT_TOKEN);
return(PARS_END_TOKEN);
}
YY_BREAK
case 23:
YY_RULE_SETUP
#line 272 "pars0lex.l"
{
return(PARS_FLOAT_TOKEN);
return(PARS_IF_TOKEN);
}
YY_BREAK
case 24:
YY_RULE_SETUP
#line 276 "pars0lex.l"
{
return(PARS_CHAR_TOKEN);
return(PARS_THEN_TOKEN);
}
YY_BREAK
case 25:
YY_RULE_SETUP
#line 280 "pars0lex.l"
{
return(PARS_IS_TOKEN);
return(PARS_ELSE_TOKEN);
}
YY_BREAK
case 26:
YY_RULE_SETUP
#line 284 "pars0lex.l"
{
return(PARS_BEGIN_TOKEN);
return(PARS_ELSIF_TOKEN);
}
YY_BREAK
case 27:
YY_RULE_SETUP
#line 288 "pars0lex.l"
{
return(PARS_END_TOKEN);
return(PARS_LOOP_TOKEN);
}
YY_BREAK
case 28:
YY_RULE_SETUP
#line 292 "pars0lex.l"
{
return(PARS_IF_TOKEN);
return(PARS_WHILE_TOKEN);
}
YY_BREAK
case 29:
YY_RULE_SETUP
#line 296 "pars0lex.l"
{
return(PARS_THEN_TOKEN);
return(PARS_RETURN_TOKEN);
}
YY_BREAK
case 30:
YY_RULE_SETUP
#line 300 "pars0lex.l"
{
return(PARS_ELSE_TOKEN);
return(PARS_SELECT_TOKEN);
}
YY_BREAK
case 31:
YY_RULE_SETUP
#line 304 "pars0lex.l"
{
return(PARS_ELSIF_TOKEN);
return(PARS_COUNT_TOKEN);
}
YY_BREAK
case 32:
YY_RULE_SETUP
#line 308 "pars0lex.l"
{
return(PARS_LOOP_TOKEN);
return(PARS_FROM_TOKEN);
}
YY_BREAK
case 33:
YY_RULE_SETUP
#line 312 "pars0lex.l"
{
return(PARS_WHILE_TOKEN);
return(PARS_WHERE_TOKEN);
}
YY_BREAK
case 34:
YY_RULE_SETUP
#line 316 "pars0lex.l"
{
return(PARS_RETURN_TOKEN);
return(PARS_FOR_TOKEN);
}
YY_BREAK
case 35:
YY_RULE_SETUP
#line 320 "pars0lex.l"
{
return(PARS_SELECT_TOKEN);
return(PARS_ORDER_TOKEN);
}
YY_BREAK
case 36:
YY_RULE_SETUP
#line 324 "pars0lex.l"
{
return(PARS_SUM_TOKEN);
return(PARS_BY_TOKEN);
}
YY_BREAK
case 37:
YY_RULE_SETUP
#line 328 "pars0lex.l"
{
return(PARS_COUNT_TOKEN);
return(PARS_ASC_TOKEN);
}
YY_BREAK
case 38:
YY_RULE_SETUP
#line 332 "pars0lex.l"
{
return(PARS_DISTINCT_TOKEN);
return(PARS_DESC_TOKEN);
}
YY_BREAK
case 39:
YY_RULE_SETUP
#line 336 "pars0lex.l"
{
return(PARS_FROM_TOKEN);
return(PARS_INSERT_TOKEN);
}
YY_BREAK
case 40:
YY_RULE_SETUP
#line 340 "pars0lex.l"
{
return(PARS_WHERE_TOKEN);
return(PARS_INTO_TOKEN);
}
YY_BREAK
case 41:
YY_RULE_SETUP
#line 344 "pars0lex.l"
{
return(PARS_FOR_TOKEN);
return(PARS_VALUES_TOKEN);
}
YY_BREAK
case 42:
YY_RULE_SETUP
#line 348 "pars0lex.l"
{
return(PARS_READ_TOKEN);
return(PARS_UPDATE_TOKEN);
}
YY_BREAK
case 43:
YY_RULE_SETUP
#line 352 "pars0lex.l"
{
return(PARS_ORDER_TOKEN);
return(PARS_SET_TOKEN);
}
YY_BREAK
case 44:
YY_RULE_SETUP
#line 356 "pars0lex.l"
{
return(PARS_BY_TOKEN);
return(PARS_DELETE_TOKEN);
}
YY_BREAK
case 45:
YY_RULE_SETUP
#line 360 "pars0lex.l"
{
return(PARS_ASC_TOKEN);
return(PARS_CURRENT_TOKEN);
}
YY_BREAK
case 46:
YY_RULE_SETUP
#line 364 "pars0lex.l"
{
return(PARS_DESC_TOKEN);
return(PARS_OF_TOKEN);
}
YY_BREAK
case 47:
YY_RULE_SETUP
#line 368 "pars0lex.l"
{
return(PARS_INSERT_TOKEN);
return(PARS_CREATE_TOKEN);
}
YY_BREAK
case 48:
YY_RULE_SETUP
#line 372 "pars0lex.l"
{
return(PARS_INTO_TOKEN);
return(PARS_TABLE_TOKEN);
}
YY_BREAK
case 49:
YY_RULE_SETUP
#line 376 "pars0lex.l"
{
return(PARS_VALUES_TOKEN);
return(PARS_INDEX_TOKEN);
}
YY_BREAK
case 50:
YY_RULE_SETUP
#line 380 "pars0lex.l"
{
return(PARS_UPDATE_TOKEN);
return(PARS_UNIQUE_TOKEN);
}
YY_BREAK
case 51:
YY_RULE_SETUP
#line 384 "pars0lex.l"
{
return(PARS_SET_TOKEN);
return(PARS_CLUSTERED_TOKEN);
}
YY_BREAK
case 52:
YY_RULE_SETUP
#line 388 "pars0lex.l"
{
return(PARS_DELETE_TOKEN);
return(PARS_ON_TOKEN);
}
YY_BREAK
case 53:
YY_RULE_SETUP
#line 392 "pars0lex.l"
{
return(PARS_CURRENT_TOKEN);
return(PARS_DECLARE_TOKEN);
}
YY_BREAK
case 54:
YY_RULE_SETUP
#line 396 "pars0lex.l"
{
return(PARS_OF_TOKEN);
return(PARS_CURSOR_TOKEN);
}
YY_BREAK
case 55:
YY_RULE_SETUP
#line 400 "pars0lex.l"
{
return(PARS_CREATE_TOKEN);
return(PARS_OPEN_TOKEN);
}
YY_BREAK
case 56:
YY_RULE_SETUP
#line 404 "pars0lex.l"
{
return(PARS_TABLE_TOKEN);
return(PARS_FETCH_TOKEN);
}
YY_BREAK
case 57:
YY_RULE_SETUP
#line 408 "pars0lex.l"
{
return(PARS_COMPACT_TOKEN);
return(PARS_CLOSE_TOKEN);
}
YY_BREAK
case 58:
YY_RULE_SETUP
#line 412 "pars0lex.l"
{
return(PARS_BLOCK_SIZE_TOKEN);
return(PARS_NOTFOUND_TOKEN);
}
YY_BREAK
case 59:
YY_RULE_SETUP
#line 416 "pars0lex.l"
{
return(PARS_INDEX_TOKEN);
return(PARS_TO_BINARY_TOKEN);
}
YY_BREAK
case 60:
YY_RULE_SETUP
#line 420 "pars0lex.l"
{
return(PARS_UNIQUE_TOKEN);
return(PARS_SUBSTR_TOKEN);
}
YY_BREAK
case 61:
YY_RULE_SETUP
#line 424 "pars0lex.l"
{
return(PARS_CLUSTERED_TOKEN);
return(PARS_CONCAT_TOKEN);
}
YY_BREAK
case 62:
YY_RULE_SETUP
#line 428 "pars0lex.l"
{
return(PARS_ON_TOKEN);
return(PARS_INSTR_TOKEN);
}
YY_BREAK
case 63:
YY_RULE_SETUP
#line 432 "pars0lex.l"
{
return(PARS_DECLARE_TOKEN);
return(PARS_LENGTH_TOKEN);
}
YY_BREAK
case 64:
YY_RULE_SETUP
#line 436 "pars0lex.l"
{
return(PARS_CURSOR_TOKEN);
return(PARS_COMMIT_TOKEN);
}
YY_BREAK
case 65:
YY_RULE_SETUP
#line 440 "pars0lex.l"
{
return(PARS_OPEN_TOKEN);
return(PARS_ROLLBACK_TOKEN);
}
YY_BREAK
case 66:
YY_RULE_SETUP
#line 444 "pars0lex.l"
{
return(PARS_FETCH_TOKEN);
return(PARS_WORK_TOKEN);
}
YY_BREAK
case 67:
YY_RULE_SETUP
#line 448 "pars0lex.l"
{
return(PARS_CLOSE_TOKEN);
return(PARS_EXIT_TOKEN);
}
YY_BREAK
case 68:
YY_RULE_SETUP
#line 452 "pars0lex.l"
{
return(PARS_NOTFOUND_TOKEN);
return(PARS_FUNCTION_TOKEN);
}
YY_BREAK
case 69:
YY_RULE_SETUP
#line 456 "pars0lex.l"
{
return(PARS_TO_CHAR_TOKEN);
return(PARS_LOCK_TOKEN);
}
YY_BREAK
case 70:
YY_RULE_SETUP
#line 460 "pars0lex.l"
{
return(PARS_TO_NUMBER_TOKEN);
return(PARS_SHARE_TOKEN);
}
YY_BREAK
case 71:
YY_RULE_SETUP
#line 464 "pars0lex.l"
{
return(PARS_TO_BINARY_TOKEN);
return(PARS_MODE_TOKEN);
}
YY_BREAK
case 72:
YY_RULE_SETUP
#line 468 "pars0lex.l"
{
return(PARS_BINARY_TO_NUMBER_TOKEN);
return(PARS_LIKE_TOKEN);
}
YY_BREAK
case 73:
YY_RULE_SETUP
#line 472 "pars0lex.l"
{
return(PARS_SUBSTR_TOKEN);
return(PARS_BIGINT_TOKEN);
}
YY_BREAK
case 74:
YY_RULE_SETUP
#line 476 "pars0lex.l"
{
return(PARS_REPLSTR_TOKEN);
}
YY_BREAK
case 75:
YY_RULE_SETUP
#line 480 "pars0lex.l"
{
return(PARS_CONCAT_TOKEN);
}
YY_BREAK
case 76:
YY_RULE_SETUP
#line 484 "pars0lex.l"
{
return(PARS_INSTR_TOKEN);
}
YY_BREAK
case 77:
YY_RULE_SETUP
#line 488 "pars0lex.l"
{
return(PARS_LENGTH_TOKEN);
}
YY_BREAK
case 78:
YY_RULE_SETUP
#line 492 "pars0lex.l"
{
return(PARS_SYSDATE_TOKEN);
}
YY_BREAK
case 79:
YY_RULE_SETUP
#line 496 "pars0lex.l"
{
return(PARS_PRINTF_TOKEN);
}
YY_BREAK
case 80:
YY_RULE_SETUP
#line 500 "pars0lex.l"
{
return(PARS_ASSERT_TOKEN);
}
YY_BREAK
case 81:
YY_RULE_SETUP
#line 504 "pars0lex.l"
{
return(PARS_RND_TOKEN);
}
YY_BREAK
case 82:
YY_RULE_SETUP
#line 508 "pars0lex.l"
{
return(PARS_RND_STR_TOKEN);
}
YY_BREAK
case 83:
YY_RULE_SETUP
#line 512 "pars0lex.l"
{
return(PARS_ROW_PRINTF_TOKEN);
}
YY_BREAK
case 84:
YY_RULE_SETUP
#line 516 "pars0lex.l"
{
return(PARS_COMMIT_TOKEN);
}
YY_BREAK
case 85:
YY_RULE_SETUP
#line 520 "pars0lex.l"
{
return(PARS_ROLLBACK_TOKEN);
}
YY_BREAK
case 86:
YY_RULE_SETUP
#line 524 "pars0lex.l"
{
return(PARS_WORK_TOKEN);
}
YY_BREAK
case 87:
YY_RULE_SETUP
#line 528 "pars0lex.l"
{
return(PARS_UNSIGNED_TOKEN);
}
YY_BREAK
case 88:
YY_RULE_SETUP
#line 532 "pars0lex.l"
{
return(PARS_EXIT_TOKEN);
}
YY_BREAK
case 89:
YY_RULE_SETUP
#line 536 "pars0lex.l"
{
return(PARS_FUNCTION_TOKEN);
}
YY_BREAK
case 90:
YY_RULE_SETUP
#line 540 "pars0lex.l"
{
return(PARS_LOCK_TOKEN);
}
YY_BREAK
case 91:
YY_RULE_SETUP
#line 544 "pars0lex.l"
{
return(PARS_SHARE_TOKEN);
}
YY_BREAK
case 92:
YY_RULE_SETUP
#line 548 "pars0lex.l"
{
return(PARS_MODE_TOKEN);
}
YY_BREAK
case 93:
YY_RULE_SETUP
#line 552 "pars0lex.l"
{
return(PARS_LIKE_TOKEN);
}
YY_BREAK
case 94:
YY_RULE_SETUP
#line 556 "pars0lex.l"
{
return(PARS_BIGINT_TOKEN);
}
YY_BREAK
case 95:
YY_RULE_SETUP
#line 560 "pars0lex.l"
{
yylval = sym_tab_add_id(pars_sym_tab_global,
(byte*) yytext,
......@@ -1981,9 +1729,9 @@ YY_RULE_SETUP
return(PARS_ID_TOKEN);
}
YY_BREAK
case 96:
case 75:
YY_RULE_SETUP
#line 567 "pars0lex.l"
#line 483 "pars0lex.l"
{
yylval = sym_tab_add_id(pars_sym_tab_global,
(byte*) yytext,
......@@ -1991,192 +1739,192 @@ YY_RULE_SETUP
return(PARS_TABLE_NAME_TOKEN);
}
YY_BREAK
case 97:
case 76:
YY_RULE_SETUP
#line 574 "pars0lex.l"
#line 490 "pars0lex.l"
{
return(PARS_DDOT_TOKEN);
}
YY_BREAK
case 98:
case 77:
YY_RULE_SETUP
#line 578 "pars0lex.l"
#line 494 "pars0lex.l"
{
return(PARS_ASSIGN_TOKEN);
}
YY_BREAK
case 99:
case 78:
YY_RULE_SETUP
#line 582 "pars0lex.l"
#line 498 "pars0lex.l"
{
return(PARS_LE_TOKEN);
}
YY_BREAK
case 100:
case 79:
YY_RULE_SETUP
#line 586 "pars0lex.l"
#line 502 "pars0lex.l"
{
return(PARS_GE_TOKEN);
}
YY_BREAK
case 101:
case 80:
YY_RULE_SETUP
#line 590 "pars0lex.l"
#line 506 "pars0lex.l"
{
return(PARS_NE_TOKEN);
}
YY_BREAK
case 102:
case 81:
YY_RULE_SETUP
#line 594 "pars0lex.l"
#line 510 "pars0lex.l"
{
return((int)(*yytext));
}
YY_BREAK
case 103:
case 82:
YY_RULE_SETUP
#line 599 "pars0lex.l"
#line 515 "pars0lex.l"
{
return((int)(*yytext));
}
YY_BREAK
case 104:
case 83:
YY_RULE_SETUP
#line 604 "pars0lex.l"
#line 520 "pars0lex.l"
{
return((int)(*yytext));
}
YY_BREAK
case 105:
case 84:
YY_RULE_SETUP
#line 609 "pars0lex.l"
#line 525 "pars0lex.l"
{
return((int)(*yytext));
}
YY_BREAK
case 106:
case 85:
YY_RULE_SETUP
#line 614 "pars0lex.l"
#line 530 "pars0lex.l"
{
return((int)(*yytext));
}
YY_BREAK
case 107:
case 86:
YY_RULE_SETUP
#line 619 "pars0lex.l"
#line 535 "pars0lex.l"
{
return((int)(*yytext));
}
YY_BREAK
case 108:
case 87:
YY_RULE_SETUP
#line 624 "pars0lex.l"
#line 540 "pars0lex.l"
{
return((int)(*yytext));
}
YY_BREAK
case 109:
case 88:
YY_RULE_SETUP
#line 629 "pars0lex.l"
#line 545 "pars0lex.l"
{
return((int)(*yytext));
}
YY_BREAK
case 110:
case 89:
YY_RULE_SETUP
#line 634 "pars0lex.l"
#line 550 "pars0lex.l"
{
return((int)(*yytext));
}
YY_BREAK
case 111:
case 90:
YY_RULE_SETUP
#line 639 "pars0lex.l"
#line 555 "pars0lex.l"
{
return((int)(*yytext));
}
YY_BREAK
case 112:
case 91:
YY_RULE_SETUP
#line 644 "pars0lex.l"
#line 560 "pars0lex.l"
{
return((int)(*yytext));
}
YY_BREAK
case 113:
case 92:
YY_RULE_SETUP
#line 649 "pars0lex.l"
#line 565 "pars0lex.l"
{
return((int)(*yytext));
}
YY_BREAK
case 114:
case 93:
YY_RULE_SETUP
#line 654 "pars0lex.l"
#line 570 "pars0lex.l"
{
return((int)(*yytext));
}
YY_BREAK
case 115:
case 94:
YY_RULE_SETUP
#line 659 "pars0lex.l"
#line 575 "pars0lex.l"
{
return((int)(*yytext));
}
YY_BREAK
case 116:
case 95:
YY_RULE_SETUP
#line 664 "pars0lex.l"
#line 580 "pars0lex.l"
{
return((int)(*yytext));
}
YY_BREAK
case 117:
case 96:
YY_RULE_SETUP
#line 669 "pars0lex.l"
#line 585 "pars0lex.l"
BEGIN(comment); /* eat up comment */
YY_BREAK
case 118:
/* rule 118 can match eol */
case 97:
/* rule 97 can match eol */
YY_RULE_SETUP
#line 671 "pars0lex.l"
#line 587 "pars0lex.l"
YY_BREAK
case 119:
/* rule 119 can match eol */
case 98:
/* rule 98 can match eol */
YY_RULE_SETUP
#line 672 "pars0lex.l"
#line 588 "pars0lex.l"
YY_BREAK
case 120:
case 99:
YY_RULE_SETUP
#line 673 "pars0lex.l"
#line 589 "pars0lex.l"
BEGIN(INITIAL);
YY_BREAK
case 121:
/* rule 121 can match eol */
case 100:
/* rule 100 can match eol */
YY_RULE_SETUP
#line 675 "pars0lex.l"
#line 591 "pars0lex.l"
/* eat up whitespace */
YY_BREAK
case 122:
case 101:
YY_RULE_SETUP
#line 678 "pars0lex.l"
#line 594 "pars0lex.l"
{
fprintf(stderr,"Unrecognized character: %02x\n",
*yytext);
......@@ -2186,12 +1934,12 @@ YY_RULE_SETUP
return(0);
}
YY_BREAK
case 123:
case 102:
YY_RULE_SETUP
#line 687 "pars0lex.l"
#line 603 "pars0lex.l"
YY_FATAL_ERROR( "flex scanner jammed" );
YY_BREAK
#line 2194 "lexyy.cc"
#line 1942 "lexyy.cc"
case YY_STATE_EOF(INITIAL):
case YY_STATE_EOF(comment):
case YY_STATE_EOF(quoted):
......@@ -2492,7 +2240,7 @@ static int yy_get_next_buffer (void)
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
if ( yy_current_state >= 404 )
if ( yy_current_state >= 307 )
yy_c = yy_meta[yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
......@@ -2520,11 +2268,11 @@ static int yy_get_next_buffer (void)
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
if ( yy_current_state >= 404 )
if ( yy_current_state >= 307 )
yy_c = yy_meta[yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
yy_is_jam = (yy_current_state == 403);
yy_is_jam = (yy_current_state == 306);
return yy_is_jam ? 0 : yy_current_state;
}
......@@ -3077,7 +2825,7 @@ static void yyfree (void * ptr )
#define YYTABLES_NAME "yytables"
#line 687 "pars0lex.l"
#line 603 "pars0lex.l"
/**********************************************************************
......
This source diff could not be displayed because it is too large. You can view the blob instead.
/*****************************************************************************
Copyright (c) 1997, 2014, Oracle and/or its affiliates. All Rights Reserved.
Copyright (c) 2017, MariaDB Corporation.
Copyright (c) 2017, 2019, MariaDB Corporation.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
......@@ -58,11 +58,7 @@ yylex(void);
%token PARS_NE_TOKEN
%token PARS_PROCEDURE_TOKEN
%token PARS_IN_TOKEN
%token PARS_OUT_TOKEN
%token PARS_BINARY_TOKEN
%token PARS_BLOB_TOKEN
%token PARS_INT_TOKEN
%token PARS_FLOAT_TOKEN
%token PARS_CHAR_TOKEN
%token PARS_IS_TOKEN
%token PARS_BEGIN_TOKEN
......@@ -75,14 +71,11 @@ yylex(void);
%token PARS_WHILE_TOKEN
%token PARS_RETURN_TOKEN
%token PARS_SELECT_TOKEN
%token PARS_SUM_TOKEN
%token PARS_COUNT_TOKEN
%token PARS_DISTINCT_TOKEN
%token PARS_FROM_TOKEN
%token PARS_WHERE_TOKEN
%token PARS_FOR_TOKEN
%token PARS_DDOT_TOKEN
%token PARS_READ_TOKEN
%token PARS_ORDER_TOKEN
%token PARS_BY_TOKEN
%token PARS_ASC_TOKEN
......@@ -109,25 +102,14 @@ yylex(void);
%token PARS_FETCH_TOKEN
%token PARS_CLOSE_TOKEN
%token PARS_NOTFOUND_TOKEN
%token PARS_TO_CHAR_TOKEN
%token PARS_TO_NUMBER_TOKEN
%token PARS_TO_BINARY_TOKEN
%token PARS_BINARY_TO_NUMBER_TOKEN
%token PARS_SUBSTR_TOKEN
%token PARS_REPLSTR_TOKEN
%token PARS_CONCAT_TOKEN
%token PARS_INSTR_TOKEN
%token PARS_LENGTH_TOKEN
%token PARS_SYSDATE_TOKEN
%token PARS_PRINTF_TOKEN
%token PARS_ASSERT_TOKEN
%token PARS_RND_TOKEN
%token PARS_RND_STR_TOKEN
%token PARS_ROW_PRINTF_TOKEN
%token PARS_COMMIT_TOKEN
%token PARS_ROLLBACK_TOKEN
%token PARS_WORK_TOKEN
%token PARS_UNSIGNED_TOKEN
%token PARS_EXIT_TOKEN
%token PARS_FUNCTION_TOKEN
%token PARS_LOCK_TOKEN
......@@ -139,8 +121,6 @@ yylex(void);
%token PARS_LIKE_TOKEN_SUFFIX
%token PARS_LIKE_TOKEN_SUBSTR
%token PARS_TABLE_NAME_TOKEN
%token PARS_COMPACT_TOKEN
%token PARS_BLOCK_SIZE_TOKEN
%token PARS_BIGINT_TOKEN
%left PARS_AND_TOKEN PARS_OR_TOKEN
......@@ -161,7 +141,6 @@ top_statement:
statement:
stored_procedure_call
| predefined_procedure_call ';'
| while_statement ';'
| for_statement ';'
| exit_statement ';'
......@@ -170,7 +149,6 @@ statement:
| assignment_statement ';'
| select_statement ';'
| insert_statement ';'
| row_printf_statement ';'
| delete_statement_searched ';'
| delete_statement_positioned ';'
| update_statement_searched ';'
......@@ -223,18 +201,11 @@ exp:
;
function_name:
PARS_TO_CHAR_TOKEN { $$ = &pars_to_char_token; }
| PARS_TO_NUMBER_TOKEN { $$ = &pars_to_number_token; }
| PARS_TO_BINARY_TOKEN { $$ = &pars_to_binary_token; }
| PARS_BINARY_TO_NUMBER_TOKEN
{ $$ = &pars_binary_to_number_token; }
PARS_TO_BINARY_TOKEN { $$ = &pars_to_binary_token; }
| PARS_SUBSTR_TOKEN { $$ = &pars_substr_token; }
| PARS_CONCAT_TOKEN { $$ = &pars_concat_token; }
| PARS_INSTR_TOKEN { $$ = &pars_instr_token; }
| PARS_LENGTH_TOKEN { $$ = &pars_length_token; }
| PARS_SYSDATE_TOKEN { $$ = &pars_sysdate_token; }
| PARS_RND_TOKEN { $$ = &pars_rnd_token; }
| PARS_RND_STR_TOKEN { $$ = &pars_rnd_str_token; }
;
question_mark_list:
......@@ -249,17 +220,6 @@ stored_procedure_call:
static_cast<sym_node_t*>($2)); }
;
predefined_procedure_call:
predefined_procedure_name '(' exp_list ')'
{ $$ = pars_procedure_call($1, $3); }
;
predefined_procedure_name:
PARS_REPLSTR_TOKEN { $$ = &pars_replstr_token; }
| PARS_PRINTF_TOKEN { $$ = &pars_printf_token; }
| PARS_ASSERT_TOKEN { $$ = &pars_assert_token; }
;
user_function_call:
PARS_ID_TOKEN '(' ')' { $$ = $1; }
;
......@@ -287,19 +247,9 @@ select_item:
exp { $$ = $1; }
| PARS_COUNT_TOKEN '(' '*' ')'
{ $$ = pars_func(&pars_count_token,
que_node_list_add_last(NULL,
que_node_list_add_last(NULL,
sym_tab_add_int_lit(
pars_sym_tab_global, 1))); }
| PARS_COUNT_TOKEN '(' PARS_DISTINCT_TOKEN PARS_ID_TOKEN ')'
{ $$ = pars_func(&pars_count_token,
que_node_list_add_last(NULL,
pars_func(&pars_distinct_token,
que_node_list_add_last(
NULL, $4)))); }
| PARS_SUM_TOKEN '(' exp ')'
{ $$ = pars_func(&pars_sum_token,
que_node_list_add_last(NULL,
$3)); }
;
select_item_list:
......@@ -446,12 +396,6 @@ delete_statement_positioned:
NULL); }
;
row_printf_statement:
PARS_ROW_PRINTF_TOKEN select_statement
{ $$ = pars_row_printf_statement(
static_cast<sel_node_t*>($2)); }
;
assignment_statement:
PARS_ID_TOKEN PARS_ASSIGN_TOKEN exp
{ $$ = pars_assignment_statement(
......@@ -536,12 +480,12 @@ fetch_statement:
;
column_def:
PARS_ID_TOKEN type_name opt_column_len opt_unsigned opt_not_null
PARS_ID_TOKEN type_name opt_column_len opt_not_null
{ $$ = pars_column_def(
static_cast<sym_node_t*>($1),
static_cast<pars_res_word_t*>($2),
static_cast<sym_node_t*>($3),
$4, $5); }
$4); }
;
column_def_list:
......@@ -556,13 +500,6 @@ opt_column_len:
{ $$ = $2; }
;
opt_unsigned:
/* Nothing */ { $$ = NULL; }
| PARS_UNSIGNED_TOKEN
{ $$ = &pars_int_token;
/* pass any non-NULL pointer */ }
;
opt_not_null:
/* Nothing */ { $$ = NULL; }
| PARS_NOT_TOKEN PARS_NULL_LIT
......@@ -570,27 +507,12 @@ opt_not_null:
/* pass any non-NULL pointer */ }
;
compact:
/* Nothing */ { $$ = NULL; }
| PARS_COMPACT_TOKEN { $$ = &pars_int_token;
/* pass any non-NULL pointer */ }
;
block_size:
/* Nothing */ { $$ = NULL; }
| PARS_BLOCK_SIZE_TOKEN '=' PARS_INT_LIT
{ $$ = $3; }
;
create_table:
PARS_CREATE_TOKEN PARS_TABLE_TOKEN
table_name '(' column_def_list ')'
compact block_size
{ $$ = pars_create_table(
static_cast<sym_node_t*>($3),
static_cast<sym_node_t*>($5),
static_cast<sym_node_t*>($7),
static_cast<sym_node_t*>($8)); }
static_cast<sym_node_t*>($5)); }
;
column_list:
......@@ -642,28 +564,6 @@ type_name:
PARS_INT_TOKEN { $$ = &pars_int_token; }
| PARS_BIGINT_TOKEN { $$ = &pars_bigint_token; }
| PARS_CHAR_TOKEN { $$ = &pars_char_token; }
| PARS_BINARY_TOKEN { $$ = &pars_binary_token; }
| PARS_BLOB_TOKEN { $$ = &pars_blob_token; }
;
parameter_declaration:
PARS_ID_TOKEN PARS_IN_TOKEN type_name
{ $$ = pars_parameter_declaration(
static_cast<sym_node_t*>($1),
PARS_INPUT,
static_cast<pars_res_word_t*>($3)); }
| PARS_ID_TOKEN PARS_OUT_TOKEN type_name
{ $$ = pars_parameter_declaration(
static_cast<sym_node_t*>($1),
PARS_OUTPUT,
static_cast<pars_res_word_t*>($3)); }
;
parameter_declaration_list:
/* Nothing */ { $$ = NULL; }
| parameter_declaration { $$ = que_node_list_add_last(NULL, $1); }
| parameter_declaration_list ',' parameter_declaration
{ $$ = que_node_list_add_last($1, $3); }
;
variable_declaration:
......@@ -705,16 +605,14 @@ declaration_list:
;
procedure_definition:
PARS_PROCEDURE_TOKEN PARS_ID_TOKEN '(' parameter_declaration_list ')'
PARS_PROCEDURE_TOKEN PARS_ID_TOKEN '(' ')'
PARS_IS_TOKEN
variable_declaration_list
declaration_list
PARS_BEGIN_TOKEN
statement_list
PARS_END_TOKEN { $$ = pars_procedure_definition(
static_cast<sym_node_t*>($2),
static_cast<sym_node_t*>($4),
$10); }
static_cast<sym_node_t*>($2), $9); }
;
%%
......@@ -249,30 +249,10 @@ In the state 'id', only two actions are possible (defined below). */
return(PARS_IN_TOKEN);
}
"OUT" {
return(PARS_OUT_TOKEN);
}
"BINARY" {
return(PARS_BINARY_TOKEN);
}
"BLOB" {
return(PARS_BLOB_TOKEN);
}
"INT" {
return(PARS_INT_TOKEN);
}
"INTEGER" {
return(PARS_INT_TOKEN);
}
"FLOAT" {
return(PARS_FLOAT_TOKEN);
}
"CHAR" {
return(PARS_CHAR_TOKEN);
}
......@@ -321,18 +301,10 @@ In the state 'id', only two actions are possible (defined below). */
return(PARS_SELECT_TOKEN);
}
"SUM" {
return(PARS_SUM_TOKEN);
}
"COUNT" {
return(PARS_COUNT_TOKEN);
}
"DISTINCT" {
return(PARS_DISTINCT_TOKEN);
}
"FROM" {
return(PARS_FROM_TOKEN);
}
......@@ -345,10 +317,6 @@ In the state 'id', only two actions are possible (defined below). */
return(PARS_FOR_TOKEN);
}
"READ" {
return(PARS_READ_TOKEN);
}
"ORDER" {
return(PARS_ORDER_TOKEN);
}
......@@ -405,14 +373,6 @@ In the state 'id', only two actions are possible (defined below). */
return(PARS_TABLE_TOKEN);
}
"COMPACT" {
return(PARS_COMPACT_TOKEN);
}
"BLOCK_SIZE" {
return(PARS_BLOCK_SIZE_TOKEN);
}
"INDEX" {
return(PARS_INDEX_TOKEN);
}
......@@ -453,30 +413,14 @@ In the state 'id', only two actions are possible (defined below). */
return(PARS_NOTFOUND_TOKEN);
}
"TO_CHAR" {
return(PARS_TO_CHAR_TOKEN);
}
"TO_NUMBER" {
return(PARS_TO_NUMBER_TOKEN);
}
"TO_BINARY" {
return(PARS_TO_BINARY_TOKEN);
}
"BINARY_TO_NUMBER" {
return(PARS_BINARY_TO_NUMBER_TOKEN);
}
"SUBSTR" {
return(PARS_SUBSTR_TOKEN);
}
"REPLSTR" {
return(PARS_REPLSTR_TOKEN);
}
"CONCAT" {
return(PARS_CONCAT_TOKEN);
}
......@@ -489,30 +433,6 @@ In the state 'id', only two actions are possible (defined below). */
return(PARS_LENGTH_TOKEN);
}
"SYSDATE" {
return(PARS_SYSDATE_TOKEN);
}
"PRINTF" {
return(PARS_PRINTF_TOKEN);
}
"ASSERT" {
return(PARS_ASSERT_TOKEN);
}
"RND" {
return(PARS_RND_TOKEN);
}
"RND_STR" {
return(PARS_RND_STR_TOKEN);
}
"ROW_PRINTF" {
return(PARS_ROW_PRINTF_TOKEN);
}
"COMMIT" {
return(PARS_COMMIT_TOKEN);
}
......@@ -525,10 +445,6 @@ In the state 'id', only two actions are possible (defined below). */
return(PARS_WORK_TOKEN);
}
"UNSIGNED" {
return(PARS_UNSIGNED_TOKEN);
}
"EXIT" {
return(PARS_EXIT_TOKEN);
}
......
......@@ -50,29 +50,15 @@ sym_tab_t* pars_sym_tab_global;
/* Global variables used to denote certain reserved words, used in
constructing the parsing tree */
pars_res_word_t pars_to_char_token = {PARS_TO_CHAR_TOKEN};
pars_res_word_t pars_to_number_token = {PARS_TO_NUMBER_TOKEN};
pars_res_word_t pars_to_binary_token = {PARS_TO_BINARY_TOKEN};
pars_res_word_t pars_binary_to_number_token = {PARS_BINARY_TO_NUMBER_TOKEN};
pars_res_word_t pars_substr_token = {PARS_SUBSTR_TOKEN};
pars_res_word_t pars_replstr_token = {PARS_REPLSTR_TOKEN};
pars_res_word_t pars_concat_token = {PARS_CONCAT_TOKEN};
pars_res_word_t pars_instr_token = {PARS_INSTR_TOKEN};
pars_res_word_t pars_length_token = {PARS_LENGTH_TOKEN};
pars_res_word_t pars_sysdate_token = {PARS_SYSDATE_TOKEN};
pars_res_word_t pars_printf_token = {PARS_PRINTF_TOKEN};
pars_res_word_t pars_assert_token = {PARS_ASSERT_TOKEN};
pars_res_word_t pars_rnd_token = {PARS_RND_TOKEN};
pars_res_word_t pars_rnd_str_token = {PARS_RND_STR_TOKEN};
pars_res_word_t pars_count_token = {PARS_COUNT_TOKEN};
pars_res_word_t pars_sum_token = {PARS_SUM_TOKEN};
pars_res_word_t pars_distinct_token = {PARS_DISTINCT_TOKEN};
pars_res_word_t pars_binary_token = {PARS_BINARY_TOKEN};
pars_res_word_t pars_blob_token = {PARS_BLOB_TOKEN};
pars_res_word_t pars_int_token = {PARS_INT_TOKEN};
pars_res_word_t pars_bigint_token = {PARS_BIGINT_TOKEN};
pars_res_word_t pars_char_token = {PARS_CHAR_TOKEN};
pars_res_word_t pars_float_token = {PARS_FLOAT_TOKEN};
pars_res_word_t pars_update_token = {PARS_UPDATE_TOKEN};
pars_res_word_t pars_asc_token = {PARS_ASC_TOKEN};
pars_res_word_t pars_desc_token = {PARS_DESC_TOKEN};
......@@ -195,24 +181,15 @@ pars_func_get_class(
case PARS_AND_TOKEN: case PARS_OR_TOKEN: case PARS_NOT_TOKEN:
return(PARS_FUNC_LOGICAL);
case PARS_COUNT_TOKEN: case PARS_SUM_TOKEN:
case PARS_COUNT_TOKEN:
return(PARS_FUNC_AGGREGATE);
case PARS_TO_CHAR_TOKEN:
case PARS_TO_NUMBER_TOKEN:
case PARS_TO_BINARY_TOKEN:
case PARS_BINARY_TO_NUMBER_TOKEN:
case PARS_SUBSTR_TOKEN:
case PARS_CONCAT_TOKEN:
case PARS_LENGTH_TOKEN:
case PARS_INSTR_TOKEN:
case PARS_SYSDATE_TOKEN:
case PARS_NOTFOUND_TOKEN:
case PARS_PRINTF_TOKEN:
case PARS_ASSERT_TOKEN:
case PARS_RND_TOKEN:
case PARS_RND_STR_TOKEN:
case PARS_REPLSTR_TOKEN:
return(PARS_FUNC_PREDEFINED);
default:
......@@ -499,7 +476,6 @@ pars_resolve_func_data_type(
arg = node->args;
switch (node->func) {
case PARS_SUM_TOKEN:
case '+': case '-': case '*': case '/':
/* Inherit the data type from the first argument (which must
not be the SQL null literal whose type is DATA_ERROR) */
......@@ -516,13 +492,6 @@ pars_resolve_func_data_type(
dtype_set(que_node_get_data_type(node), DATA_INT, 0, 4);
break;
case PARS_TO_CHAR_TOKEN:
case PARS_RND_STR_TOKEN:
ut_a(dtype_get_mtype(que_node_get_data_type(arg)) == DATA_INT);
dtype_set(que_node_get_data_type(node), DATA_VARCHAR,
DATA_ENGLISH, 0);
break;
case PARS_TO_BINARY_TOKEN:
if (dtype_get_mtype(que_node_get_data_type(arg)) == DATA_INT) {
dtype_set(que_node_get_data_type(node), DATA_VARCHAR,
......@@ -533,19 +502,12 @@ pars_resolve_func_data_type(
}
break;
case PARS_TO_NUMBER_TOKEN:
case PARS_BINARY_TO_NUMBER_TOKEN:
case PARS_LENGTH_TOKEN:
case PARS_INSTR_TOKEN:
ut_a(pars_is_string_type(que_node_get_data_type(arg)->mtype));
dtype_set(que_node_get_data_type(node), DATA_INT, 0, 4);
break;
case PARS_SYSDATE_TOKEN:
ut_a(arg == NULL);
dtype_set(que_node_get_data_type(node), DATA_INT, 0, 4);
break;
case PARS_SUBSTR_TOKEN:
case PARS_CONCAT_TOKEN:
ut_a(pars_is_string_type(que_node_get_data_type(arg)->mtype));
......@@ -566,11 +528,6 @@ pars_resolve_func_data_type(
dtype_set(que_node_get_data_type(node), DATA_INT, 0, 4);
break;
case PARS_RND_TOKEN:
ut_a(dtype_get_mtype(que_node_get_data_type(arg)) == DATA_INT);
dtype_set(que_node_get_data_type(node), DATA_INT, 0, 4);
break;
case PARS_LIKE_TOKEN_EXACT:
case PARS_LIKE_TOKEN_PREFIX:
case PARS_LIKE_TOKEN_SUFFIX:
......@@ -1355,9 +1312,7 @@ pars_set_dfield_type(
pars_res_word_t* type, /*!< in: pointer to a type
token */
ulint len, /*!< in: length, or 0 */
ibool is_unsigned, /*!< in: if TRUE, column is
UNSIGNED. */
ibool is_not_null) /*!< in: if TRUE, column is
bool is_not_null) /*!< in: whether the column is
NOT NULL. */
{
ulint flags = 0;
......@@ -1366,10 +1321,6 @@ pars_set_dfield_type(
flags |= DATA_NOT_NULL;
}
if (is_unsigned) {
flags |= DATA_UNSIGNED;
}
if (type == &pars_bigint_token) {
ut_a(len == 0);
......@@ -1384,16 +1335,6 @@ pars_set_dfield_type(
dtype_set(dfield_get_type(dfield), DATA_VARCHAR,
DATA_ENGLISH | flags, len);
} else if (type == &pars_binary_token) {
ut_a(len != 0);
dtype_set(dfield_get_type(dfield), DATA_FIXBINARY,
DATA_BINARY_TYPE | flags, len);
} else if (type == &pars_blob_token) {
ut_a(len == 0);
dtype_set(dfield_get_type(dfield), DATA_BLOB,
DATA_BINARY_TYPE | flags, 0);
} else {
ut_error;
}
......@@ -1414,28 +1355,7 @@ pars_variable_declaration(
node->param_type = PARS_NOT_PARAM;
pars_set_dfield_type(que_node_get_val(node), type, 0, FALSE, FALSE);
return(node);
}
/*********************************************************************//**
Parses a procedure parameter declaration.
@return own: symbol table node of type SYM_VAR */
sym_node_t*
pars_parameter_declaration(
/*=======================*/
sym_node_t* node, /*!< in: symbol table node allocated for the
id of the parameter */
ulint param_type,
/*!< in: PARS_INPUT or PARS_OUTPUT */
pars_res_word_t* type) /*!< in: pointer to a type token */
{
ut_a((param_type == PARS_INPUT) || (param_type == PARS_OUTPUT));
pars_variable_declaration(node, type);
node->param_type = param_type;
pars_set_dfield_type(que_node_get_val(node), type, 0, false);
return(node);
}
......@@ -1821,8 +1741,6 @@ pars_column_def(
pars_res_word_t* type, /*!< in: data type */
sym_node_t* len, /*!< in: length of column, or
NULL */
void* is_unsigned, /*!< in: if not NULL, column
is of type UNSIGNED. */
void* is_not_null) /*!< in: if not NULL, column
is of type NOT NULL. */
{
......@@ -1835,7 +1753,7 @@ pars_column_def(
}
pars_set_dfield_type(que_node_get_val(sym_node), type, len2,
is_unsigned != NULL, is_not_null != NULL);
is_not_null != NULL);
return(sym_node);
}
......@@ -1848,9 +1766,7 @@ pars_create_table(
/*==============*/
sym_node_t* table_sym, /*!< in: table name node in the symbol
table */
sym_node_t* column_defs, /*!< in: list of column names */
sym_node_t* compact, /* in: non-NULL if COMPACT table. */
sym_node_t* block_size) /* in: block size (can be NULL) */
sym_node_t* column_defs) /*!< in: list of column names */
{
dict_table_t* table;
sym_node_t* column;
......@@ -1858,57 +1774,11 @@ pars_create_table(
const dtype_t* dtype;
ulint n_cols;
ulint flags = 0;
ulint flags2 = 0;
if (compact != NULL) {
/* System tables currently only use the REDUNDANT row
format therefore the check for srv_file_per_table should be
safe for now. */
flags |= DICT_TF_COMPACT;
/* FIXME: Ideally this should be part of the SQL syntax
or use some other mechanism. We want to reduce dependency
on global variables. There is an inherent race here but
that has always existed around this variable. */
if (srv_file_per_table) {
flags2 |= DICT_TF2_USE_FILE_PER_TABLE;
}
}
if (block_size != NULL) {
ulint size;
dfield_t* dfield;
ulint flags2 = DICT_TF2_FTS_AUX_HEX_NAME;
dfield = que_node_get_val(block_size);
ut_a(dfield_get_len(dfield) == 4);
size = mach_read_from_4(static_cast<byte*>(
dfield_get_data(dfield)));
switch (size) {
case 0:
break;
case 1: case 2: case 4: case 8: case 16:
flags |= DICT_TF_COMPACT;
/* FTS-FIXME: needs the zip changes */
/* flags |= size << DICT_TF_COMPRESSED_SHIFT; */
break;
default:
ut_error;
}
}
/* Set the flags2 when create table or alter tables */
flags2 |= DICT_TF2_FTS_AUX_HEX_NAME;
DBUG_EXECUTE_IF("innodb_test_wrong_fts_aux_table_name",
flags2 &= ~DICT_TF2_FTS_AUX_HEX_NAME;);
n_cols = que_node_list_get_len(column_defs);
table = dict_mem_table_create(
......@@ -2001,7 +1871,6 @@ pars_procedure_definition(
/*======================*/
sym_node_t* sym_node, /*!< in: procedure id node in the symbol
table */
sym_node_t* param_list, /*!< in: parameter declaration list */
que_node_t* stat_list) /*!< in: statement list */
{
proc_node_t* node;
......@@ -2026,7 +1895,6 @@ pars_procedure_definition(
sym_node->resolved = TRUE;
node->proc_id = sym_node;
node->param_list = param_list;
node->stat_list = stat_list;
pars_set_parent_in_list(stat_list, node);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment