在Antlr4中解析以注释结尾的C预处理器语句

在Antlr4中解析以注释结尾的C预处理器语句,antlr4,Antlr4,我正在尝试为以下行创建语法规则: #define FLAG /* this is a comment */ 及 这是我目前的规则: DefineDirective : '#' Whitespace? 'define' ~[\r\n]* Newline -> channel(2) ; 但是,它也会使用注释。我需要检查行中是否包含“//”或“/*”,在这种情况下会出现中断,但我不知道如何。有人有想法吗?找到了一个可行的解决方案,所以分享它: Define

我正在尝试为以下行创建语法规则:

#define FLAG /* this is a comment */

这是我目前的规则:

DefineDirective
    :   '#' Whitespace? 'define' ~[\r\n]* Newline
        -> channel(2)
    ;

但是,它也会使用注释。我需要检查行中是否包含“//”或“/*”,在这种情况下会出现中断,但我不知道如何。有人有想法吗?

找到了一个可行的解决方案,所以分享它:

DefineDirective
    :   '#' Whitespace? 'define' ((~[/\r\n]) | ('/' ~('*'|'/')))*
        -> channel(2)
    ;
(~[/\r\n])=匹配除换行符和/

(“/”~(“*”|“/”)=match/,但仅当其后面不跟*或另一个时/

DefineDirective
    :   '#' Whitespace? 'define' ((~[/\r\n]) | ('/' ~('*'|'/')))*
        -> channel(2)
    ;