我在哪里可以找到所有 PostgreSQL 关键字/标记的词法定义,例如 GROUP_P?
问问题
68 次
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 回答