示例#1
0
 private bool Find(string key, int mapIndex)
 {
     for (var i = 0; i < Count; i++)
     {
         ActorDictionary dictionary = this[i]?[mapIndex];
         if (dictionary?.TryGetValue(key, out Actor) == true)
         {
             return(true);
         }
     }
     return(false);
 }
示例#2
0
        private Runtime()
        {
            ResetContext();
            ActorDictionary immediate = Core[0];
            ActorDictionary word      = Core[1];

            #region Arithmetic
            word["+"]   = FiclFifo.Add;
            word["-"]   = FiclFifo.Subtract;
            word["*"]   = FiclFifo.Multiply;
            word["/"]   = FiclFifo.Divide;
            word["dec"] = FiclFifo.Decrement;
            word["inc"] = FiclFifo.Increment;
            #endregion

            #region Boolean Operators
            word["and"] = FiclFifo.And;
            word["not"] = FiclFifo.Not;
            word["or"]  = FiclFifo.Or;
            #endregion

            #region Comparators
            word[">"]  = FiclFifo.GreaterThan;
            word["<"]  = FiclFifo.LessThan;
            word[">="] = FiclFifo.GreaterThanOrEqual;
            word["<="] = FiclFifo.LessThanOrEqual;
            word["="]  = FiclFifo.Equals;
            #endregion

            #region Debugging
            word[".d"] = Debugging;
            word[".s"] = StackDump;
            #endregion

            #region Define New Words
            immediate[":"] = Colon;
            word["return"] = Return;
            immediate[";"] = Semicolon;
            #endregion

            #region Flow Control
            immediate["begin"] = Begin;
            immediate["leave"] = Leave;
            immediate["again"] = Again;
            immediate["end"]   = End;
            immediate["if"]    = If;
            immediate["else"]  = Else;
            immediate["then"]  = End;
            #endregion

            #region I/O
            word["."] = () => log(FiclFifo.Pop().ToString());
            #endregion

            #region Stack Control
            word["drop"] = FiclFifo.Drop;
            word["dup"]  = FiclFifo.Dup;
            word["swap"] = FiclFifo.Swaps;
            word["over"] = FiclFifo.Over;
            #endregion

            #region Arrays, strings, comments and other objects
            word["["]       = ListStart;
            immediate["]:"] = ListEnd;
            immediate["\""] = DoubleQuote;
            immediate["'"]  = SingleQuote;
            immediate["("]  = OpenBracket;
            #endregion

            #region Variables
            immediate["set:"]       = Set;
            immediate[":on-update"] = FiclFifo.OnUpdate;
            immediate["ref:"]       = FiclFifo.Ref;
            #endregion
        }