私は 2009 年 5 月の Oslo ビットをハックして、いくつかのソース コードをトークン化して実験しました。ただし、複数行の C スタイルのコメントを正しく処理する方法がわかりません。例えば:/*comment*/
私を逃れるいくつかのケース:
/***/
また
/**//**/
どちらか一方を機能させることはできますが、両方を機能させることはできません。文法は次のとおりです。
module Test {
language Comments {
token Comment =
MultiLineComment;
token MultiLineComment =
"/*" MultiLineCommentChar* "*/";
token MultiLineCommentChar =
^ "*" |
"*" PostAsteriskChar;
token PostAsteriskChar =
^ "*" |
"*" ^("*" | "/");
/*
token PostAsteriskChar =
^ "*" |
"*" PostAsteriskChar;
*/
syntax Main = Comment*;
}
}
コメントアウトされたトークンは私がやりたいと思っていることですが、再帰的なトークンは許可されていません。MGrammar 自体が「壊れた」複数行のコメントを持っている (それは処理できない/***/
) という事実から、これは不可能だと思います。
他に誰か知っていますか?