2012-05-26 43 views
0

我在哪里可以找到所有PostgreSQL关键字/标记(如GROUP_P)的词汇定义?PostgreSQL + GROUP_P的词汇定义

+2

解析器目录中存在关键字[ch]文件(从不同位置符号链接)“精细手册”末尾还有一个符合性声明。 – wildplasser

+0

@wildplasser谢谢。我认为列表在'parser/kwlist.h'中,对吗?为什么一些关键字有'_P'结尾? –

+0

我没有最微不足道的想法。可能是元类型的一些命名约定。你在哪里找到它 ?你可以grep为它的源代码树。 – wildplasser

回答

2

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

在此声明从parser/kwlist.h

PG_KEYWORD("group", GROUP_P, RESERVED_KEYWORD) 

它的第一个参数“基团”,也就是该关键字时,第二参数GROUP_P通常为枚举字段或#定义(它是由所述包入) 。

头文件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