/// <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> /// 値を1つだけ解析したい場合 /// </summary> /// <returns></returns> public bool ParseOnlyValue() { lastNode = null; if (tok.IsEOF()) { return(false); } if (!_value()) { return(false); } topNode.AddChild(lastNode); return(true); }