From 10b6c4fa59abcde40dfd3c548c4df4a8b08a21d8 Mon Sep 17 00:00:00 2001 From: Kristóf Marussy Date: Wed, 10 Aug 2022 01:00:09 +0200 Subject: feat(language): add support for count operator --- subprojects/frontend/src/language/problem.grammar | 9 ++++++++- subprojects/frontend/src/language/problemLanguageSupport.ts | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) (limited to 'subprojects/frontend') diff --git a/subprojects/frontend/src/language/problem.grammar b/subprojects/frontend/src/language/problem.grammar index 6fb188d8..58c398a3 100644 --- a/subprojects/frontend/src/language/problem.grammar +++ b/subprojects/frontend/src/language/problem.grammar @@ -57,7 +57,12 @@ Conjunction { ("," | Literal)+ } OrOp { ";" } -Literal { Modality? NotOp? Modality? Atom ((":" | "=") LogicValue)? } +Literal { + Modality? ( + NotOp? Modality? Atom ((":" | "=") LogicValue)? | + ckw<"count"> "{" Modality? Atom "}" ComparisonOp int + ) +} Atom { RelationName "+"? ParameterList } @@ -141,6 +146,8 @@ sep1 { content (separator content)* } "\"" (![\\"\n] | "\\" (![\n] | "\n"))* "\"" } + ComparisonOp { ">" | ">=" | "<" | "<=" | "=:=" | "=!=" } + NotOp { "!" } UnknownOp { "?" } diff --git a/subprojects/frontend/src/language/problemLanguageSupport.ts b/subprojects/frontend/src/language/problemLanguageSupport.ts index 550532ef..65fb50dc 100644 --- a/subprojects/frontend/src/language/problemLanguageSupport.ts +++ b/subprojects/frontend/src/language/problemLanguageSupport.ts @@ -30,7 +30,7 @@ const parserWithMetadata = (parser as LRParser).configure({ 'problem class enum pred rule indiv scope': t.definitionKeyword, 'abstract extends refers contains opposite error default': t.modifier, 'true false unknown error': t.keyword, - 'may must current': t.operatorKeyword, + 'may must current count': t.operatorKeyword, 'new delete': t.operatorKeyword, NotOp: t.operator, UnknownOp: t.operator, -- cgit v1.2.3-70-g09d2