PostgreSQL Source Code: src/tools/pg_bsd_indent/parse.c Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32#if 0

33#ifndef lint

34static char sccsid[] = "@(#)parse.c 8.1 (Berkeley) 6/6/93";

35#endif

36#endif

37

38#include "c.h"

39

41#include <stdio.h>

45

46static void reduce(void);

47

48void

49parse(int tk)

50{

51 int i;

52

53#ifdef debug

55#endif

56

58

60

61 reduce();

62 }

63

64

65 switch (tk) {

66

67

68 case decl:

70

72

73 break_comma = true;

74

77

78 if (ps.ljust_decl) {

79

81 for (i = ps.tos - 1; i > 0; --i)

83 ++ps.ind_level;

84

86 }

87 }

88 break;

89

90 case ifstmt:

92

93

94

95

96

98

99

100 case dolit:

101 case forstmt:

104 ++ps.i_l_follow;

106 break;

107

108 case lbrace:

109 break_comma = false;

112 ++ps.i_l_follow;

113

114 else {

116

117

118

120

121

122

125

126

127

128 }

129 }

130

134

136 break;

137

138 case whilestmt:

140

144 }

145 else {

150 }

151

152 break;

153

154 case elselit:

155

157 diag2(1, "Unmatched 'else'");

158 else {

160

162

164

166 }

167 break;

168

169 case rbrace:

170

174 }

175 else

176 diag2(1, "Statement nesting error");

177 break;

178

179 case swstmt:

182

185

186

188

190 break;

191

192 case semicolon:

193 break_comma = false;

194

197 break;

198

199 default:

200 diag2(1, "Unknown code to parser");

201 return;

202

203

204 }

205

207 errx(1, "Parser stack overflow");

208

209 reduce();

210

211#ifdef debug

212 for (i = 1; i <= ps.tos; ++i)

215#endif

216

217 return;

218}

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

244

245

246

247

248

249

250

251

252

253

254

255

256

257

258

259static void

261{

262 int i;

263

264 for (;;) {

265

266

268

271

274

276 break;

277

278 case dolit:

281 break;

282

284

287 (

289 &&

291 &&

293 );

294 --i);

296

297

298

299

300

301 break;

302

304

306

307 case decl:

309

311

313

316 break;

317

318 default:

319 return;

320

321 }

322 break;

323

324 case whilestmt:

326

328 break;

329 }

330 else

331 return;

332

333 default:

334 return;

335

336 }

337 }

338}

void errx(int eval, const char *fmt,...)

void diag2(int, const char *)