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. のKI
  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がなぜコードがうまくいかないのか尋ねられたら、それは別の問題です。オリジナルがうまくいかなかった理由は完全に明白です。バックスラッシュについては言及していませんでした。なぜ回答コードが動作するのかを知るには、誰でもその文書を読むことができます。 –

関連する問題