ANTLR,如何在ANTLR中转换BNF、EBNF数据?
我必须生成 CSV 数据的解析器。不知何故,我设法为 CSV 数据编写 BNF、EBNF,但我不知道如何将其转换为 ANTLR 语法(这是一个解析器生成器)。例如,在 EBNF 中我们写:
[{header entry}newline]newline
但是当我在 ANTLR 中写这个来生成解析器时,它会给出错误并且不带括号。我不是 ANTLR 专家,有人可以帮忙吗?
I have to generate parser of CSV data. Somehow I managed to write BNF, EBNF for CSV data but I don't know how to convert this into an ANTLR grammar (which is a parser generator). For example, in EBNF we write:
[{header entry}newline]newline
but when I write this in ANTLR to generate a parser, it's giving an error and not taking brackets. I am not expert in ANTLR can anyone help?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在我知道的大多数语言中,已经存在一个不错的第三方 CSV 解析器。因此,您很可能正在重新发明轮子。
ANTLR 中的等效项如下所示:
换句话说:
请注意,您可以使用括号对规则进行分组(子规则就是它们的名称):
匹配:
ab
,abb
,abbb
,...
, while:匹配:
ab
,abab
,ababab
,...
In most languages I know, there already exists a decent 3rd party CSV parser. So, chances are that you're reinventing the wheel.
The equivalent in ANTLR would look like this:
In other words:
Note that you can group rules by using parenthesis (sub-rules is what they're called):
matches:
ab
,abb
,abbb
,...
, while:matches:
ab
,abab
,ababab
,...