1 /*-------------------------------------------------------------------------
2  *
3  * keywords.c
4  *	  lexical token lookup for key words in PostgreSQL
5  *
6  *
7  * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
8  * Portions Copyright (c) 1994, Regents of the University of California
9  *
10  *
11  * IDENTIFICATION
12  *	  src/interfaces/ecpg/preproc/keywords.c
13  *
14  *-------------------------------------------------------------------------
15  */
16 #include "postgres_fe.h"
17 
18 /*
19  * This is much trickier than it looks.  We are #include'ing kwlist.h
20  * but the "value" numbers that go into the table are from preproc.h
21  * not the backend's gram.h.  Therefore this table will recognize all
22  * keywords known to the backend, but will supply the token numbers used
23  * by ecpg's grammar, which is what we need.  The ecpg grammar must
24  * define all the same token names the backend does, else we'll get
25  * undefined-symbol failures in this compile.
26  */
27 
28 #include "common/keywords.h"
29 
30 #include "extern.h"
31 #include "preproc.h"
32 
33 
34 #define PG_KEYWORD(a,b,c) {a,b,c},
35 
36 const ScanKeyword SQLScanKeywords[] = {
37 #include "parser/kwlist.h"
38 };
39 
40 const int	NumSQLScanKeywords = lengthof(SQLScanKeywords);
41