文件中的空行和以#字符开头的行(忽略前导空格)被视为注释并被忽略。
#注释:除行首处以外的字符不被特别处理,并且不引入注释.。
这意味着
# This is is a comment
This has no comments # at all有办法用Pest.rs来反映这一点吗?我试过这个,
COMMENT = { "#" ~ (!NEWLINE ~ ANY)* ~ NEWLINE }
WHITESPACE = _{ " " }
main = { SOI ~ ASCII_ALPHA* ~ EOI }但是,这将与
MyText # Exim test this is not a comment 我怎样才能把评论锚定在左边?
发布于 2021-03-20 21:33:22
这在默认的COMMENT扩展中是不可能的,因为它是扩展到除了原子。的。以下两行是相同的,
a = { b ~ c }
a = { b ~ WHITESPACE* ~ (COMMENT ~ WHITESPACE*)* ~ c }这实际上意味着,如果要使用~和COMMENT,就必须将规则限制在$上
相反,对于基于行的语法,我最终改进了它,而不使用COMMENT宏。而是定义我自己的宏_COMMENT,以避免正常展开为非原子标记,
WHITESPACE = _{ " " }
_COMMENT = { "#" ~ (!NEWLINE ~ ANY)* ~ NEWLINE }
expr = { ASCII_ALPHA+ }
stmt = { expr ~ NEWLINE }
conf = { SOI ~ (stmt | _COMMENT | NEWLINE)+ ~ EOI }注意,这里stmt和_COMMENT都是NEWLINE终止的,而conf包括一个或多个。
https://stackoverflow.com/questions/66726411
复制相似问题