Example #1
0
 public State(Interpreter ii, RantPattern source, ChannelStack output)
 {
     _interpreter  = ii;
     _output       = output;
     _reader       = new PatternReader(source);
     _sharesOutput = (output == _interpreter._output && _interpreter.PrevState != null) || (_interpreter._stateStack.Any() && output == _interpreter._stateStack.Peek().Output);
 }
Example #2
0
 private State(Interpreter ii, RantPattern derivedSource, IEnumerable <Token <R> > tokens,
               ChannelStack output)
 {
     _interpreter  = ii;
     _output       = output;
     _reader       = new PatternReader(new RantPattern(derivedSource, tokens));
     _sharesOutput = (output == _interpreter._output && _interpreter.PrevState != null) || (_interpreter._stateStack.Any() && output == _interpreter._stateStack.Peek().Output);
 }
Example #3
0
 private State(Interpreter ii, Source derivedSource, IEnumerable <Token <TokenType> > tokens,
               ChannelStack output)
 {
     _interpreter  = ii;
     _output       = output;
     _reader       = new SourceReader(new Source(derivedSource.Name, derivedSource.Type, tokens, derivedSource.Code));
     _sharesOutput = (output == _interpreter._output && _interpreter.PrevState != null) || (_interpreter._stateStack.Any() && output == _interpreter._stateStack.Peek().Output);
 }
Example #4
0
 public Interpreter(Engine engine, Source input, RNG rng, int limitChars = 0)
 {
     _mainSource = input;
     _rng        = rng;
     _engine     = engine;
     _charLimit  = new Limit <int>(0, limitChars, (a, b) => a + b, (a, b) => b == 0 || a <= b);
     _output     = new ChannelStack(_charLimit);
     _mainState  = State.Create(input, this);
 }
Example #5
0
 public static State CreateSub(RantPattern derivedSource, IEnumerable <Token <R> > tokens,
                               Interpreter interpreter, ChannelStack output = null)
 {
     return(new State(interpreter, derivedSource, tokens, output ?? new ChannelStack(interpreter.FormatStyle, interpreter.CharLimit)));
 }
Example #6
0
 public static State CreateDerivedDistinct(Source derivedSource, IEnumerable <Token <TokenType> > tokens,
                                           Interpreter interpreter, ChannelStack output = null)
 {
     return(new State(interpreter, derivedSource, tokens, output ?? new ChannelStack(interpreter.CharLimit)));
 }