Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
P
postgres-lambda-diff
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Jakob Huber
postgres-lambda-diff
Commits
53c15ced
Commit
53c15ced
authored
22 years ago
by
Michael Meskes
Browse files
Options
Downloads
Patches
Plain Diff
Just intermediate results for backup reasons.
parent
5f5da0a6
No related branches found
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
src/interfaces/ecpg/preproc/pgc.l
+11
-2
11 additions, 2 deletions
src/interfaces/ecpg/preproc/pgc.l
src/interfaces/ecpg/preproc/preproc.y
+106
-14
106 additions, 14 deletions
src/interfaces/ecpg/preproc/preproc.y
with
117 additions
and
16 deletions
src/interfaces/ecpg/preproc/pgc.l
+
11
−
2
View file @
53c15ced
...
@@ -12,7 +12,7 @@
...
@@ -12,7 +12,7 @@
*
*
*
*
* IDENTIFICATION
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/pgc.l,v 1.10
2
2003/02/13
13:11:52
meskes Exp $
* $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/pgc.l,v 1.10
3
2003/02/13
20:37:28
meskes Exp $
*
*
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*/
*/
...
@@ -831,7 +831,16 @@ cppline {space}*#(.*\\{space})*.*
...
@@ -831,7 +831,16 @@ cppline {space}*#(.*\\{space})*.*
i > 0 && isspace((unsigned char) yytext[i]);
i > 0 && isspace((unsigned char) yytext[i]);
i-- )
i-- )
{}
{}
yytext[i+1] = '\0';
/* Remove trailing '"' if it exists */
if (yytext[i] == '"')
yytext[i] = '\0';
else
yytext[i+1] = '\0';
/* also remove starting '"' */
if (yytext[0] == '"')
memmove(yytext, yytext+1, strlen(yytext));
yyin = NULL;
yyin = NULL;
for (ip = include_paths; yyin == NULL && ip != NULL; ip = ip->next)
for (ip = include_paths; yyin == NULL && ip != NULL; ip = ip->next)
...
...
This diff is collapsed.
Click to expand it.
src/interfaces/ecpg/preproc/preproc.y
+
106
−
14
View file @
53c15ced
/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/Attic/preproc.y,v 1.20
6
2003/0
1/21 20:01:12
meskes Exp $ */
/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/Attic/preproc.y,v 1.20
7
2003/0
2/13 20:37:28
meskes Exp $ */
/* Copyright comment */
/* Copyright comment */
%{
%{
...
@@ -376,7 +376,7 @@ make_name(void)
...
@@ -376,7 +376,7 @@ make_name(void)
%type <str> storage_clause opt_initializer c_anything
%type <str> storage_clause opt_initializer c_anything
%type <str> variable_list variable c_thing c_term
%type <str> variable_list variable c_thing c_term
%type <str> opt_pointer ECPGDisconnect dis_name storage_modifier
%type <str> opt_pointer ECPGDisconnect dis_name storage_modifier
%type <str>
stmt
ECPGRelease execstring server_name
%type <str> ECPGRelease execstring server_name
ECPGVarDeclaration
%type <str> connection_object opt_server opt_port c_stuff c_stuff_item
%type <str> connection_object opt_server opt_port c_stuff c_stuff_item
%type <str> user_name opt_user char_variable ora_user ident opt_reference
%type <str> user_name opt_user char_variable ora_user ident opt_reference
%type <str> var_type_declarations quoted_ident_stringvar
%type <str> var_type_declarations quoted_ident_stringvar
...
@@ -385,13 +385,13 @@ make_name(void)
...
@@ -385,13 +385,13 @@ make_name(void)
%type <str> enum_type civar civarind ECPGCursorStmt ECPGDeallocate
%type <str> enum_type civar civarind ECPGCursorStmt ECPGDeallocate
%type <str> ECPGFree ECPGDeclare ECPGVar opt_at enum_definition
%type <str> ECPGFree ECPGDeclare ECPGVar opt_at enum_definition
%type <str> struct_type s_struct vt_declarations variable_declarations
%type <str> struct_type s_struct vt_declarations variable_declarations
%type <str> var_declaration type_declaration
%type <str> var_declaration type_declaration
single_vt_declaration
%type <str> s_union union_type ECPGSetAutocommit on_off
%type <str> s_union union_type ECPGSetAutocommit on_off
%type <str> ECPGAllocateDescr ECPGDeallocateDescr symbol opt_symbol
%type <str> ECPGAllocateDescr ECPGDeallocateDescr symbol opt_symbol
%type <str> ECPGGetDescriptorHeader ECPGColLabel
%type <str> ECPGGetDescriptorHeader ECPGColLabel
single_var_declaration
%type <str> reserved_keyword unreserved_keyword
%type <str> reserved_keyword unreserved_keyword
%type <str> col_name_keyword func_name_keyword
%type <str> col_name_keyword func_name_keyword
%type <str> ECPGTypeName variablelist
%type <str> ECPGTypeName variablelist
ECPGColLabelCommon
%type <descriptor> ECPGGetDescriptor
%type <descriptor> ECPGGetDescriptor
...
@@ -399,7 +399,7 @@ make_name(void)
...
@@ -399,7 +399,7 @@ make_name(void)
%type <dtype_enum> descriptor_item desc_header_item
%type <dtype_enum> descriptor_item desc_header_item
%type <type> type
%type <type> type
common_type single_vt_type
%type <action> action
%type <action> action
...
@@ -652,6 +652,12 @@ stmt: AlterDatabaseSetStmt { output_statement($1, 0, connection); }
...
@@ -652,6 +652,12 @@ stmt: AlterDatabaseSetStmt { output_statement($1, 0, connection); }
output_simple_statement($1);
output_simple_statement($1);
}
}
| ECPGVarDeclaration
{
fprintf(yyout, "%s", $1);
free($1);
output_line_number();
}
| ECPGWhenever
| ECPGWhenever
{
{
if (connection)
if (connection)
...
@@ -4125,8 +4131,89 @@ ECPGDeallocate: DEALLOCATE PREPARE ident
...
@@ -4125,8 +4131,89 @@ ECPGDeallocate: DEALLOCATE PREPARE ident
{ $$ = cat_str(2, make_str("ECPGdeallocate(__LINE__, \""), $2, make_str("\");")); }
{ $$ = cat_str(2, make_str("ECPGdeallocate(__LINE__, \""), $2, make_str("\");")); }
;
;
/*
* variable decalartion outside exec sql declare block
*/
ECPGVarDeclaration: single_vt_declaration;
single_vt_declaration: type_declaration { $$ = $1; }
| single_var_declaration { $$ = $1; }
;
single_var_declaration: storage_clause storage_modifier
{
actual_storage[struct_level] = cat2_str(mm_strdup($1), mm_strdup($2));
actual_startline[struct_level] = hashline_number();
}
single_vt_type
{
actual_type[struct_level].type_enum = $4.type_enum;
actual_type[struct_level].type_dimension = $4.type_dimension;
actual_type[struct_level].type_index = $4.type_index;
actual_type[struct_level].type_sizeof = $4.type_sizeof;
/* we do not need the string "varchar" for output */
/* so replace it with an empty string */
if ($4.type_enum == ECPGt_varchar)
{
free($4.type_str);
$4.type_str=EMPTY;
}
}
variable_list
{
$$ = cat_str(6, actual_startline[struct_level], $1, $2, $4.type_str, $6, make_str(";\n"));
}
;
single_vt_type: common_type
| ECPGColLabelCommon
{
/*
* Check for type names that the SQL grammar treats as
* unreserved keywords
*/
if (strcmp($1, "varchar") == 0)
{
$$.type_enum = ECPGt_varchar;
$$.type_str = make_str("varchar");
$$.type_dimension = -1;
$$.type_index = -1;
$$.type_sizeof = NULL;
}
else if (strcmp($1, "float") == 0)
{
$$.type_enum = ECPGt_float;
$$.type_str = make_str("float");
$$.type_dimension = -1;
$$.type_index = -1;
$$.type_sizeof = NULL;
}
else if (strcmp($1, "double") == 0)
{
$$.type_enum = ECPGt_double;
$$.type_str = make_str("double");
$$.type_dimension = -1;
$$.type_index = -1;
$$.type_sizeof = NULL;
}
else
{
/* this is for typedef'ed types */
struct typedefs *this = get_typedef($1);
$$.type_str = (this->type->type_enum == ECPGt_varchar) ? EMPTY : mm_strdup(this->name);
$$.type_enum = this->type->type_enum;
$$.type_dimension = this->type->type_dimension;
$$.type_index = this->type->type_index;
$$.type_sizeof = this->type->type_sizeof;
struct_member_list[struct_level] = ECPGstruct_member_dup(this->struct_member_list);
}
}
;
/*
/*
* variable declaration inside
the
exec sql declare block
* variable declaration inside exec sql declare block
*/
*/
ECPGDeclaration: sql_startdeclare
ECPGDeclaration: sql_startdeclare
{ fputs("/* exec sql begin declare section */", yyout); }
{ fputs("/* exec sql begin declare section */", yyout); }
...
@@ -4256,7 +4343,7 @@ storage_modifier : S_CONST { $$ = make_str("const"); }
...
@@ -4256,7 +4343,7 @@ storage_modifier : S_CONST { $$ = make_str("const"); }
| /*EMPTY*/ { $$ = EMPTY; }
| /*EMPTY*/ { $$ = EMPTY; }
;
;
type: simple_type
common_
type: simple_type
{
{
$$.type_enum = $1;
$$.type_enum = $1;
$$.type_str = mm_strdup(ECPGtype_name($1));
$$.type_str = mm_strdup(ECPGtype_name($1));
...
@@ -4288,6 +4375,9 @@ type: simple_type
...
@@ -4288,6 +4375,9 @@ type: simple_type
$$.type_index = -1;
$$.type_index = -1;
$$.type_sizeof = NULL;
$$.type_sizeof = NULL;
}
}
;
type: common_type
| ECPGColLabel
| ECPGColLabel
{
{
/*
/*
...
@@ -5108,15 +5198,17 @@ ColLabel: ECPGColLabel { $$ = $1; }
...
@@ -5108,15 +5198,17 @@ ColLabel: ECPGColLabel { $$ = $1; }
| UNION { $$ = make_str("union"); }
| UNION { $$ = make_str("union"); }
;
;
ECPGColLabel: ident { $$ = $1; }
ECPGColLabelCommon: ident { $$ = $1; }
| col_name_keyword { $$ = $1; }
| func_name_keyword { $$ = $1; }
;
ECPGColLabel: ECPGColLabelCommon { $$ = $1; }
| unreserved_keyword { $$ = $1; }
| unreserved_keyword { $$ = $1; }
| col_name_keyword { $$ = $1; }
| reserved_keyword { $$ = $1; }
| func_name_keyword { $$ = $1; }
| ECPGKeywords { $$ = $1; }
| reserved_keyword { $$ = $1; }
| ECPGKeywords { $$ = $1; }
;
;
/*
/*
* Keyword classification lists. Generally, every keyword present in
* Keyword classification lists. Generally, every keyword present in
* the Postgres grammar should appear in exactly one of these lists.
* the Postgres grammar should appear in exactly one of these lists.
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment