我一直在研究 May09 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 本身具有“损坏”的多行注释(它无法处理/***/
)这一事实让我相信这是不可能的。
还有人知道吗?