IronKonoha.KonohaSpace.defineSyntax C# (CSharp) Метод

defineSyntax() публичный Метод

public defineSyntax ( KDEFINE_SYNTAX syndefs ) : void
syndefs KDEFINE_SYNTAX
Результат void
        public void defineSyntax(KDEFINE_SYNTAX[] syndefs)
        {
            //KMethod pParseStmt = null, pParseExpr = null, pStmtTyCheck = null, pExprTyCheck = null;
            //KMethod mParseStmt = null, mParseExpr = null, mStmtTyCheck = null, mExprTyCheck = null;
            foreach (var syndef in syndefs)
            {
                ctx.kmodsugar.AddKeyword(syndef.name, syndef.kw);
                KeywordType kw = ctx.kmodsugar.keyword_(syndef.name, Symbol.NewID).Type;
                Syntax syn = GetSyntax(kw, true);
                //syn.token = syndef.name;
                syn.Flag |= syndef.flag;
                //if(syndef.type != null) {
                //    syn.Type = syndef.type;
                //}
                //if(syndef.op1 != null) {
                //    syn.Op1 = null;// syndef.op1;//Symbol.Get(ctx, syndef.op1, Symbol.NewID, SymPol.MsETHOD);
                //}
                //if(syndef.op2 != null) {
                //    syn.Op2 = null;// syndef.op2;//Symbol.Get(ctx, syndef.op2, Symbol.NewID, SymPol.MsETHOD);
                //}
                if (syndef.priority_op2 > 0)
                {
                    syn.priority = syndef.priority_op2;
                }
                if (syndef.rule != null)
                {
                    List<Token> adst;
                    parseSyntaxRule(syndef.rule, new LineInfo(0, ""), out adst);
                    syn.SyntaxRule = adst;
                }
                syn.ParseStmt = syndef.ParseStmt;
                syn.ParseExpr = syndef.ParseExpr ?? KModSugar.UndefinedParseExpr;
                syn.TopStmtTyCheck = syndef.TopStmtTyCheck;
                syn.StmtTyCheck = syndef.StmtTyCheck ?? ctx.kmodsugar.UndefinedStmtTyCheck;
                syn.ExprTyCheck = syndef.ExprTyCheck ?? ctx.kmodsugar.UndefinedExprTyCheck;
                if (syn.ParseExpr == KModSugar.UndefinedParseExpr)
                {
                    if (syn.Flag == SynFlag.ExprOp)
                    {
                        syn.ParseExpr = KModSugar.ParseExpr_Op;
                    }
                    else if (syn.Flag == SynFlag.ExprTerm)
                    {
                        syn.ParseExpr = KModSugar.ParseExpr_Term;
                    }
                }
            }
            //Console.WriteLine("syntax size={0}, hmax={1}", syntaxMap.Count, syntaxMap.);
        }