IronKonoha.KonohaSpace.GetSyntaxRule C# (CSharp) Method

GetSyntaxRule() private method

private GetSyntaxRule ( IList tls, int s, int e ) : Syntax
tls IList
s int
e int
return Syntax
        internal Syntax GetSyntaxRule(IList<Token> tls, int s, int e)
        {
            Token tk = tls[s];
            if (tk.IsType)
            {
                tk = (s + 1 < e) ? tls[s + 1] : null;
                if (tk != null && (tk.Type == TokenType.SYMBOL || tk.Type == TokenType.USYMBOL))
                {
                    tk = (s + 2 < e) ? tls[s + 2] : null;
                    if (tk != null && (tk.Type == TokenType.AST_PARENTHESIS || tk.Keyword == KeywordType.DOT))
                    {
                        return GetSyntax(KeywordType.StmtMethodDecl); //
                    }
                    return GetSyntax(KeywordType.Type);  //
                }
                return GetSyntax(KeywordType.Expr);  // expression
            }
            Syntax syn = GetSyntax(tk.Keyword);

            if (syn == null || syn.SyntaxRule == null)
            {
                //wDBG_P("kw='%s', %d, %d", T_kw(syn.KeyWord), syn.ParseExpr == kmodsugar.UndefinedParseExpr, kmodsugar.UndefinedExprTyCheck == syn.ExprTyCheck);
                int i;
                for (i = s + 1; i < e; i++)
                {
                    tk = tls[i];
                    syn = GetSyntax(tk.Keyword);
                    if (syn.SyntaxRule != null && syn.priority > 0)
                    {
                        ctx.SUGAR_P(ReportLevel.DEBUG, tk.ULine, 0, "binary operator syntax kw='%s'", syn.KeyWord.ToString());   // sugar $expr "=" $expr;
                        return syn;
                    }
                }
                return GetSyntax(KeywordType.Expr);
            }
            return syn;
        }