用ANTLR分析简单的十六进制格式字符串
?
用ANTLR分析简单的十六进制格式字符串
?
一、问题:
假设现在有一个16进制格式的文本字符串,如下:
?
?
??
三、测试结果:
用ANTLRWorks测试,输入数据设置为
?
?
0x00, 0x06, 0x6E, 0x61, 0x6e, 0x61, 0x6d, 0x69,0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02,
?
开始规则(Start Rule)设置为?packets
输出为:
?
?
username : nanamix : 1
y : 2
?
?
四、总结:
相比起其它语言(诸如C的struct和Erlang的binary数据类型匹配),
用ANTLR的BNF语法处理二进制的解码会比较麻烦(需要先转换为文本型的字符串),
而且灵活性很小(虽然可以用谓词分析变长的字符串,但处理更复杂的结构会很困难)。
不过个人觉得这个问题对于了解ANTLR的语法和ANTLRWorks的测试环境很有帮助。
?