我需要一个解析器(主要用于“选择”类型的查询)并避免从头开始的麻烦。有人知道如何为此目的使用 pgsql 的 scan.l/gram.y 吗?我也查过 pgpool,但看起来很相似。目前,如果有人可以给出指令来编译解析器(可能使用提供的 makefile)而没有错误,以便可以提供(有效?)查询并输出解析树(以任何形式),这可能会非常有帮助!
问问题
363 次
2 回答
1
您可能无法从 postgres 源 tarball 中获取任何文件并单独编译它。解析器使用内部 OOP 结构(在 C 中实现)。但是有一些可能性(不简单) - ecpg 预处理器尝试将 PostgreSQL gram 文件转换为辅助 gram 文件 - 您可以使用相同的机制。它使用一个小型实用程序 parse.pl(它是 PostgreSQL 源代码 (src/postgresql/src/interfaces/ecpg/preproc) 的一部分)
于 2013-05-13T12:38:44.687 回答
0
PostgreSQL 使用 yacc 编译语言解析器。大概您可以轻松获取 yacc 文件并创建兼容的解析器。请注意,您必须安装 flex 和 yacc 才能执行此操作。
请注意,这不是从源代码中获取 .c 文件并将其移植到您的系统中。你得到的只是解析器,而不是规划器或其他任何东西。
鉴于问题的详细程度,不可能有更多的细节。也许您可以从那里开始并在遇到困难时发布另一个问题。
于 2013-06-04T12:11:38.490 回答