gpt4 book ai didi

Java Grammar 语法分析器(ASCII 到图形)

转载 作者:行者123 更新时间:2023-12-04 06:11:18 24 4
gpt4 key购买 nike

我正在开发一个助手来为 DBA 键入数据库命令,因为这些命令有很多参数,助手会对他们的工作有很大帮助。对于这个助手,我需要命令的语法,但数据库供应商(Oracle、DB2)不提供任何格式的信息,唯一的就是文档。

DB2 命令的一个示例是:http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/topic/com.ibm.db2.luw.admin.cmd.doc/doc/r0001933.html

出于这个原因,我试图分析语法图或铁路图( http://en.wikipedia.org/wiki/Syntax_diagram ),但我没有在 Java 中找到任何可以帮助我的东西。我想要一些重新设计(反向)工具,它采用语法的 ASCII(文本表示),并在 Java 中创建一个图形。然后,借助 Java 中的图形,助手可以提出当前键入命令的选项。

助手示例 http://www.youtube.com/watch?v=5sBoUHJupvs

如果您有关于如何使用 Java(不是生成)分析语法图的信息,我将不胜感激。

最佳答案

我见过的最接近的工具是 Grammar Recovery System通过拉尔夫·拉梅尔。它取决于铁路图作为文本字符串的可访问性。这通常不是他们被发现的方式。在 DB2 案例中您似乎很幸运,Ralf 的工作指向了正确的方向。

考虑到此类图通常仅呈现为一组像素(PLSQL 在为文档提供的 PDF 文件中是这样的),您有几组问题:从像素中识别图形实体,将它们组装成铁路图的实际表示,然后使用例如你的助手。

我认为这是一个漫长、艰难、不切实际的方法。如果你让它工作,你会发现图表在很多地方都有点错误(阅读 Ralf 的论文或找出困难的方法),因此无法用于应该产生“正确”的东西来帮助你的工具数据库管理员。

当然,您反对另一种冗长、困难、“不切实际”的方法,即阅读文档并生成匹配的语法,然后根据现实世界验证这些语法。是的,这也是一个艰难的过程,但它确实产生了有用的结果。您需要找到这样做的供应商,并将其提供给您。

ANTLR.org提供各种语法。你在那里检查过吗?

我的公司提供语法和处理它们的工具。我们为 PLSQL 做了这件事和 SQL2011 但还不是 DB2。

给定一个语法,您现在需要使用它来向您的用户提供“建议”。您的用户不会输入完整的“程序”;他们想要生成片段(例如,SELECT 语句)。现在您需要一个解析器来处理语法片段并至少说出“合法”或“不合法”。大多数人不会那样做。我们的 DMS Software Reengineering Toolkit会这样做。

为了提供建议,您需要能够遍历语法(就像您在铁路图中考虑的那样)来计算“下一步是什么”。这实际上非常困难(事实上,它大致相当于 LR/GLR 解析器生成器在构建表时所做的工作)。我们的 DMS 引擎在语法错误修复期间通过遍历其 GLR 解析表(因为该工作已经在表中进行了编码!)。这并不容易,因为它是 GLR 解析算法的一种特殊变体。使用 Earley 解析器可能会做得更好,它将所有可能的解析保留为一组选择;你可以简单地检查每一个。

但这看起来工作量很大,我想你会惊讶于你需要的机器数量。

这方面最好的作品是Harmonia ,它为代码生成增量编辑器。我们的 DMS 引擎的解析器基于该项目的早期工作,因为我们对增量方面感兴趣。

关于Java Grammar 语法分析器(ASCII 到图形),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7740444/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com