kframework - 无法计算最少种类的术语(其中术语是列表)
问题描述
我有以下作品:
syntax Id
syntax Exp ::= Id
syntax Exps ::= List{Exp, ","}
syntax Ids ::= List{Id, ","}
这个错误是什么意思?
[错误] 严重:无法计算最少种类的术语: _,__KOOL-UNTYPED-SYNTAX(Id(#"x"),, .List{"_,__KOOL-UNTYPED-SYNTAX"}(.KList))。 可能的排序是 [Ids, Exps],但它们最不常见的子排序是 GeneratedListBottom{_,__KOOL-UNTYPED-SYNTAX},这是不可能的排序。所有 术语必须具有唯一的最小排序;考虑将唯一的 KLabels 分配给 重载产品/完成子排序格。 同时评估功能项目:Stmts 在评估函数 initKCell 时 在评估函数 initThreadCell 时 在评估函数 initThreadsCell 时 在评估函数 initTCell 时
解决方案
K 不确定该术语x, .List
是 Id 列表还是 Exps 列表。
我们想告诉 K:
所有 ID 列表都是 Exp 列表:
syntax Exps ::= Ids
与 Exp 列表具有相同元素的 Id 列表是相同的。我们告诉 K
Exps
并使用属性Ids
解析到同一个 AST 节点:klabel
syntax Exps ::= List{Exp, ","} [klabel(exps)] syntax Ids ::= List{Id, ","} [klabel(exps)]
推荐阅读
- webpack - Webpack 为 CSS url() 生成另一个文件的 url
- vim - E254: 无法分配颜色
- sql - sql server 中的顺序令牌管理
- javascript - 使用包含“乘法”字符串的变量来乘以其他 2 个数字
- jenkins - 如何通过 Jenkinsfile 将 openshift 构建的容器镜像推送到私有注册表
- java - 如何在 webview 中通过鼠标事件选择图像的特定区域并通过按某个键显示白屏
- oracle - 如果脚本在 Oracle sql plus 中有错误,如何自动回滚
- pytorch - 如何将 lbfgs 优化器与 pytorch-lightning 一起使用?
- python - 用火花数据框中的平均值替换列的“NA”值
- php - 有什么方法可以改变 auth:api 的响应,一个 laravel api_token