是否可以在 MGrammar 中解析多行 c 风格注释?
我一直在研究 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 本身具有“损坏的”多行注释(它无法处理 /***/
)这一事实让我相信这是不可能的。
还有人知道吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我的做法如下(并非全部是我自己的代码,但我找不到对原作者的引用)。
这允许单行 (
//
) 注释和多行 (/* */
) 注释。The way I have done it is as follows (not all my own code but I can't find a referance to the original author).
This allows for both single line (
//
) comments as well as multiline (/* */
) comments.