Esempio n. 1
0
        private bool CheckTriadOperandSafity(TriadOperand triadOperand)
        {
            if (triadOperand.IsLinkToAnotherTriad)
            {
                var calculatedTriad = CalculatedTriads
                                      .FirstOrDefault(t => t.TriadIndex == int.Parse(triadOperand.Token.Value));
                if (calculatedTriad == null)
                {
                    return(false);
                }
                return(true);
            }

            if (triadOperand.Token.Lexem == Lexem.DIGIT)
            {
                return(true);
            }

            if (triadOperand.Token.Lexem == Lexem.VAR)
            {
                var variable = Variables.FirstOrDefault(v => v.Name == triadOperand.Token.Value);
                if (variable != null && variable.IsSafe)
                {
                    return(true);
                }
                return(false);
            }

            throw new InvalidOperationException();
        }
Esempio n. 2
0
        private string GetTriadOperandValue(TriadOperand operand)
        {
            if (operand.IsLinkToAnotherTriad)
            {
                return(TriadResults
                       .First(result => result.TriadIndex == int.Parse(operand.Token.Value))
                       .Value);
            }

            if (operand.Token.Lexem == Lexem.VAR)
            {
                return(Variables
                       .First(result => result.Name == operand.Token.Value)
                       .Value);
            }

            return(operand.Token.Value);
        }
Esempio n. 3
0
        private string GetTriadOperandValue(TriadOperand triadOperand)
        {
            if (triadOperand.IsLinkToAnotherTriad)
            {
                return(CalculatedTriads
                       .FirstOrDefault(t => t.TriadIndex == int.Parse(triadOperand.Token.Value))?
                       .Value);
            }

            if (triadOperand.Token.Lexem == Lexem.DIGIT)
            {
                return(triadOperand.Token.Value);
            }

            if (triadOperand.Token.Lexem == Lexem.VAR)
            {
                return(Variables.First(v => v.Name == triadOperand.Token.Value).Value);
            }

            throw new InvalidOperationException();
        }