JavaCC を使用して複雑なパーサーを構築しています。ある時点で、文法内の目的のトークンまで、表示されるすべての文字をスキップしたいと思います...たとえば、次のようにしましょう
/* bla bla bla bla bla bla bla bla */ => 次のような文法を定義したい
<OPEN_COMMENT> SKIP ~[] until <CLOSE_COMMENT>
「bla」が通常のトークンでも真であってほしい
ご協力いただきありがとうございます
正規表現を使用して実行できます。
次のように、トークンとルールを定義できます。
TOKEN :
{
< #DIGIT : [ "0"-"9" ] >
| < #ALPHABET: ["a" - "z"] >
| < #CAPSALPHABET: ["A" - "Z"] >
| < WORD: ( <DIGIT> | <ALPHABET> | <CAPSALPHABET>)+ >
}
String comment() :
{
Token token;
}
{
token=( <WORD> )+
{
return token.toString();
}
}
ここでの通常の手順は、MORE と SKIP または SPECIAL_TOKEN のいずれかで字句状態を使用することだと思います。この例は、JavaCC ソース配布に付属する Java 文法によってコメントが処理される方法で確認できます。