2017-03-23 2 views
0

나는 잘못된 송장 감지하는이 토큰이 있습니다JavaCC에 감지되지 않는 토큰

TOKEN : { 
    < #invalid : <number><client>(<mail> | <mailCom>)<wrongDoc><text><retorn> > 
} 

을 그리고 이것은 내 while 루프입니다 : 나는 텍스트를 분석 할 때

while (ok) { 

    token = app.getNextToken(); 
    switch (token.kind) { 
     case TextoConstants.client: 
      System.out.println(token.image); 
      break; 
     case TextoConstants.mailCom: 
      System.out.println(token.image); 
      break; 
     case TextoConstants.text: 
      System.out.println(token.image); 
      break; 
     case TextoConstants.invalid: 
      System.out.println("There is something wrong"); 
      break; 
    ok = token.kind != TextoConstants.EOF; 
} 

문제는 차단하면 client/(mailCom)?/text 토큰이 인쇄되지만 invalid 토큰은 인쇄되지 않습니다.

는 입력 : 문제가 있습니다 출력은 해야

Number 30003 
Client MyName,Lastname 
Mail [email protected] 
DocId 346774 
Text 
some text block here. 
END 

하지만, 대신 다른 토큰을 인쇄합니다.

감사합니다.

+0

파서가 더 잘 수행 할 수있는 렉서로 작업하려고하는 것처럼 보입니다. –

답변

1

#invalid#으로 시작하므로 실제 토큰 종류는 아닙니다. 이것은 실제로 다른 토큰을 정의하는 데 사용할 수있는 매크로입니다.