How to convert MySQL yacc grammar to antlr LL(1)?(如何将 MySQL yacc 语法转换为 antlr LL(1)?)
问题描述
我正在用 ANTLR 构建一个 MySQL 语法验证器.我从 MySQL 源代码中的 sql_yacc.yy
开始,但我在转换以下语法时遇到了一些困难.我尝试了很多次,但它不起作用.有人可以帮我吗?
I am constructing a MySQL grammar validator with ANTLR. I started with the sql_yacc.yy
from the MySQL source code, but I have some difficulties converting the following grammar. I tried many times, but it doesn't work. Can anyone help me?
推荐答案
ANTLR 无法应对 left-recursion,因此没有简单的方法可以将 sql_yacc.yy
转换为 ANTLR 等效项.您可能想查看 ANTLR Wiki 中的以下资源:
ANTLR cannot cope with left-recursion, so there's no trivial way to convert sql_yacc.yy
into the ANTLR equivalent. You might want to have a look at the following resources from the ANTLR Wiki:
- 左递归移除
- MySQL 方言 (ANTLR v3) 的 SQL 语法
请注意,MySQL 语法不完整,但可能会给您一个起点.
Note that the MySQL grammar is incomplete, but might give you a starting point.
这篇关于如何将 MySQL yacc 语法转换为 antlr LL(1)?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!