在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)
;