我正在尝试使用从 github (v 1.1) 编译的 preon 来解析从嵌入式 C++ 应用程序获得的消息。我在我的项目中包含了 antlr 3.3-complete 版本。我将以下类定义为网络消息的标头:
public class Header {
@BoundNumber(byteOrder = org.codehaus.preon.buffer.ByteOrder.BigEndian)
public MessageType MsgType;
@BoundNumber(byteOrder = org.codehaus.preon.buffer.ByteOrder.BigEndian)
public int MsgNo;
@BoundNumber(byteOrder = org.codehaus.preon.buffer.ByteOrder.BigEndian)
public int RspNo;
@BoundNumber(byteOrder = org.codehaus.preon.buffer.ByteOrder.BigEndian)
public int Length;
}
MessageType 枚举如下:
public enum MessageType{
@BoundEnumOption(0x0000) Dummy1,
@BoundEnumOption(0x0001) Dummy2
}
我尝试将接收到的网络缓冲区转换如下:
Codec<Header> headerCodec = Codecs.create(Header.class);
Header h = Codecs.decode(headerCodec, headerData);
System.out.println(h);
我收到以下 antlr 错误。我的定义或包含的软件包有问题吗?
第 1:0 行在输入“< EOF >”处没有可行的替代方案
谢谢