我正在尝试将 erlang 语义从 K 3.6 更新到 5.0,但遇到了以下问题:
当我尝试编写没有语义转换的函数声明时,它工作正常:
规则名称:Atom(Args) -> Body 。=>。... [结构]
但是当我需要编写以下内容时,kompile 会输出[Error] Inner Parser: Parse error: unexpected token ')'。
规则名称:Atom(Args:Values) -> Body => 。... [结构]
为了重现,这是我的简化语法:
imports STRING
syntax UnquotedAtom ::= r"[a-z][_a-zA-Z0-9@]*" [token]
syntax Atom ::= UnquotedAtom | Bool
syntax Exp ::= Atom
syntax Exps ::= List{Exp, ","} [strict, klabel("exps"), prefer, listexps]
syntax FunCl ::= Atom"("Exps")" "->" Exps "." [funcl1]
syntax Value ::= Atom
syntax Values ::= List{Value, ","}
syntax Exp ::= Value
syntax KResult ::= Value
// Function declaration
//ok
rule <k>Name:Atom(Args) -> Body . =>. ...</k> [structural]
// unexpected token ')'
rule <k>Name:Atom(Args:Values) -> Body => . ...</k> [structural]
我的 K 版本是:RV-K 版本 1.0-SNAPSHOT Git 修订版:adf2f2d Git 分支:未知构建日期:2021 年 3 月 16 日星期二 16:43:04 CET