ANTLR4和解析类型长度值格式

ANTLR4和解析类型长度值格式,antlr,antlr4,tlv,Antlr,Antlr4,Tlv,我正在尝试为遵循类型长度值约定的格式创建语法。ANTLR4能读入一个长度值,然后解析那么多字符吗?不 从你的问题(这是非常简短的,所以我可能会错过一些东西…)我猜你是在混合语法和编码规则 当您说type length value时,我觉得它像一个编码规则(如何序列化数据)。根据我的经验,这段代码是你自己写的 语法处于更高的层次:它是一段描述某事物的文本。Antlr将帮助您将此文本分解为标记,然后再分解为一棵可以导航的树。 这一步只处理文本:如果要用这种方法解决问题,您仍然需要自己处理类型、长度和

我正在尝试为遵循类型长度值约定的格式创建语法。ANTLR4能读入一个长度值,然后解析那么多字符吗?

从你的问题(这是非常简短的,所以我可能会错过一些东西…)我猜你是在混合语法和编码规则

当您说type length value时,我觉得它像一个编码规则(如何序列化数据)。根据我的经验,这段代码是你自己写的

语法处于更高的层次:它是一段描述某事物的文本。Antlr将帮助您将此文本分解为标记,然后再分解为一棵可以导航的树。 这一步只处理文本:如果要用这种方法解决问题,您仍然需要自己处理类型、长度和值

编辑:
我在谷歌上搜索了一下,发现了这个

谢谢你的富有洞察力的评论,我想这已经回答了我的问题。我希望你能提供一些后续信息。。。。具体来说,我正试图为java序列化编写一个解析器。Oracle在此处提供了类似BNF的语法:。此语法的某些部分指定字符串后跟以非null结尾的字符串的长度。ANTLR不是解析此格式的现实方法吗?这不是上下文无关的语法吗?我明白。我自己的经验是:语法和编码规则之间的区别非常明显。我不确定甲骨文文档中的单词语法是否恰当。让我看看……我坚持我的第一个答案。这不是文本,语法分析器无法处理。请参阅我对类似于yoursI的项目的编辑答案。我不完全同意@YaFred的观点:本质上,棘手的部分只是词法分析部分:而对于文本词法分析/解析,通常可以通过在空格分隔符处拆分输入文本来标记输入流,这对于二进制TLV数据来说是不容易做到的。但假设我们可以编写一个lexer,将TLV输入流拆分为
标记
长度
标记,那么解析器就能够解析这个标记序列。(但话说回来,我不是解析器专家)