示例#1
0
    public override bool Equals(object obj)
    {
        // If parameter is null return false.
        if (obj == null)
        {
            return(false);
        }

        // If parameter cannot be cast to ArgsList return false.
        ArgsList otherList = obj as ArgsList;

        if ((System.Object)otherList == null)
        {
            return(false);
        }

        // Return true if other have the same elements in the same order.
        if (otherList.Length != this.Length)
        {
            return(false);
        }
        for (int i = 0; i < this.Length; ++i)
        {
            if (otherList[i] != this[i])
            {
                return(false);
            }
        }
        return(true);
    }
示例#2
0
    public override string Execute()
    {
        AbstractHero hero = (AbstractHero)this.Manager.heroes[ArgsList[1]];

        ArgsList.RemoveAt(1);
        return(Manager.AddRecipeToHero(ArgsList, hero));
    }
示例#3
0
 public void PopBack()
 {
     if (ArgsList.Count > 0)
     {
         ArgsList.RemoveAt(ArgsList.Count - 1);
     }
 }
示例#4
0
        private static Expression makeSimpleOperand(Token token, ArgsList argsList)
        {
            switch (token.Type)
            {
            case TokenType.DecLiteral:
                return(new LiteralNode(ExpressionValue.makeValue(long.Parse(token.Value))));

            case TokenType.HexLiteral:
                return(new LiteralNode(ExpressionValue.makeValue(
                                           long.Parse(token.Value.Substring(1), NumberStyles.HexNumber))));

            case TokenType.CharLiteral:
                return(new LiteralNode(ExpressionValue.makeValue(
                                           token.Value.Substring(1, token.Value.Length - 2)[0])));

            case TokenType.StringLiteral:
                return(new LiteralNode(ExpressionValue.makeValue(
                                           token.Value.Substring(1, token.Value.Length - 2))));

            case TokenType.SpecialRegister:
                return(new LiteralNode(ExpressionValue.makeSpecialRegister(token.Value)));

            case TokenType.LocationPtr:
                if (!argsList.Contains(token.Value))
                {
                    argsList.Add(token.Value);
                }
                return(new ArgumentRefNode(ExpressionValue.makeVaribleRef(token.Value)));

            case TokenType.LocalBackRef: {
                var refName = "@" + token.Value + "_" + (++_uniqSeed);
                if (!argsList.Contains(token.Value))
                {
                    argsList.Add(refName);
                }
                return(new ArgumentRefNode(ExpressionValue.makeVaribleRef(refName)));
            }

            case TokenType.LocalForwRef: {
                var refName = "@" + token.Value + "_" + (++_uniqSeed);
                if (!argsList.Contains(token.Value))
                {
                    argsList.Add(refName);
                }
                return(new ArgumentRefNode(ExpressionValue.makeVaribleRef(refName)));
            }

            case TokenType.LabelRef:
                if (!argsList.Contains(token.Value))
                {
                    argsList.Add(token.Value);
                }
                return(new ArgumentRefNode(ExpressionValue.makeVaribleRef(token.Value)));

            default:
                throw new Exception("Can't make operand from token " + token);
            }
        }
示例#5
0
        public static Expression buildExpression(string arg)
        {
            var argsList = new ArgsList();
            var expr     =
                buildExpression0(new Tokenizer(arg), false,
                                 new LinkedList <Expression>(), new LinkedList <Token>(),
                                 argsList, 0);

            return(new CommonExpression(argsList, expr));
        }
示例#6
0
 public OutputParser(string[] args) : base(args)
 {
     Password = ArgsList.ContainsKey(ArgsType.PASSWORD) ? ArgsList[ArgsType.PASSWORD].Parameter : "";
     Message  = ArgsList.ContainsKey(ArgsType.INPUTCONSOLE) ? ArgsList[ArgsType.INPUTCONSOLE].Parameter : "";
     Filein   = ArgsList.ContainsKey(ArgsType.INPUTFILE) ? ArgsList[ArgsType.INPUTFILE].Parameter : "";
     Fileout  = ArgsList.ContainsKey(ArgsType.OUTPUTFILE) ? ArgsList[ArgsType.OUTPUTFILE].Parameter : "";
     Mode     = ArgsList.ContainsKey(ArgsType.DECRYPT) ?
                ArgsList[ArgsType.DECRYPT].Arg == ArgsType.DECRYPT ?
                ArgsType.DECRYPT : ArgsType.ENCRYPT : ArgsType.ENCRYPT;
 }
示例#7
0
        private static Expression buildExpression0(Tokenizer tokenizer,
                                                   bool prevTokenIsOperand, LinkedList <Expression> operandDeque,
                                                   LinkedList <Token> operatorDeque,
                                                   ArgsList argsList, int nestingLevel)
        {
            var token = tokenizer.getNextToken();

            if (!tokenIsTerminator(token, nestingLevel))
            {
                bool tokenIsOperand;
                if (tokenIsOperator(token))
                {
                    tokenIsOperand = false;
                    if (prevTokenIsOperand)
                    {
                        operatorDeque.AddLast(token);
                    }
                    else
                    {
                        operandDeque.AddLast(new FakeLeftOperandForUnaryOp());
                        operatorDeque.AddLast(makeTokenForUnaryOperator(token));
                    }
                }
                else
                {
                    tokenIsOperand = true;
                    var operand =
                        token.Type != TokenType.BraceOpen
                            ? makeSimpleOperand(token, argsList)
                            : buildExpression0(tokenizer, false,
                                               new LinkedList <Expression>(), new LinkedList <Token>(),
                                               argsList, nestingLevel + 1);
                    operandDeque.AddLast(operand);
                    reduce(operandDeque, operatorDeque);
                }
                return(buildExpression0(tokenizer, tokenIsOperand,
                                        operandDeque, operatorDeque, argsList, nestingLevel));
            }
            else
            {
                while (operatorDeque.Last != null &&
                       operatorDeque.Last.Previous != null)
                {
                    reduce(operandDeque, operatorDeque);
                }
                if (operatorDeque.Last != null)
                {
                    reduceRight(operandDeque, operatorDeque);
                }
                return(operandDeque.First.Value);
            }
        }
示例#8
0
 public Object OutputClass()
 {
     if (ArgsConflict == null & ArgsOoR == null & ToManyArgs == null & ArgsUnknown == null)
     {
         if (ArgsList.ContainsKey(ArgsType.HELP))
         {
             return(new HelpInfo());
         }
         else if (ArgsList.ContainsKey(ArgsType.INPUTCONSOLE) & ArgsList.ContainsKey(ArgsType.OUTPUTCONSOLE))
         {
             return(new ConsoleInOut(Message, Password, Mode));
         }
         else if (ArgsList.ContainsKey(ArgsType.INPUTCONSOLE) & ArgsList.ContainsKey(ArgsType.OUTPUTFILE))
         {
             return(new ConsoleInFileOut(Message, Fileout, Password, Mode));
         }
         else if (ArgsList.ContainsKey(ArgsType.INPUTFILE) & ArgsList.ContainsKey(ArgsType.OUTPUTCONSOLE))
         {
             return(new FileInConsoleOut(Filein, Password, Mode));
         }
         else if (ArgsList.ContainsKey(ArgsType.INPUTFILE) & ArgsList.ContainsKey(ArgsType.OUTPUTFILE))
         {
             return(new FileInOut(Filein, Fileout, Password, Mode));
         }
     }
     else if (ArgsConflict != null)
     {
         return(ArgsConflict);
     }
     else if (ArgsOoR != null)
     {
         return(ArgsOoR);
     }
     else if (ToManyArgs != null)
     {
         return(ToManyArgs);
     }
     return(ArgsUnknown);
 }
示例#9
0
 public ErrorParser(string[] args) : base(args)
 {
     if (ArgsList.ContainsKey(ArgsType.HELP) ^
         !((ArgsList.ContainsKey(ArgsType.INPUTFILE) ^ ArgsList.ContainsKey(ArgsType.INPUTCONSOLE)) &
           (ArgsList.ContainsKey(ArgsType.ENCRYPT) ^ ArgsList.ContainsKey(ArgsType.DECRYPT))))
     {
         ArgsConflict = new Exception("Противоречие или отсутствие аргументов");
     }
     if (Outofrange)
     {
         ArgsOoR = new Exception("Отсутсвие параметров для аргумента или их неявное задание");
     }
     if (UnunknownArg)
     {
         ArgsUnknown = new Exception("Присутсвует неизвестный аргумент");
     }
     foreach (ArgsType x in ArgsList.Keys)
     {
         if (ArgsList[x].Count > 1)
         {
             ToManyArgs = new Exception("Нерациональное количество одинаковых аргументов");
         }
     }
 }
示例#10
0
 public void PushBack(Value val)
 {
     ArgsList.Add(val);
 }
示例#11
0
 public void PushFront(Value val)
 {
     ArgsList.Insert(0, val);
 }
示例#12
0
文件: Program.cs 项目: MSRCCS/Hub
        static void List(ArgsList cmd)
        {
            string hubCmdString = string.Format(_cmdFormat, "List", Guid.Empty, 0);

            EvalCommand(cmd.pHub, cmd.evalServiceGuid, hubCmdString);
        }
示例#13
0
 //Запись в строку
 public override string ToTestString()
 {
     return(ToTestWithChildren(ArgsList.ToArray()));
 }
示例#14
0
 internal CommonExpression(ArgsList dependencyList,
                           Expression nestedExpression)
 {
     this._argsList   = dependencyList;
     this._expression = nestedExpression;
 }