public void Restore(MetaDslx.Compiler.MetaModelLexer lexer) { lexer.CurrentMode = this._mode; lexer.ModeStack.Clear(); if (this._modeStack != null) { foreach (var item in this._modeStack) { lexer.ModeStack.Push(item); } } lexer.Type = this._type; lexer.Channel = this._channel; lexer.State = this._state; }
private int SaveState(MetaDslx.Compiler.MetaModelLexer lexer) { int result = 0; LanguageScannerState state = new LanguageScannerState(lexer); if (!this.inverseStates.TryGetValue(state, out result)) { result = ++lastState; this.states.Add(result, state); this.inverseStates.Add(state, result); } return result; }
public LanguageScannerState(MetaDslx.Compiler.MetaModelLexer lexer) { this._mode = lexer.CurrentMode; this._modeStack = lexer.ModeStack.Count > 0 ? new List<int>(lexer.ModeStack) : null; this._type = lexer.Type; this._channel = lexer.Channel; this._state = lexer.State; }
private void LoadState(int state, MetaDslx.Compiler.MetaModelLexer lexer) { LanguageScannerState value = default(LanguageScannerState); this.states.TryGetValue(state, out value); value.Restore(lexer); }