/// <summary> /// 使用指定的范围初始化 <see cref="SourceRange"/> 类的新实例。 /// </summary> /// <param name="range">要设置的范围。</param> /// <exception cref="ArgumentException"><paramref name="range"/> 表的不是有效的范围。</exception> public SourceRange(ISourceLocatable range) { CommonExceptions.CheckSourceLocatable(range, "range"); Contract.EndContractBlock(); if (range != null) { this.start = range.Start; this.end = range.End; } }
/// <summary> /// 使用指定的范围初始化 <see cref="SourceRange"/> 类的新实例。 /// </summary> /// <param name="range">要设置的范围。</param> /// <exception cref="ArgumentException"><paramref name="range"/> 表的不是有效的范围。</exception> public SourceRange(ISourceLocatable range) { CommonExceptions.CheckSourceLocatable(range, nameof(range)); Contract.EndContractBlock(); if (range != null) { start = range.Start; end = range.End; } }
/// <summary> /// 使用指定的源文件名称和范围初始化 <see cref="SourceFileRange"/> 类的新实例。 /// </summary> /// <param name="fileName">源文件的名称。</param> /// <param name="range">要设置的范围。</param> /// <exception cref="ArgumentException"><paramref name="range"/> 表的不是有效的范围。</exception> public SourceFileRange(string fileName, ISourceLocatable range) { CommonExceptions.CheckSourceLocatable(range, "range"); Contract.EndContractBlock(); this.fileName = fileName; if (range != null) { this.start = range.Start; this.end = range.End; } }
/// <summary> /// 使用词法单元的相关信息初始化 <see cref="Token{T}"/> 类的新实例。 /// </summary> /// <param name="id">标识符。</param> /// <param name="text">文本。</param> /// <param name="range">位置范围。</param> public Token(T id, string text, ISourceLocatable range) { CommonExceptions.CheckSourceLocatable(range, nameof(range)); Contract.EndContractBlock(); if (range != null) { start = range.Start; end = range.End; } this.id = id; this.text = text; }
/// <summary> /// 使用词法单元的相关信息初始化 <see cref="Token{T}"/> 类的新实例。 /// </summary> /// <param name="id">标识符。</param> /// <param name="text">文本。</param> /// <param name="range">位置范围。</param> /// <param name="value">词法单元的值。</param> public Token(T id, string text, ISourceLocatable range, object value) { CommonExceptions.CheckSourceLocatable(range, "range"); Contract.EndContractBlock(); if (range != null) { this.start = range.Start; this.end = range.End; } this.id = id; this.text = text; this.value = value; }