2017-01-06 2 views
1
나는이

백 슬래시 토큰 JavaCC에 문자

Abc \(Def\) Gh (Ij; Kl); Mno (Pqr)

같은 문자 스트림 JavaCC 파서를 쓰는 사람이

  1. ABC 방송 \ (데프 \)처럼 그것을 tokenized를 얻어야한다

    Gh를 탈출

  2. LPAREN
  3. ij
  4. SEMICOLON
  5. Kl기를
  6. RPAREN
  7. SEMICOLON
  8. MNO
  9. LPAREN
  10. PQR
  11. RPAREN

현재 토큰 정의

TOKEN: 
{ 
    < WORDCHAR : (~[";", "(", ")"])+ > 
    | <LPAREN: "("> 
    | <RPAREN: ")"> 
    | <SEMICOLON: ";"> 
} 
이다,

백 슬래시가없는 괄호는 포함하지 않고 백 슬래시를 포함하도록 WORDCHAR 토큰을 어떻게 변경해야합니까?

답변

0
TOKEN: 
{ 
    < WORDCHAR : (~[";", "(", ")"] | "\\(" | "\\)")+ > 
    | <LPAREN: "("> 
    | <RPAREN: ")"> 
    | <SEMICOLON: ";"> 
} 
+0

'| "\\ ("| "\\)"'WORDCHAR 토큰 정의가 트릭을 수행했습니다. – haba713

+0

원본 포스터의 질문에는 아무런 문제가 없습니다. 그리고이 대답에는 아무런 문제가 없습니다. 문제는 "백 슬래시가 이스케이프 처리 된 괄호를 포함하도록 WORDCHAR 토큰을 변경해야하지만 백 슬래시가없는 괄호는 어떻게 변경해야합니까?" 이 답은 그 질문에 정확하게 대답합니다. OP가 왜 코드가 작동하지 않는지 묻는다면 다른 문제가 될 것입니다. 원본이 작동하지 않는 이유는 분명합니다. 백 슬래시는 언급하지 않았습니다. 왜 응답 코드가 작동하는지 알아 내려면 누구나 문서를 읽을 수 있습니다. –