@@ -15,25 +15,35 @@ letter[A-Za-z_]
15
15
digit[0-9]
16
16
length{digit}+
17
17
symbol{letter}({letter}|{digit})*
18
+ label ({letter}|{digit})*
18
19
string'[^']*'
19
20
20
- exec[eE][xX][eE][cC]
21
- execute[eE][xX][eE][cC][uU][tT][eE]
22
- sql[sS][qQ][lL]
23
- varchar[vV][aA][rR][cC][hH][aA][rR]
24
- varchar2[vV][aA][rR][cC][hH][aA][rR]2
25
- into[iI][nN][tT][oO]
26
21
begin[bB][eE][gG][iI][nN]
27
- end[eE][nN][dD]
22
+ break [bB][rR][eE][aA][kK]
23
+ commit [cC][oO][mM][mM][iI][tT]
24
+ connect [cC][oO][nN][nN][eE][cC][tT]
25
+ continue [cC][oO][nN][tT][iI][nN][uU][eE]
28
26
declare [dD][eE][cC][lL][aA][rR][eE]
29
- section[sS][eE][cC][tT][iI][oO][nN]
27
+ do [dD][oO]
28
+ end[eE][nN][dD]
29
+ exec[eE][xX][eE][cC]
30
+ execute[eE][xX][eE][cC][uU][tT][eE]
31
+ found[fF][oO][uU][nN][dD]
32
+ goto [gG][oO][tT][oO]
33
+ immediate [iI][mM][mM][eE][dD][iI][aA][tT][eE]
30
34
include [iI][nN][cC][lL][uU][dD][eE]
31
- connect [cC][oO][nN][nN][eE][cC][tT]
35
+ into[iI][nN][tT][oO]
36
+ not[nN][oO][tT]
32
37
open[oO][pP][eE][nN]
33
- commit [cC][oO][mM][mM][iI][tT]
34
- immediate [iI][mM][mM][eE][dD][iI][aA][tT][eE]
35
38
release [rR][eE][lL][eE][aA][sS][eE]
36
39
rollback [rR][oO][lL][lL][bB][aA][cC][kK]
40
+ section[sS][eE][cC][tT][iI][oO][nN]
41
+ sql[sS][qQ][lL]
42
+ sqlerror [sS][qQ][lL][eE][rR][rR][oO][rR]
43
+ sqlprint [sS][qQ][lL][pP][rR][iI][nN][tT]
44
+ varchar[vV][aA][rR][cC][hH][aA][rR]
45
+ varchar2[vV][aA][rR][cC][hH][aA][rR]2
46
+ whenever [wW][hH][eE][nN][eE][vV][eE][rR]
37
47
work [wW][oO][rR][kK]
38
48
%%
39
49
<C>{exec}{ws}{sql}{ BEGIN SQL;dbg (SQL_START);return SQL_START; }
@@ -51,8 +61,15 @@ work [wW][oO][rR][kK]
51
61
<SQL>{release}{dbg (SQL_RELEASE);return SQL_RELEASE; }
52
62
<SQL>{work}{dbg (SQL_WORK);return SQL_WORK; }
53
63
<SQL>{rollback}{dbg (SQL_ROLLBACK);return SQL_ROLLBACK; }
54
-
64
+ <SQL>{whenever}{dbg (SQL_WHENEVER);return SQL_WHENEVER; }
65
+ <SQL>{sqlerror}{dbg (SQL_SQLERROR);return SQL_SQLERROR; }
66
+ <SQL>{sqlprint}{dbg (SQL_SQLPRINT);return SQL_SQLPRINT; }
67
+ <SQL>{not }{ws}{found}{dbg (SQL_NOT_FOUND);return SQL_NOT_FOUND; }
68
+ <SQL>{break }{dbg (SQL_BREAK);return SQL_BREAK; }
69
+ <SQL>{continue }{dbg (SQL_CONTINUE);return SQL_CONTINUE; }
55
70
<SQL>{into}{dbg (SQL_INTO);return SQL_INTO; }
71
+ <SQL>{goto }{dbg (SQL_GOTO);return SQL_GOTO; }
72
+ <SQL>{do }{dbg (SQL_DO);return SQL_DO; }
56
73
57
74
{length}{dbg (S_LENGTH);return S_LENGTH; }
58
75
@@ -67,6 +84,7 @@ double{ dbg(S_DOUBLE); return S_DOUBLE; }
67
84
bool {dbg (S_BOOL);return S_BOOL; }
68
85
69
86
static {dbg (S_STATIC);return S_STATIC; }
87
+ signed {dbg (S_SIGNED);return S_SIGNED; }
70
88
extern {dbg (S_EXTERN);return S_EXTERN; }
71
89
auto {dbg (S_AUTO);return S_AUTO; }
72
90
const {dbg (S_CONST);return S_CONST; }
@@ -77,6 +95,7 @@ struct{ dbg(S_STRUCT); return S_STRUCT; }
77
95
{string}{dbg (SQL_STRING);return SQL_STRING; }
78
96
<SQL>{ws};
79
97
{symbol}{dbg (S_SYMBOL);return S_SYMBOL; }
98
+ {label}{dbg (S_LABEL);return S_LABEL; }
80
99
81
100
<SQL>" !<" {dbg (S_SYMBOL);return S_SYMBOL; }
82
101
<SQL>" !>" {dbg (S_SYMBOL);return S_SYMBOL; }
@@ -114,8 +133,10 @@ struct{ dbg(S_STRUCT); return S_STRUCT; }
114
133
" ;" {dbg (;);return ' ;' ; }
115
134
" =" {dbg (=);return ' =' ; }
116
135
" ," {dbg (komma);return ' ,' ; }
136
+ \({dbg (braceopen);return ' (' ; }
137
+ \){dbg (braceclose);return ' )' ; }
117
138
\{{dbg (blockstart);return ' {' ; }
118
- \} { dbg(blockend); return' }' ; }
139
+ \}{dbg (blockend);return ' }' ; }
119
140
\*{dbg (*);return (' *' ); }
120
141
121
142
<SQL>" :" {dbg (:);return ' :' ; }