我正在定义Move IR的语法。该语言的测试套件包括各种注释以启用测试。我需要特别对待这种形式的评论:
//! new-transaction
// check: "Keep(ABORTED { code: 123,"
该文件是一个示例algorithm_operators_u8.mvir。
到目前为止,我通过禁止普通的单行注释来实现这一点。
module MOVE-ANNOTATION-SYNTAX-CONCRETE
imports INT-SYNTAX
syntax #Layout ::= r"([\\ \\n\\r\\t])" // Whitespace
syntax Annotation ::= "//!" "new-transaction" [klabel(NewTransaction), symbol]
syntax Check ::= "//" "check:" "\"Keep(ABORTED { code:" Int ",\"" [klabel(CheckCode), symbol]
endmodule
module MOVE-ANNOTATION-SYNTAX-ABSTRACT
imports INT-SYNTAX
syntax Annotation ::= "#NewTransaction" [klabel(NewTransaction), symbol]
syntax Check ::= #CheckCode(Int) [klabel(CheckCode), symbol]
endmodule
我也希望能够使用普通评论。作为第一步,我能够更改布局以仅在以!
using开头时才允许提交r"(\\/\\/[^!][^\\n\\r]*)"
我想排除所有以评论开头//!
或评论开头// check:
的评论。什么是实现这一点的好方法?在哪里可以找到 K 使用的正则表达式语言的文档?