コード例 #1
0
 public RichIfStatement(Stringe token, RichActionBase expr, RichActionBase body, RichActionBase elseBody = null)
     : base(token)
 {
     _expression = expr;
     _body       = body;
     _elseBody   = elseBody;
 }
コード例 #2
0
        public RichFunctionCall(Stringe token, RichActionBase function, RichGroup args, string _sourceName)
            : base(token)
        {
            _function = function;
            List <RichActionBase> argValues = new List <RichActionBase>();

            if (args.Actions.Count > 0)
            {
                RichActionBase lastArg = null;
                for (var i = 0; i < args.Actions.Count; i++)
                {
                    var action = args.Actions[i];
                    if (action is RichArgumentSeperator)
                    {
                        if (lastArg == null)
                        {
                            throw new RantCompilerException(_sourceName, Range, "Blank argument in function call.");
                        }
                        argValues.Add(lastArg);
                    }
                    else
                    {
                        lastArg = action;
                    }
                }
                argValues.Add(lastArg);
            }
            _argValues = argValues.ToArray();

            Returnable = true;
        }
コード例 #3
0
ファイル: REAIfStatement.cs プロジェクト: katnapper323/Rant
		public REAIfStatement(Stringe token, RantExpressionAction expr, RantExpressionAction body, RantExpressionAction elseBody = null)
			: base(token)
		{
			_expression = expr;
			_body = body;
            _elseBody = elseBody;
		}
コード例 #4
0
ファイル: REAList.cs プロジェクト: katnapper323/Rant
		public REAList(Stringe origin, List<RantExpressionAction> items, bool concatSyntax = true)
			: base(origin)
		{
			_items = items;
			Type = ActionValueType.List;
			_concatSyntax = concatSyntax;
		}
コード例 #5
0
 public RichObjectPropertyAssignment(Stringe origin, RichActionBase nameExp, RichActionBase obj, RichActionBase value)
     : base(origin)
 {
     Name    = nameExp;
     _value  = value;
     _object = obj;
 }
コード例 #6
0
ファイル: RichFunctionCall.cs プロジェクト: W-h-a-t-s/Rant
		public RichFunctionCall(Stringe token, RichActionBase function, RichGroup args, string _sourceName)
			: base(token)
		{
			_function = function;
			List<RichActionBase> argValues = new List<RichActionBase>();
			if (args.Actions.Count > 0)
			{
				RichActionBase lastArg = null;
				for (var i = 0; i < args.Actions.Count; i++)
				{
					var action = args.Actions[i];
                    if (action is RichArgumentSeperator)
                    {
                        if (lastArg == null)
                            throw new RantCompilerException(_sourceName, Range, "Blank argument in function call.");
                        argValues.Add(lastArg);
                    }
                    else
                        lastArg = action;
				}
				argValues.Add(lastArg);
			}
			_argValues = argValues.ToArray();

            Returnable = true;
		}
コード例 #7
0
		public RichGreaterThanOperator(Stringe origin, bool orEqual = false)
			: base(origin)
		{
			Type = ActionValueType.Boolean;
			_orEqual = orEqual;
            Precedence = 15;
        }
コード例 #8
0
ファイル: Chare.cs プロジェクト: W-h-a-t-s/Rant
 internal Chare(Stringe source, char c, int offset)
 {
     _src = source;
     _character = c;
     _offset = offset;
     _line = _column = 0;
 }
コード例 #9
0
 public RichLessThanOperator(Stringe origin, bool orEqual = false)
     : base(origin)
 {
     Type       = ActionValueType.Boolean;
     _orEqual   = orEqual;
     Precedence = 15;
 }
コード例 #10
0
ファイル: RACallSubroutine.cs プロジェクト: W-h-a-t-s/Rant
		public RACallSubroutine(Stringe name, string moduleFunctionName = null)
			: base(name)
		{
			if (moduleFunctionName != null)
				_inModule = true;
			_moduleFunctionName = moduleFunctionName;
		}
コード例 #11
0
ファイル: RAFunction.cs プロジェクト: lzxkulou/Rant
 public RAFunction(Stringe range, RantFunctionSignature funcInfo, List <RantAction> argActions)
     : base(range)
 {
     _funcInfo   = funcInfo;
     _argActions = argActions;
     _argc       = argActions.Count;
 }
コード例 #12
0
ファイル: RichFunction.cs プロジェクト: nicolasmaurice/Rant
        public RichFunction(Stringe origin, RichActionBase body, RichGroup args)
            : base(origin)
        {
            List <string> argNames = new List <string>();

            if (args.Actions.Count > 0)
            {
                string lastArg = "";
                for (var i = 0; i < args.Actions.Count; i++)
                {
                    var action = args.Actions[i];
                    if (action is RichArgumentSeperator)
                    {
                        argNames.Add(lastArg);
                    }
                    else
                    {
                        lastArg = (action as RichVariable).Name;
                    }
                }
                argNames.Add(lastArg);
            }
            // reverse it, since things are popped from the object stack in reverse order
            argNames.Reverse();
            _argNames  = argNames.ToArray();
            _body      = body;
            Type       = ActionValueType.Function;
            Returnable = true;
        }
コード例 #13
0
ファイル: TagBlueprint.cs プロジェクト: dandrews/Manhood
        public TagBlueprint(Interpreter interpreter, Source source, Stringe name, IEnumerable<Token<TokenType>>[] args = null)
            : base(interpreter)
        {
            Source = source;
            Name = name;

            if (!Interpreter.TagFuncs.TryGetValue(Name.Value.ToLower().Trim(), out _tagDef))
            {
                throw new ManhoodException(Source, Name, "The tag '" + Name.Value + "' does not exist.");
            }

            _tagDef.ValidateArgCount(source, name, args != null ? args.Length : 0);

            if (args == null)
            {
                _args = Enumerable.Empty<TagArg>().ToArray();
            }
            else
            {
                // Insert token arguments into the array, set string args to null.
                _args = args.Select((a, i) => _tagDef.ArgTypes[i] == TagArgType.Tokens ? TagArg.FromTokens(a) : null).ToArray();

                // Queue string arguments on the stack.
                for (int i = 0; i < _tagDef.ArgTypes.Length; i++)
                {
                    if (_tagDef.ArgTypes[i] == TagArgType.Result)
                    {
                        interpreter.PushState(Interpreter.State.CreateDerivedDistinct(source, args[i], interpreter));
                    }
                }
            }
        }
コード例 #14
0
		public RichObjectPropertyAssignment(Stringe origin, RichActionBase nameExp, RichActionBase obj, RichActionBase value)
			: base(origin)
		{
			Name = nameExp;
			_value = value;
			_object = obj;
		}
コード例 #15
0
ファイル: RichList.cs プロジェクト: W-h-a-t-s/Rant
		public RichList(Stringe origin, List<RichActionBase> items, bool concatSyntax = true)
			: base(origin)
		{
			_items = items;
			Type = ActionValueType.List;
			_concatSyntax = concatSyntax;
		}
コード例 #16
0
 private static bool CapsInfer(Interpreter interpreter, Source source, Stringe tagname, TagArg[] args)
 {
     // TODO: Make capsinfer properly infer "first" capitalization given multiple sentences. Currently, it mistakes it for "word" mode.
     var words = Regex.Matches(args[0].GetString(), @"\w+").OfType<Match>().Select(m => m.Value).ToArray();
     int wCount = words.Length;
     int uCount = 0;
     int fwCount = 0;
     bool firstCharIsUpper = false;
     for (int i = 0; i < wCount; i++)
     {
         if (words[i].All(Char.IsUpper))
         {
             uCount++;
         }
         if (Char.IsUpper(words[i][0]))
         {
             fwCount++;
             if (i == 0) firstCharIsUpper = true;
         }
     }
     if (uCount == wCount)
     {
         interpreter.CurrentState.Output.SetCaps(Capitalization.Upper);
     }
     else if (wCount > 1 && fwCount == wCount)
     {
         interpreter.CurrentState.Output.SetCaps(Capitalization.Word);
     }
     else if (firstCharIsUpper)
     {
         interpreter.CurrentState.Output.SetCaps(Capitalization.First);
     }
     return false;
 }
コード例 #17
0
ファイル: RichIfStatement.cs プロジェクト: W-h-a-t-s/Rant
		public RichIfStatement(Stringe token, RichActionBase expr, RichActionBase body, RichActionBase elseBody = null)
			: base(token)
		{
			_expression = expr;
			_body = body;
            _elseBody = elseBody;
		}
コード例 #18
0
 internal void SetToken(Stringe token)
 {
     _line = token.Line;
     _col = token.Column;
     _index = token.Offset;
     _length = token.Length;
 }
コード例 #19
0
        private static bool Nth(Interpreter interpreter, Source source, Stringe tagname, Argument[] args)
        {
            int offset, interval;

            if (!Int32.TryParse(args[0].GetString(), out interval))
            {
                throw new RantException(source, tagname, "Invalid interval value.");
            }

            if (interval <= 0)
            {
                throw new RantException(source, tagname, "Interval must be greater than zero.");
            }

            if (!Int32.TryParse(args[1].GetString(), out offset))
            {
                throw new RantException(source, tagname, "Invalid offset value.");
            }

            if (interpreter.CurrentRepeater == null || !interpreter.CurrentRepeater.Nth(offset, interval))
            {
                return(false);
            }
            interpreter.PushState(State.CreateDerivedDistinct(source, args[2].GetTokens(), interpreter, interpreter.CurrentState.Output));
            return(true);
        }
コード例 #20
0
 internal void SetToken(Stringe token)
 {
     _line   = token.Line;
     _col    = token.Column;
     _index  = token.Offset;
     _length = token.Length;
 }
コード例 #21
0
        private IEnumerable <Parselet> FuncArgs(Token <R> fromToken, RantFunctionGroup group)
        {
            Token <R> funcToken = null;
            var       actions   = new List <RantAction>();
            var       sequences = new List <RantAction>();

            while (!reader.End)
            {
                funcToken = reader.ReadToken();

                if (funcToken.ID == R.Semicolon)
                {
                    // add action to args and continue
                    sequences.Add(actions.Count == 1 ? actions[0] : new RASequence(actions, funcToken));
                    actions.Clear();
                    reader.SkipSpace();
                    continue;
                }
                else if (funcToken.ID == R.RightSquare)
                {
                    // add action to args and return
                    sequences.Add(actions.Count == 1 ? actions[0] : new RASequence(actions, funcToken));
                    AddToOutput(new RAFunction(Stringe.Range(fromToken, funcToken),
                                               compiler.GetFunctionInfo(group, sequences.Count, fromToken, funcToken), sequences));
                    yield break;
                }

                yield return(GetParselet(funcToken, actions.Add));
            }

            compiler.SyntaxError(fromToken, "Unterminated function: unexpected end of file");
        }
コード例 #22
0
ファイル: RAFunction.cs プロジェクト: W-h-a-t-s/Rant
		public RAFunction(Stringe range, RantFunctionInfo funcInfo, List<RantAction> argActions)
			: base(range)
		{
			_funcInfo = funcInfo;
			_argActions = argActions;
			_argc = argActions.Count;
		}
コード例 #23
0
        private static bool Arg(Interpreter interpreter, Source source, Stringe tagname, Argument[] args)
        {
            if (!interpreter.SubArgStack.Any())
            {
                throw new RantException(source, tagname, "Tried to access arguments outside of a subroutine body.");
            }

            Argument arg;
            var      argName = args[0].GetString().Trim();

            if (!interpreter.SubArgStack.Peek().TryGetValue(argName, out arg))
            {
                throw new RantException(source, tagname, "Could not find argument '" + argName + "'.");
            }

            // Argument is string
            if (arg.Flags == ParamFlags.None)
            {
                interpreter.Print(arg.GetString());
                return(false);
            }

            // Argument is tokens
            interpreter.PushState(State.CreateDerivedShared(source, arg.GetTokens(), interpreter));
            return(true);
        }
コード例 #24
0
		public REAObjectPropertyAssignment(Stringe origin, RantExpressionAction nameExp, RantExpressionAction obj, RantExpressionAction value)
			: base(origin)
		{
			Name = nameExp;
			_value = value;
			_object = obj;
		}
コード例 #25
0
ファイル: RichList.cs プロジェクト: nicolasmaurice/Rant
 public RichList(Stringe origin, List <RichActionBase> items, bool concatSyntax = true)
     : base(origin)
 {
     _items        = items;
     Type          = ActionValueType.List;
     _concatSyntax = concatSyntax;
 }
コード例 #26
0
        public RichWhile(Stringe token, RichActionBase test, RichActionBase body)
            : base(token)
        {
            _test = test;
            _body = body;

            Breakable = true;
        }
コード例 #27
0
ファイル: RantPattern.cs プロジェクト: Sloves/Rant
 internal RantPattern(string name, RantPatternSource type, string code)
 {
     _name    = name;
     _type    = type;
     _code    = code;
     _stringe = code.ToStringe();
     _tokens  = RantLexer.GenerateTokens(_stringe);
 }
コード例 #28
0
ファイル: Chare.cs プロジェクト: W-h-a-t-s/Rant
 internal Chare(Stringe source, char c, int offset, int line, int col)
 {
     _src = source;
     _character = c;
     _offset = offset;
     _line = line;
     _column = col;
 }
コード例 #29
0
ファイル: REAWhile.cs プロジェクト: katnapper323/Rant
        public REAWhile(Stringe token, RantExpressionAction test, RantExpressionAction body)
            : base(token)
        {
            _test = test;
            _body = body;

            Breakable = true;
        }
コード例 #30
0
 internal RantTableLoadException(string origin, Stringe token, string message) 
     : base($"{origin}: (Ln {token.Line}, Col {token.Column}) {message}")
 {
     Line = token.Line;
     Column = token.Column;
     Offset = token.Offset;
     Origin = origin;
 }
コード例 #31
0
 internal RantTableLoadException(string origin, Stringe token, string message)
     : base($"{origin}: (Ln {token.Line}, Col {token.Column}) {message}")
 {
     Line   = token.Line;
     Column = token.Column;
     Offset = token.Offset;
     Origin = origin;
 }
コード例 #32
0
ファイル: RichWhile.cs プロジェクト: W-h-a-t-s/Rant
        public RichWhile(Stringe token, RichActionBase test, RichActionBase body)
            : base(token)
        {
            _test = test;
            _body = body;

            Breakable = true;
        }
コード例 #33
0
ファイル: RichObject.cs プロジェクト: W-h-a-t-s/Rant
		public RichObject(Stringe token, RichObjectKeyValue[] values)
			: base(token)
		{
			Type = ActionValueType.Object;
			Values = new Dictionary<string, RichActionBase>();
			foreach (RichObjectKeyValue val in values)
				Values[val.Name] = val.Value;
		}
コード例 #34
0
ファイル: Functions.cs プロジェクト: shoff/Rant
 private static bool Else(Interpreter interpreter, RantPattern source, Stringe tagname, Argument[] args)
 {
     if (!interpreter.UseElse())
     {
         return(false);
     }
     interpreter.PushState(Interpreter.State.CreateSub(source, args[0].GetTokens(), interpreter, interpreter.CurrentState.Output));
     return(true);
 }
コード例 #35
0
ファイル: Functions.cs プロジェクト: Benjins/Rant
        private static bool Extern(VM vm, RantPattern source, Stringe tagname, Argument[] args)
        {
            var name   = args[0].AsString();
            var result = vm.Engine.CallHook(name, args.Skip(1).Select(arg => arg.AsString()).ToArray());

            if (result == null)
            {
                throw Error(source, tagname, "A hook with the name '\{name}' does not exist.");
            }
コード例 #36
0
ファイル: Functions.cs プロジェクト: Benjins/Rant
 private static bool Else(VM vm, RantPattern source, Stringe tagname, Argument[] args)
 {
     if (!vm.UseElse())
     {
         return(false);
     }
     vm.PushState(VM.State.CreateSub(source, args[0].AsPattern(), vm, vm.CurrentState.Output));
     return(true);
 }
コード例 #37
0
 public RACallSubroutine(Stringe name, string moduleFunctionName = null)
     : base(name)
 {
     if (moduleFunctionName != null)
     {
         _inModule = true;
     }
     _moduleFunctionName = moduleFunctionName;
 }
コード例 #38
0
 private static bool First(Interpreter interpreter, Source source, Stringe tagname, Argument[] args)
 {
     if (interpreter.CurrentRepeater == null || !interpreter.CurrentRepeater.IsFirst)
     {
         return(false);
     }
     interpreter.PushState(State.CreateDerivedDistinct(source, args[0].GetTokens(), interpreter, interpreter.CurrentState.Output));
     return(true);
 }
コード例 #39
0
ファイル: RantPattern.cs プロジェクト: Sloves/Rant
 internal RantPattern(string name, RantPattern derived, IEnumerable <Token <R> > sub)
 {
     _name           = name;
     _type           = derived._type;
     _code           = derived._code;
     _stringe        = derived._stringe;
     _blockJumpTable = derived._blockJumpTable;
     _tokens         = sub;
 }
コード例 #40
0
 private static bool RepNum(Interpreter interpreter, Source source, Stringe tagname, Argument[] args)
 {
     if (interpreter.CurrentRepeater == null)
     {
         throw new RantException(source, tagname, "No active repeaters.");
     }
     interpreter.Print(interpreter.FormatNumber(interpreter.CurrentRepeater.Index + 1));
     return(false);
 }
コード例 #41
0
        private static bool Alt(Interpreter interpreter, Source source, Stringe tagname, Argument[] args)
        {
            var testState = State.CreateDerivedDistinct(source, args[0].GetTokens(), interpreter,
                                                        interpreter.CurrentState.Output);

            testState.AddPostBlueprint(new AltBlueprint(interpreter, testState, args[1].GetTokens()));
            interpreter.PushState(testState);
            return(true);
        }
コード例 #42
0
 private static bool Else(Interpreter interpreter, Source source, Stringe tagname, Argument[] args)
 {
     if (!interpreter.UseElse())
     {
         return(false);
     }
     interpreter.PushState(State.CreateDerivedShared(source, args[0].GetTokens(), interpreter));
     return(true);
 }
コード例 #43
0
ファイル: RASequence.cs プロジェクト: nicolasmaurice/Rant
 public RASequence(List <RantAction> actions, Stringe defaultRange)
     : base(actions.Any() ? Stringe.Range(actions[0].Range, actions[actions.Count - 1].Range) : defaultRange)
 {
     if (actions == null)
     {
         return;
     }
     _actions.AddRange(actions);
 }
コード例 #44
0
ファイル: QueryParselet.cs プロジェクト: nicolasmaurice/Rant
        void RightAngle(Token <R> token, Token <R> fromToken)
        {
            if (query.Name == null && query.Carrier.GetTotalCount() == 0)
            {
                compiler.SyntaxError(token, "Carrier delete query specified without any carriers");
            }

            AddToOutput(new RAQuery(query, Stringe.Range(fromToken, token)));
        }
コード例 #45
0
        /// <summary>
        /// Generates beautiful tokens.
        /// </summary>
        /// <param name="input">The input string to tokenize.</param>
        /// <returns></returns>
        public static IEnumerable <Token <R> > GenerateTokens(Stringe input)
        {
            var reader = new StringeReader(input);

            while (!reader.EndOfStringe)
            {
                yield return(reader.ReadToken(Rules));
            }
        }
コード例 #46
0
ファイル: RantCompiler.cs プロジェクト: W-h-a-t-s/Rant
        public RantFunctionInfo GetFunctionInfo(RantFunctionGroup group, int argc, Stringe from, Stringe to)
        {
            var func = group.GetFunction(argc);

            if (func == null)
                SyntaxError(Stringe.Between(from, to), $"No overload of function '{group.Name}' can take {argc} arguments");

            return func;
        }
コード例 #47
0
 private static bool IfDef(Interpreter interpreter, Source source, Stringe tagname, Argument[] args)
 {
     if (interpreter.Engine.Flags.Contains(args[0]))
     {
         interpreter.PushState(State.CreateDerivedShared(source, args[1].GetTokens(), interpreter));
         return(true);
     }
     interpreter.SetElse();
     return(false);
 }
コード例 #48
0
ファイル: Functions.cs プロジェクト: shoff/Rant
 private static bool IfDef(Interpreter interpreter, RantPattern source, Stringe tagname, Argument[] args)
 {
     if (interpreter.Engine.Flags.Contains(args[0]))
     {
         interpreter.PushState(Interpreter.State.CreateSub(source, args[1].GetTokens(), interpreter, interpreter.CurrentState.Output));
         return(true);
     }
     interpreter.SetElse();
     return(false);
 }
コード例 #49
0
ファイル: Util.cs プロジェクト: katnapper323/Rant
 public static RantExpressionAction ConvertToAction(Stringe token, object value)
 {
     if (value is double)
         return new REANumber((double)value, token);
     if (value is string)
         return new REAString((string)value, token);
     if (value is bool)
         return new REABoolean(token, (bool)value);
     return value as RantExpressionAction;
 }
コード例 #50
0
ファイル: Functions.cs プロジェクト: Benjins/Rant
 private static bool IfDef(VM vm, RantPattern source, Stringe tagname, Argument[] args)
 {
     if (vm.Engine.Flags.Contains(args[0]))
     {
         vm.PushState(VM.State.CreateSub(source, args[1].AsPattern(), vm, vm.CurrentState.Output));
         return(true);
     }
     vm.SetElse();
     return(false);
 }
コード例 #51
0
ファイル: RichObject.cs プロジェクト: nicolasmaurice/Rant
 public RichObject(Stringe token, RichObjectKeyValue[] values)
     : base(token)
 {
     Type   = ActionValueType.Object;
     Values = new Dictionary <string, RichActionBase>();
     foreach (RichObjectKeyValue val in values)
     {
         Values[val.Name] = val.Value;
     }
 }
コード例 #52
0
ファイル: Util.cs プロジェクト: W-h-a-t-s/Rant
 public static RichActionBase ConvertToAction(Stringe token, object value)
 {
     if (value is double)
         return new RichNumber((double)value, token);
     if (value is string)
         return new RichString((string)value, token);
     if (value is bool)
         return new RichBoolean(token, (bool)value);
     return value as RichActionBase;
 }
コード例 #53
0
 private static bool Extern(Interpreter interpreter, Source source, Stringe tagname, TagArg[] args)
 {
     var name = args[0].GetString();
     var result = interpreter.Engine.Hooks.Call(name);
     if (result == null)
     {
         throw new ProcessusException(source, tagname, "A hook with the name '" + name + "' does not exist.");
     }
     interpreter.Print(result);
     return false;
 }
コード例 #54
0
ファイル: RichGroup.cs プロジェクト: W-h-a-t-s/Rant
		public RichGroup(IEnumerable<RichActionBase> actions, Stringe token, string sourceName)
			: base(token)
		{
			Type = ActionValueType.Number;
			Actions = (List<RichActionBase>)actions;
			if (Actions.Any(x => x is RichConcatOperator))
				Type = ActionValueType.String;
			Condense();
			_origin = token;
            _sourceName = sourceName;
		}
コード例 #55
0
		internal RantCompilerException(string name, Stringe source, string message) 
			: base(source != null 
				  ? $"{name} @ Line {source.Line}, Col {source.Column}: {message}"
				  : $"{name}: {message}")
		{
			if (source == null) return;
			Line = source.Line;
			Column = source.Column;
			Index = source.Offset;
			Length = source.Length;
		}
コード例 #56
0
ファイル: REAFor.cs プロジェクト: inkadnb/Rant
 public REAFor(
     Stringe token,
     string indexName,
     RantExpressionAction body,
     RantExpressionAction expr)
     : base(token)
 {
     _expr = expr;
     _body = body;
     _indexName = indexName;
 }
コード例 #57
0
ファイル: RichFor.cs プロジェクト: W-h-a-t-s/Rant
 public RichFor(
     Stringe token,
     string indexName,
     RichActionBase body,
     RichActionBase expr)
     : base(token)
 {
     _expr = expr;
     _body = body;
     _indexName = indexName;
 }
コード例 #58
0
ファイル: ManhoodException.cs プロジェクト: dandrews/Manhood
 internal ManhoodException(Source source, Stringe token, string message = "A generic syntax error was encountered.") : base((token != null ? ("(Ln " + token.Line + ", Col " + token.Column + ") - ") : "") + message)
 {
     _source = source.Code;
     if (token != null)
     {
         _line = token.Line;
         _col = token.Column;
         _index = token.Offset;
         _length = token.Length;
     }
     else
     {
         _line = _col = 1;
         _index = 0;
         _length = 0;
     }
 }
コード例 #59
0
 internal RantRuntimeException(RantPattern source, Stringe token, string message = "A generic syntax error was encountered.") 
     : base((token != null ? ($"({source.Name} @ Ln {token.Line}, Col {token.Column}): ") : "") + message)
 {
     _source = source.Code;
     if (token != null)
     {
         _line = token.Line;
         _col = token.Column;
         _index = token.Offset;
         _length = token.Length;
     }
     else
     {
         _line = _col = 1;
         _index = 0;
         _length = 0;
     }
 }
コード例 #60
0
ファイル: RABlock.cs プロジェクト: katnapper323/Rant
		public RABlock(Stringe range, List<RantAction> items,
			List<_<int, RantAction>> dynamicWeights, List<_<int, double>> constantWeights)
			: base(range)
		{
			_items.AddRange(items);
			_count = items.Count;
			if (dynamicWeights != null && constantWeights != null)
			{
				_dynamicWeights = dynamicWeights;
				_weights = new double[_count];
				for (int i = 0; i < _count; i++) _weights[i] = 1;
				foreach (var cw in constantWeights)
				{
					_weights[cw.Item1] = cw.Item2;
				}
				_constantWeightSum = _weights.Sum() - _dynamicWeights.Count;
				_weighted = true;
			}
		}