IronKonoha.KonohaSpace.ParseExpr_Parenthesis C# (CSharp) Method

ParseExpr_Parenthesis() private static method

private static ParseExpr_Parenthesis ( Context ctx, Syntax syn, KStatement stmt, IList tls, int s, int c, int e ) : KonohaExpr
ctx Context
syn Syntax
stmt KStatement
tls IList
s int
c int
e int
return KonohaExpr
        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);
            }
        }