diff --git a/k-distribution/tests/regression-new/bison-glr-bug/iele.k b/k-distribution/tests/regression-new/bison-glr-bug/iele.k index 03f2ff95b90..a65644c2308 100644 --- a/k-distribution/tests/regression-new/bison-glr-bug/iele.k +++ b/k-distribution/tests/regression-new/bison-glr-bug/iele.k @@ -2,7 +2,7 @@ module IELE-SYNTAX imports IELE-COMMON syntax IeleNameToken ::= - r"(? Exp "+" Exp [plus, unused] + syntax Exp ::= Exp "*" Exp [group(times), unused] + > Exp "+" Exp [group(plus), unused] syntax left times plus endmodule diff --git a/kernel/src/main/java/org/kframework/compile/checks/CheckAtt.java b/kernel/src/main/java/org/kframework/compile/checks/CheckAtt.java index 4c91405e0c9..47c423c3481 100644 --- a/kernel/src/main/java/org/kframework/compile/checks/CheckAtt.java +++ b/kernel/src/main/java/org/kframework/compile/checks/CheckAtt.java @@ -63,7 +63,7 @@ private void checkUnrecognizedAtts(Sentence sentence) { */ if (!sentence.att().rawKeys().isEmpty()) { errors.add(KEMException.compilerError("Unrecognized attributes: " + - sentence.att().rawKeys().mkString("[", ",", "]") + + sentence.att().rawKeys().mkString("[", ", ", "]") + "\nHint: User-defined groups can be added with the group(_) attribute.", sentence)); } } diff --git a/kore/src/main/scala/org/kframework/attributes/Att.scala b/kore/src/main/scala/org/kframework/attributes/Att.scala index 6c1beaf560d..cee110466a2 100644 --- a/kore/src/main/scala/org/kframework/attributes/Att.scala +++ b/kore/src/main/scala/org/kframework/attributes/Att.scala @@ -191,6 +191,7 @@ object Att { final val ML_BINDER = Key("mlBinder", KeyType.BuiltIn) final val ML_OP = Key("mlOp", KeyType.BuiltIn) final val MULTIPLICITY = Key("multiplicity", KeyType.BuiltIn) + final val NO_EVALUATORS = Key("no-evaluators", KeyType.BuiltIn) final val NO_THREAD = Key("noThread", KeyType.BuiltIn) final val NON_ASSOC = Key("non-assoc", KeyType.BuiltIn) final val NON_EXECUTABLE = Key("non-executable", KeyType.BuiltIn) @@ -200,6 +201,7 @@ object Att { final val PARSER = Key("parser", KeyType.BuiltIn) final val PREC = Key("prec", KeyType.BuiltIn) final val PREFER = Key("prefer", KeyType.BuiltIn) + final val PRESERVES_DEFINEDNESS = Key("preserves-definedness", KeyType.BuiltIn) final val PRIORITY = Key("priority", KeyType.BuiltIn) final val PRIVATE = Key("private", KeyType.BuiltIn) final val PUBLIC = Key("public", KeyType.BuiltIn) @@ -213,6 +215,7 @@ object Att { final val SMT_LEMMA = Key("smt-lemma", KeyType.BuiltIn) final val STREAM = Key("stream", KeyType.BuiltIn) final val STRICT = Key("strict", KeyType.BuiltIn) + final val STRUCTURAL = Key("structural", KeyType.BuiltIn) final val SYMBOL = Key("symbol", KeyType.BuiltIn) final val SYMBOLIC = Key("symbolic", KeyType.BuiltIn) final val TAG = Key("tag", KeyType.BuiltIn)