コード例 #1
0
ファイル: Rule.cs プロジェクト: slimlime/lslib
        public override void MakeScript(TextWriter writer, Story story, Tuple tuple)
        {
            switch (GetRuleType(story))
            {
            case RuleType.Proc: writer.WriteLine("PROC"); break;

            case RuleType.Query: writer.WriteLine("QRY"); break;

            case RuleType.Rule: writer.WriteLine("IF"); break;
            }

            var initialTuple = MakeInitialTuple();

            if (AdapterRef.IsValid)
            {
                var adapter = AdapterRef.Resolve();
                initialTuple = adapter.Adapt(initialTuple);
            }

            ParentRef.Resolve().MakeScript(writer, story, initialTuple);
            writer.WriteLine("THEN");
            foreach (var call in Calls)
            {
                call.MakeScript(writer, story, initialTuple);
                writer.WriteLine(";");
            }
        }
コード例 #2
0
ファイル: RelOp.cs プロジェクト: soderstrom-rikard/dos2-lslib
        public override void MakeScript(TextWriter writer, Story story, Tuple tuple)
        {
            var adaptedTuple = AdapterRef.Resolve().Adapt(tuple);

            ParentRef.Resolve().MakeScript(writer, story, adaptedTuple);
            writer.WriteLine("AND");

            if (LeftValueIndex != -1)
            {
                adaptedTuple.Logical[LeftValueIndex].MakeScript(writer, story, tuple);
            }
            else
            {
                LeftValue.MakeScript(writer, story, tuple);
            }

            switch (RelOp)
            {
            case RelOpType.Less: writer.Write(" < "); break;

            case RelOpType.LessOrEqual: writer.Write(" <= "); break;

            case RelOpType.Greater: writer.Write(" > "); break;

            case RelOpType.GreaterOrEqual: writer.Write(" >= "); break;

            case RelOpType.Equal: writer.Write(" == "); break;

            case RelOpType.NotEqual: writer.Write(" != "); break;
            }

            if (RightValueIndex != -1)
            {
                adaptedTuple.Logical[RightValueIndex].MakeScript(writer, story, tuple);
            }
            else
            {
                RightValue.MakeScript(writer, story, tuple);
            }
            writer.WriteLine();
        }