using System; using System.Text.RegularExpressions; namespace QFSW.QC.Grammar { public class BooleanNegationGrammar : IQcGrammarConstruct { private readonly Regex _negationRegex = new Regex(@"^!\S+$"); public int Precedence => 0; public bool Match(string value, Type type) { return type == typeof(bool) && _negationRegex.IsMatch(value); } public object Parse(string value, Type type, Func recursiveParser) { value = value.Substring(1); return !(bool)recursiveParser(value, type); } } }