コード例 #1
0
        public override Statement VisitSTMR_Increment([NotNull] S_ScriptParser.STMR_IncrementContext context)
        {
            Statement.AssignmentType v = Statement.AssignmentType.PlusPlus;
            string LibName             = context.name().unit_name().Length == 1 ? SystemNameSpaces.GLOBAL : context.name().unit_name()[0].GetText();
            string VarName             = context.name().unit_name().Length == 1 ? context.name().unit_name()[0].GetText() : context.name().unit_name()[1].GetText();

            if (context.increment().PLUS() != null)
            {
                v = Statement.AssignmentType.PlusPlus;
            }
            else if (context.increment().MINUS() != null)
            {
                v = Statement.AssignmentType.MinusMinus;
            }

            Statement x = new Statement.Assignment(this._Host, this._Master, LibName, VarName, v);

            foreach (S_ScriptParser.ExpressionContext e in context.expression())
            {
                Expression n = this._expr.Visit(e);
                x.Parameters.Add("F" + x.Parameters.Count.ToString(), n);
            }

            return(x);
        }
コード例 #2
0
        public override Statement VisitSTMR_Assign([NotNull] S_ScriptParser.STMR_AssignContext context)
        {
            Statement.AssignmentType v = Statement.AssignmentType.Equals;
            bool   assign  = context.assignment().ASSIGN() != null;
            string LibName = context.name().unit_name().Length == 1 ? SystemNameSpaces.GLOBAL : context.name().unit_name()[0].GetText();
            string VarName = context.name().unit_name().Length == 1 ? context.name().unit_name()[0].GetText() : context.name().unit_name()[1].GetText();

            if (this._Context.SpoolExists(LibName) && !this._Context[LibName].Exists(VarName))
            {
                this._Context[LibName].Add(VarName);
            }

            if (assign && context.assignment().PLUS() != null)
            {
                v = Statement.AssignmentType.PlusEquals;
            }
            else if (assign && context.assignment().MINUS() != null)
            {
                v = Statement.AssignmentType.MinusEquals;
            }
            else if (assign && context.assignment().MUL() != null)
            {
                v = Statement.AssignmentType.MultEquals;
            }
            else if (assign && context.assignment().DIV() != null)
            {
                v = Statement.AssignmentType.DivEquals;
            }
            else if (assign && context.assignment().DIV2() != null)
            {
                v = Statement.AssignmentType.Div2Equals;
            }
            else if (assign && context.assignment().MOD() != null)
            {
                v = Statement.AssignmentType.ModEquals;
            }
            else if (assign && context.assignment().MOD2() != null)
            {
                v = Statement.AssignmentType.Mod2Equals;
            }

            // Check if we have a table //
            //if (v == Statement.AssignmentType.PlusEquals && this._Host.Spools.Exists(LibName) && this._Host.Spools[LibName].Exists(VarName) && this._Host.Spools[LibName][VarName].Affinity == CellAffinity.TREF)
            //{
            //    string tref = this._Host.Spools[LibName][VarName].valueTREF;
            //    Table t = this._Host.OpenTable(tref);
            //    Expression a = this._expr.Visit(context.expression()[0]);
            //    bool ContainsAggregate = (a is Expression.ArrayLiteral && a.ContainsAggregate);

            //    Statement s = null;
            //    if (!ContainsAggregate)
            //    {
            //        s = new TableInsert.GenericTableInsert(this._Host, this._Master, t);
            //        s.Parameters.Add(a);
            //    }
            //    else
            //    {
            //        s = new TableInsert.DictionGroupBy(this._Host, this._Master, t);
            //        foreach(Expression exp in a.Children)
            //        {
            //            s.Parameters.Add(exp);
            //        }
            //    }

            //    this._Master = s;
            //    return s;
            //}

            Statement x = new Statement.Assignment(this._Host, this._Master, LibName, VarName, v);

            foreach (S_ScriptParser.ExpressionContext e in context.expression())
            {
                Expression n = this._expr.Visit(e);
                x.Parameters.Add("F" + x.Parameters.Count.ToString(), n);
            }

            return(x);
        }