Postgres Variant Grammar的工作单

时间:2014-11-19 18:51:19

标签: postgresql antlr

我必须为名为AWS redshift的postgres(PG)派生方言单元测试脚本,该方言具有一些与PG不向后兼容的功能。我使用正则表达式从lexing out the unwanted things通过thread单元测试PG上的红移SQL代码。目前,注册复杂性只是易于管理(DISTKEY SORTKEY,DISTSTYLE和ENCODE)。根据我的代码审查人员对正则表达式的复杂性及其脆弱性的要求,我开始研究其他可行的方法,并偶然发现使用ANTLR。我的想法是生成并使用词法分析器而不是我的正则表达式。以下是您在本主题末尾阅读示例计划时可以帮助我的一些常见问题。

  • 我在下面概述的计划是否有更简单的方法?作为一个妥协妥协,我现在应该坚持我的正则表达计划吗?
  • 如果对词法分析器使用ANTLR确实可行,请继续阅读并帮助我回答下面的一些问题。

我在这个ANTLR PG git project中看了一个简单的例子来获取灵感,但PG是一个大野兽。所以相反,我正在尝试做一些努力估计;如果他们正在估计采取这种方式的“砰砰作响”,这项练习对人们来说可能是有价值的。

我在下面有一个代表工作单的示例计划(假设我使用ANTLR作为语言不可知):

  1. 为PG借用一些ANTLR语法。我遇到了这个{{3}}。我现在开始安装和运行它。该项目中的代码是否足以满足我的目的?那段代码丢失了什么? ....

  2. 添加Redshift特定字词。这不应该太难

  3. 生成所有访客和听众

  4. 实施访问者(?)

    我可以做一些简单的事情来返回访问者中解析的标记。因为我只是

    想要了解Redshift的具体内容吗?

  5. Lex在侦听器中输出红移(当遇到遇到红移的特定令牌时,这只是返回类似“”的字符串吗?)

  6. 针对某些示例SQL代码运行以测试它会泄漏红色内容,我可以在PG实例上测试生成的红移代码。

0 个答案:

没有答案