2014-03-04 1 views
0

나는 임베디드 C++ 응용 프로그램에서 얻은 메시지를 구문 분석하기 위해 github (v 1.1)에서 컴파일 한 preon을 사용하려고합니다. 나는 내 프로젝트에 antlr 3.3-complete 버전을 포함시켰다.Preon에서 열거 형은 어떻게 정의됩니까?

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; 
    } 

메세지 유형 열거는 다음과 같다 :

Codec<Header> headerCodec = Codecs.create(Header.class); 
Header h = Codecs.decode(headerCodec, headerData); 
System.out.println(h); 

을 :

public enum MessageType{ 
@BoundEnumOption(0x0000) Dummy1, 
@BoundEnumOption(0x0001) Dummy2 
} 

나는 다음과 같은 수신 된 네트워크 버퍼를 캐스팅해야 할 내가 네트워크 메시지의 헤더로 다음과 같은 클래스를 정의 다음 antlr 오류가 발생합니다. 내 정의 또는 포함 된 패키지에 문제가 있습니까?

라인 1 : 0 입력에서 어떤 대안 '< EOF>'

감사

답변

0

가 나는 문제를 발견했다. BoundNumber 주석의 크기 값을 명시 적으로 다음과 같이 열거 형으로 표시해야합니다.

@BoundNumber(ByteOrder.BigEndian, size="32") 
public MessageType MsgType; 
관련 문제