IronKonoha.KStatement.addExprParams C# (CSharp) Method

addExprParams() public method

public addExprParams ( Context ctx, KonohaExpr expr, IList tls, int s, int e, bool allowEmpty ) : void
ctx Context
expr KonohaExpr
tls IList
s int
e int
allowEmpty bool
return void
        public void addExprParams(Context ctx,  KonohaExpr expr, IList<Token> tls, int s, int e, bool allowEmpty)
        {
            int i, start = s;
            for(i = s; i < e; i++) {
                Token tk = tls[i];
                if(tk.Keyword == KeywordType.COMMA) {
                    ((ConsExpr)expr).Add(ctx, newExpr2(ctx, tls, start, i));
                    start = i + 1;
                }
            }
            if(!allowEmpty || start < i) {
                ((ConsExpr)expr).Add(ctx, newExpr2(ctx, tls, start, i));
            }
            //kArray_clear(tls, s);
            //return expr;
        }

Usage Example

Exemplo n.º 1
0
 // static KMETHOD ParseExpr_Parenthesis(CTX, ksfp_t *sfp _RIX)
 private static KonohaExpr ParseExpr_Parenthesis(Context ctx, Syntax syn, KStatement stmt, IList<Token> tls, int s, int c, int e)
 {
     Token tk = tls[c];
     if(s == c) {
         KonohaExpr expr = stmt.newExpr2(ctx, tk.Sub, 0, tk.Sub.Count);
         return KModSugar.Expr_rightJoin(ctx, expr, stmt, tls, s + 1, c + 1, e);
     }
     else {
         KonohaExpr lexpr = stmt.newExpr2(ctx, tls, s, c);
         if(lexpr == null) {
             return null;
         }
         if (lexpr.syn == null)
         {
             lexpr.syn = stmt.ks.GetSyntax(lexpr.tk.Keyword);
         }
         if(lexpr.syn.KeyWord == KeywordType.DOT) {
             lexpr.syn = stmt.ks.GetSyntax(KeywordType.ExprMethodCall); // CALL
         }
         else if(lexpr.syn.KeyWord != KeywordType.ExprMethodCall) {
             Console.WriteLine("function calls  .. ");
             syn = stmt.ks.GetSyntax(KeywordType.Parenthesis);    // (f null ())
             lexpr  = new ConsExpr(ctx, syn, lexpr, null);
         }
         stmt.addExprParams(ctx, lexpr, tk.Sub, 0, tk.Sub.Count, true/*allowEmpty*/);
         return KModSugar.Expr_rightJoin(ctx, lexpr, stmt, tls, s + 1, c + 1, e);
     }
 }