【发布时间】:2012-08-03 10:40:06
【问题描述】:
在过去的几周里,我一直潜入将 SQL 语句解析为可管理的东西的美丽世界,结果发现我可能需要一个完整的词法分析器/解析器来正确处理所有允许的标记/格式做同样的事情。
我最感兴趣的是 create table 语句,但是一个完整的通用解析器会更好,因为网络上似乎还没有这个。
我不是计算机专业的毕业生,而是一个自学成才的人,所以这对我来说是一个相当大的学习曲线。 我采取的步骤是:
- 使用正则表达式解析 sql
- 失败了,修复正则表达式
- 更糟糕的是,挖掘 SQLite 源代码,发现它使用了 Lemon 解析器,这是一个特定于 SQLite 的项目
- 尝试让 Lemon + PHP 解析器工作,我认为我可以手动将其转换为 js。 (失败)
- 尝试让 Emscripten 使用 C 语言处理 Lemon 生成的解析器(依赖地狱,失败。)
- 搜索其他解析器/词法分析器生成器,注意 ANTLR3
- 尝试通过更改输出格式和回溯错误将Sqljet language file 转换为 javascript。
我一直在使用出色的 AntlrWorks GUI 来尝试找出问题所在,但我不确定是 Javascript 堆栈、Java 堆栈或 .g 格式是旧的v2 的格式。
是否有任何具有解析器/词法分析器生成器经验的人可以指出正确的方向来生成正确的可重用 Sqlite 解析器? 我似乎能够在 javascript 中为 mysql 和 pl/sql 生成解析器。这是否意味着 sqlite .g 格式需要更新?
【问题讨论】:
标签: javascript sqlite parsing antlr3 lemon