Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
 string SmartDump(ParsedSyntax x, bool isWatched)
 {
     var result = x.SmartDump(this);
     if(isWatched)
         result += ("\n" + x.Dump() + "\n").Indent(3);
     return result;
 }
Ejemplo n.º 3
0
        string ISmartDumpToken.SmartDumpListDelim(ParsedSyntax parsedSyntax, bool isFirst)
        {
            if(parsedSyntax.IsNegative)
                return (isFirst ? "" : " ") + "- ";

            return isFirst ? "" : " + ";
        }
        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);
        }
Ejemplo n.º 5
0
        protected override ParsedSyntax Syntax(ParsedSyntax left, IToken token, ParsedSyntax right)
        {
            Tracer.Assert(left != null);
            Tracer.Assert(right != null);

            return left.Associative(this, token, right);
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
        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);
        }
Ejemplo n.º 9
0
        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);
        }
Ejemplo n.º 10
0
 string ISmartDumpToken.SmartDumpListDelim(ParsedSyntax parsedSyntax, bool isFirst)
 {
     NotImplementedMethod(parsedSyntax, isFirst);
     return null;
 }
Ejemplo n.º 11
0
 protected virtual ParsedSyntax IsolateClause
     (string variable, ParsedSyntax left, ParsedSyntax right) => null;
Ejemplo n.º 12
0
 ParsedSyntax IPair.IsolateClause(string variable, ParsedSyntax left, ParsedSyntax right)
     => IsolateClause(variable, left, right);
Ejemplo n.º 13
0
 ParsedSyntax IPair.Pair(ParsedSyntax left, ParsedSyntax right) => Syntax(left, null, right);
Ejemplo n.º 14
0
 internal override ParsedSyntax CombineForPlus(ParsedSyntax other)
     => other.CombineForPlus(this);
Ejemplo n.º 15
0
 string IPair.SmartDump(ParsedSyntax left, ParsedSyntax right) => SmartDump(left, right);
Ejemplo n.º 16
0
 ParsedSyntax IAssociative.Combine(ParsedSyntax left, ParsedSyntax right) => null;
 public GreatesCommonDenominatorSyntax
     (IPair @operator, ParsedSyntax left, IToken token, ParsedSyntax right)
     : base(@operator, left, token, right) { }
Ejemplo n.º 18
0
 ParsedSyntax IAssociative.Combine(ParsedSyntax left, ParsedSyntax right)
     => left.CombineForPlus(right);
Ejemplo n.º 19
0
 static IEnumerable<KeyValuePair<string, ParsedSyntax>> GetDefinitions
     (ParsedSyntax parsedSyntax)
 {
     return parsedSyntax.Variables.Select(parsedSyntax.GetDefinition);
 }
 Set<ParsedSyntax> IStrategy.Apply(ParsedSyntax parsedSyntax)
 {
     if(parsedSyntax.Variables.Count() > _variableCount)
         return Set<ParsedSyntax>.Empty;
     return parsedSyntax.Replace(_definitions) - parsedSyntax;
 }
Ejemplo n.º 21
0
 bool IAssociative.IsEmpty(ParsedSyntax parsedSyntax)
 {
     var numberSyntax = parsedSyntax as NumberSyntax;
     return numberSyntax != null && numberSyntax.Value == 0;
 }
Ejemplo n.º 22
0
 public PowerSyntax(IPair @operator, ParsedSyntax left, IToken token, ParsedSyntax right)
     : base(@operator, left, token, right) {}
Ejemplo n.º 23
0
 string SmartDump(ParsedSyntax left, ParsedSyntax right)
     => "(" + left.SmartDump(this) + " " + Id + " " + right.SmartDump(this) + ")";
Ejemplo n.º 24
0
 bool IAssociative.IsEmpty(ParsedSyntax parsedSyntax) => parsedSyntax is TrueSyntax;
 public LeftParenthesisSyntax(int level, IToken token, ParsedSyntax right)
     : base(token)
 {
     Level = level;
     Right = right;
 }
Ejemplo n.º 26
0
 string ISmartDumpToken.SmartDumpListDelim(ParsedSyntax parsedSyntax, bool isFirst)
     => isFirst ? "" : " & ";
Ejemplo n.º 27
0
 protected override ParsedSyntax Syntax(ParsedSyntax left, IToken token, ParsedSyntax right)
 {
     Tracer.Assert(left == null);
     return new LeftParenthesisSyntax(_level, token, right);
 }
Ejemplo n.º 28
0
 internal override ParsedSyntax CombineForPlus(ParsedSyntax other, BigRational otherValue)
     => other.CombineForPlus(this, otherValue);