コード例 #1
0
ファイル: Caret.cs プロジェクト: hahoyer/HWClassLibrary.cs
        protected override ParsedSyntax Syntax(ParsedSyntax left, IToken token, ParsedSyntax right)
        {
            if(left == null || right == null)
                return base.Syntax(left, token, right);

            return new PowerSyntax(this, left, token, right);
        }
コード例 #2
0
ファイル: List.cs プロジェクト: hahoyer/HWClassLibrary.cs
 string SmartDump(ParsedSyntax x, bool isWatched)
 {
     var result = x.SmartDump(this);
     if(isWatched)
         result += ("\n" + x.Dump() + "\n").Indent(3);
     return result;
 }
コード例 #3
0
ファイル: Plus.cs プロジェクト: hahoyer/HWClassLibrary.cs
        string ISmartDumpToken.SmartDumpListDelim(ParsedSyntax parsedSyntax, bool isFirst)
        {
            if(parsedSyntax.IsNegative)
                return (isFirst ? "" : " ") + "- ";

            return isFirst ? "" : " + ";
        }
コード例 #4
0
        protected override ParsedSyntax Syntax(ParsedSyntax left, IToken token, ParsedSyntax right)
        {
            if(left == null || right == null)
                return base.Syntax(left, token, right);

            return new GreatesCommonDenominatorSyntax(this, left, token, right);
        }
コード例 #5
0
ファイル: And.cs プロジェクト: hahoyer/HWClassLibrary.cs
        protected override ParsedSyntax Syntax(ParsedSyntax left, IToken token, ParsedSyntax right)
        {
            Tracer.Assert(left != null);
            Tracer.Assert(right != null);

            return left.Associative(this, token, right);
        }
コード例 #6
0
ファイル: Equal.cs プロジェクト: hahoyer/HWClassLibrary.cs
        protected override ParsedSyntax Syntax(ParsedSyntax left, IToken token, ParsedSyntax right)
        {
            if(left == null || right == null)
                return base.Syntax(left, token, right);

            return left.Equal(token, right);
        }
コード例 #7
0
ファイル: Integer.cs プロジェクト: hahoyer/HWClassLibrary.cs
        protected override ParsedSyntax Syntax(ParsedSyntax left, IToken token, ParsedSyntax right)
        {
            if(left != null || right != null)
                return base.Syntax(left, token, right);

            return new IntegerSyntax(token);
        }
コード例 #8
0
ファイル: List.cs プロジェクト: hahoyer/HWClassLibrary.cs
        protected override ParsedSyntax Syntax(ParsedSyntax left, IToken token, ParsedSyntax right)
        {
            if(left == null)
                return right ?? TrueSyntax.Instance;
            if(right == null)
                return left;

            return left.Associative(this, token, right);
        }
コード例 #9
0
ファイル: Equal.cs プロジェクト: hahoyer/HWClassLibrary.cs
        protected override ParsedSyntax IsolateClause
            (string variable, ParsedSyntax left, ParsedSyntax right)
        {
            if(!left.Variables.Contains(variable))
            {
                if(right.Variables.Contains(variable))
                    return IsolateClause(variable, right, left);

                return null;
            }

            if(right.Variables.Contains(variable))
            {
                NotImplementedMethod(variable, left, right);
                return null;
            }

            return left.IsolateFromEquation(variable, right);
        }
コード例 #10
0
 string ISmartDumpToken.SmartDumpListDelim(ParsedSyntax parsedSyntax, bool isFirst)
 {
     NotImplementedMethod(parsedSyntax, isFirst);
     return null;
 }
コード例 #11
0
 protected virtual ParsedSyntax IsolateClause
     (string variable, ParsedSyntax left, ParsedSyntax right) => null;
コード例 #12
0
 ParsedSyntax IPair.IsolateClause(string variable, ParsedSyntax left, ParsedSyntax right)
     => IsolateClause(variable, left, right);
コード例 #13
0
 ParsedSyntax IPair.Pair(ParsedSyntax left, ParsedSyntax right) => Syntax(left, null, right);
コード例 #14
0
ファイル: Caret.cs プロジェクト: hahoyer/HWClassLibrary.cs
 internal override ParsedSyntax CombineForPlus(ParsedSyntax other)
     => other.CombineForPlus(this);
コード例 #15
0
 string IPair.SmartDump(ParsedSyntax left, ParsedSyntax right) => SmartDump(left, right);
コード例 #16
0
ファイル: And.cs プロジェクト: hahoyer/HWClassLibrary.cs
 ParsedSyntax IAssociative.Combine(ParsedSyntax left, ParsedSyntax right) => null;
コード例 #17
0
 public GreatesCommonDenominatorSyntax
     (IPair @operator, ParsedSyntax left, IToken token, ParsedSyntax right)
     : base(@operator, left, token, right) { }
コード例 #18
0
ファイル: Plus.cs プロジェクト: hahoyer/HWClassLibrary.cs
 ParsedSyntax IAssociative.Combine(ParsedSyntax left, ParsedSyntax right)
     => left.CombineForPlus(right);
コード例 #19
0
 static IEnumerable<KeyValuePair<string, ParsedSyntax>> GetDefinitions
     (ParsedSyntax parsedSyntax)
 {
     return parsedSyntax.Variables.Select(parsedSyntax.GetDefinition);
 }
コード例 #20
0
 Set<ParsedSyntax> IStrategy.Apply(ParsedSyntax parsedSyntax)
 {
     if(parsedSyntax.Variables.Count() > _variableCount)
         return Set<ParsedSyntax>.Empty;
     return parsedSyntax.Replace(_definitions) - parsedSyntax;
 }
コード例 #21
0
ファイル: Plus.cs プロジェクト: hahoyer/HWClassLibrary.cs
 bool IAssociative.IsEmpty(ParsedSyntax parsedSyntax)
 {
     var numberSyntax = parsedSyntax as NumberSyntax;
     return numberSyntax != null && numberSyntax.Value == 0;
 }
コード例 #22
0
ファイル: Caret.cs プロジェクト: hahoyer/HWClassLibrary.cs
 public PowerSyntax(IPair @operator, ParsedSyntax left, IToken token, ParsedSyntax right)
     : base(@operator, left, token, right) {}
コード例 #23
0
 string SmartDump(ParsedSyntax left, ParsedSyntax right)
     => "(" + left.SmartDump(this) + " " + Id + " " + right.SmartDump(this) + ")";
コード例 #24
0
ファイル: And.cs プロジェクト: hahoyer/HWClassLibrary.cs
 bool IAssociative.IsEmpty(ParsedSyntax parsedSyntax) => parsedSyntax is TrueSyntax;
コード例 #25
0
 public LeftParenthesisSyntax(int level, IToken token, ParsedSyntax right)
     : base(token)
 {
     Level = level;
     Right = right;
 }
コード例 #26
0
ファイル: And.cs プロジェクト: hahoyer/HWClassLibrary.cs
 string ISmartDumpToken.SmartDumpListDelim(ParsedSyntax parsedSyntax, bool isFirst)
     => isFirst ? "" : " & ";
コード例 #27
0
 protected override ParsedSyntax Syntax(ParsedSyntax left, IToken token, ParsedSyntax right)
 {
     Tracer.Assert(left == null);
     return new LeftParenthesisSyntax(_level, token, right);
 }
コード例 #28
0
ファイル: Caret.cs プロジェクト: hahoyer/HWClassLibrary.cs
 internal override ParsedSyntax CombineForPlus(ParsedSyntax other, BigRational otherValue)
     => other.CombineForPlus(this, otherValue);