public static Functor Create(string name, string functor) { var nameObj = new MathObjectFactory(name).CreateSingle(); var functorObj = new MathObjectFactory(functor).CreateSingle(); return(new Functor(nameObj, functorObj)); }
public static Functor?Create(string text) { var m = _construct.Match(text); if (m.Success) { var math = new MathObjectFactory(m.Groups[1].Value).Create().ToArray(); if (math.Length == 2) { return(new Functor(math[0], math[1])); } } return(null); }
private void BracketMode(Token token) { // _bracketCount > 0 if (_bracketCount == 0) { throw new InvalidOperationException("_bracketCount > 0 でないのにBracketModeに来るのはおかしい"); } _original.Append(token.Origin); if (token.IsOpenBracket()) { _bracketCount++; } else if (token.IsCloseBracket()) { _bracketCount--; } if (_bracketCount == 0) // 全ての括弧が閉じられた場合 { // 括弧の中身でMathObjectを生成 var left = _inBracket.First(); var main = _inBracket.Skip(1).ToArray().ToTokenString(); var mathObject = new MathObjectFactory(main).CreateSingle(); // 添え字でない場合は括弧をMathObjectに含める if (_scriptToken.IsEmpty) { if (mathObject is MathSequence m) { if (!m.IsSimple) { mathObject = new MathSequence(new MathObject[] { mathObject }, "", main.ToOriginalString()); } } mathObject = mathObject.SetBracket(left, token); } AddSequence(mathObject, left, token); } else { _inBracket.Add(token); } }