0

我在哪里可以找到所有 PostgreSQL 关键字/标记的词法定义,例如 GROUP_P?

4

1 回答 1

2

GROUP_P不是关键字,它是 C 编译器上下文中的符号,并且在 C 源代码之外没有词法意义。

在此声明中parser/kwlist.h

PG_KEYWORD("group", GROUP_P, RESERVED_KEYWORD)

第一个参数“group”是关键字,第二个参数 GROUP_P 通常是枚举字段或 #define(取决于包含器)。

头文件src/include/parser/keywords.h提供了一个结构体类型ScanKeyword,可以直接映射到 PG_KEYWORD 宏,逐个字段:

typedef struct ScanKeyword
{
    const char *name;           /* in lower case */
    int16       value;          /* grammar's token code */
    int16       category;       /* see codes above */
} ScanKeyword;

一个具体的使用例子,看看ECPG是怎么做的 src/interfaces/ecpg/preproc/keywords.c

于 2012-05-26T16:39:43.463 回答