/// <summary> /// ユーザー関数を登録する /// </summary> protected void RegisterUserCall() { // tokenでDEFINE FUNKが見つかったらEOLまでを最上部に追加 if (tokens != null) { tokens.MoveTop(); while (!tokens.IsEOF()) { NakoToken tok = tokens.CurrentToken; if (tok.Type == NakoTokenType.DEF_FUNCTION) { int index = 0; while (tok.Type != NakoTokenType.SCOPE_BEGIN) { NakoToken insertToken = new NakoToken(tok.Type, tok.LineNo, tok.IndentLevel, tok.Value); if (tok.Type == NakoTokenType.DEF_FUNCTION) { insertToken.Type = NakoTokenType.DEF_FUNCTION_ALIASE; } tokens.Insert(index, insertToken); index++; tokens.MoveNext(); tokens.MoveNext(); tok = tokens.CurrentToken; } tokens.Insert(index, tok); } tokens.MoveNext(); } tokens.MoveTop(); } }
/// <summary> /// コンストラクタ /// </summary> /// <param name="tokens"></param> public NakoParserBase(NakoTokenList tokens) { this.tok = tokens; tokens.MoveTop(); parentNode = topNode = new NakoNode(); frameStack = new Stack<NakoParserFrame>(); stateStack = new Stack<NakoParserNodeState>(); calcStack = new NakoNodeList(); calcStackCounters = new Stack<int>(); lastNode = null; localVar = new NakoVariableManager(NakoVariableScope.Local); }
/// <summary> /// コンストラクタ /// </summary> /// <param name="tokens"></param> public NakoParserBase(NakoTokenList tokens) { this.tok = tokens; tokens.MoveTop(); parentNode = topNode = new NakoNode(); frameStack = new Stack <NakoParserFrame>(); stateStack = new Stack <NakoParserNodeState>(); calcStack = new NakoNodeList(); calcStackCounters = new Stack <int>(); lastNode = null; localVar = new NakoVariableManager(NakoVariableScope.Local); }