2
/*-------------------------------------------------------------------------
5
* bison grammar for the isolation test file format
7
* Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group
8
* Portions Copyright (c) 1994, Regents of the University of California
10
*-------------------------------------------------------------------------
18
#include "isolationtester.h"
21
TestSpec parseresult; /* result of parsing is left here */
26
%name-prefix="spec_yy"
33
Permutation *permutation;
41
%type <str> opt_setup opt_teardown
42
%type <ptr_list> step_list session_list permutation_list opt_permutation_list
43
%type <ptr_list> string_list
44
%type <session> session
46
%type <permutation> permutation
48
%token <str> sqlblock string
49
%token PERMUTATION SESSION SETUP STEP TEARDOWN TEST
59
parseresult.setupsql = $1;
60
parseresult.teardownsql = $2;
61
parseresult.sessions = (Session **) $3.elements;
62
parseresult.nsessions = $3.nelements;
63
parseresult.permutations = (Permutation **) $4.elements;
64
parseresult.npermutations = $4.nelements;
69
/* EMPTY */ { $$ = NULL; }
70
| SETUP sqlblock { $$ = $2; }
74
/* EMPTY */ { $$ = NULL; }
75
| TEARDOWN sqlblock { $$ = $2; }
81
$$.elements = realloc($1.elements,
82
($1.nelements + 1) * sizeof(void *));
83
$$.elements[$1.nelements] = $2;
84
$$.nelements = $1.nelements + 1;
89
$$.elements = malloc(sizeof(void *));
95
SESSION string opt_setup step_list opt_teardown
97
$$ = malloc(sizeof(Session));
100
$$->steps = (Step **) $4.elements;
101
$$->nsteps = $4.nelements;
102
$$->teardownsql = $5;
109
$$.elements = realloc($1.elements,
110
($1.nelements + 1) * sizeof(void *));
111
$$.elements[$1.nelements] = $2;
112
$$.nelements = $1.nelements + 1;
117
$$.elements = malloc(sizeof(void *));
126
$$ = malloc(sizeof(Step));
133
opt_permutation_list:
145
permutation_list permutation
147
$$.elements = realloc($1.elements,
148
($1.nelements + 1) * sizeof(void *));
149
$$.elements[$1.nelements] = $2;
150
$$.nelements = $1.nelements + 1;
155
$$.elements = malloc(sizeof(void *));
162
PERMUTATION string_list
164
$$ = malloc(sizeof(Permutation));
165
$$->stepnames = (char **) $2.elements;
166
$$->nsteps = $2.nelements;
173
$$.elements = realloc($1.elements,
174
($1.nelements + 1) * sizeof(void *));
175
$$.elements[$1.nelements] = $2;
176
$$.nelements = $1.nelements + 1;
181
$$.elements = malloc(sizeof(void *));
188
#include "specscanner.c"