using System; using System.Collections.Generic; using System.Security.Permissions; using AspClassic.Scripting.Runtime; namespace AspClassic.Scripting.Hosting; public sealed class TokenCategorizer : MarshalByRefObject { private readonly TokenizerService _tokenizer; public object CurrentState => _tokenizer.CurrentState; public SourceLocation CurrentPosition => _tokenizer.CurrentPosition; public bool IsRestartable => _tokenizer.IsRestartable; public ErrorSink ErrorSink { get { return _tokenizer.ErrorSink; } set { _tokenizer.ErrorSink = value; } } internal TokenCategorizer(TokenizerService tokenizer) { _tokenizer = tokenizer; } public void Initialize(object state, ScriptSource scriptSource, SourceLocation initialLocation) { _tokenizer.Initialize(state, scriptSource.SourceUnit.GetReader(), scriptSource.SourceUnit, initialLocation); } public TokenInfo ReadToken() { return _tokenizer.ReadToken(); } public bool SkipToken() { return _tokenizer.SkipToken(); } public IEnumerable ReadTokens(int characterCount) { return _tokenizer.ReadTokens(characterCount); } public bool SkipTokens(int characterCount) { return _tokenizer.SkipTokens(characterCount); } [SecurityPermission(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.Infrastructure)] public override object InitializeLifetimeService() { return null; } }