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("\'[\'に対応する\']\'が存在しません"); } }
/// <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); } }
/// <summary> ソースコードよりインスタンスの作成 </summary> /// <param name="sourceCode">ソースコード</param> public RunnningCodePointer(string sourceCode) { _sourceCode = new RunnningCode(sourceCode); _janper = new Janper(_sourceCode); }