Example #1
0
            public Janper(RunnningCode code)
            {
                Stack <int> stack = new Stack <int>();

                for (int index = 0; index < code.Length; index++)
                {
                    var letter = code[index];

                    if (letter == '[')
                    {
                        stack.Push(index);
                    }
                    else if (letter == ']')
                    {
                        if (!stack.Any())
                        {
                            throw new Exception("\']\'に対応する\'[\'が存在しません");
                        }
                        var firstIndex = stack.Pop();
                        _janpMap.Add(firstIndex, index);
                        _janpMap.Add(index, firstIndex);
                    }
                }
                if (stack.Any())
                {
                    throw new Exception("\'[\'に対応する\']\'が存在しません");
                }
            }
Example #2
0
 /// <summary> ソースコードよりインスタンスの作成 </summary>
 /// <param name="sourceCode">ソースコード</param>
 public RunnningCodePointer(string sourceCode, Place currentPos)
 {
     _sourceCode = new RunnningCode(sourceCode);
     _janper     = new Janper(_sourceCode);
     if (!currentPos.IsEmpty())
     {
         _runningPointer = _sourceCode.GetTrimedCodePlaceFromOrigin(currentPos);
     }
 }
Example #3
0
 /// <summary> ソースコードよりインスタンスの作成 </summary>
 /// <param name="sourceCode">ソースコード</param>
 public RunnningCodePointer(string sourceCode)
 {
     _sourceCode = new RunnningCode(sourceCode);
     _janper     = new Janper(_sourceCode);
 }