我对解析器生成器感兴趣。但我没有理论背景。我只是在网上看了几件事。
目前我正在尝试用ANTLR
做点什么所以我的问题:
我有一种特殊格式的数据框:
我希望我的描述清楚。我的问题:
我可以用ANTLR创建这样一个解析器来读取帧的长度然后知道帧结束的时间吗?
在ANTLR中,我可以从生成的文件中加载我使用的不同标记吗?
谢谢!
答案 0 :(得分:1)
我对此并不是100%肯定,但是:
后一点我不确定 - 也许你想对此进行更多的研究。
您可能必须自己编写一个数据包“解析器”(然后必须是您的上下文相关数据包语法的解析器)
或者,你可以删除长度字段,并使用类似s表达式,JSON或xml的东西;这些将由antlr生成的东西解析。
答案 1 :(得分:1)
我认为你最好创建一个手写二进制解析器而不是使用ANTLR,因为ANTLR主要用于读取和理解文本文件而不是二进制数据。词法分析器部分专注于对文本进行标记,因此试图使其读取二进制数据反而将是一场艰苦的战斗。
听起来好像你的结构需要某种递归的方式来读取数据,尽管只需要一个树形结构然后在你读取文件时填充它就可以了。