예제 #1
0
 /// <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();
     }
 }
예제 #2
0
 /// <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);
 }
예제 #3
0
 /// <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);
 }