Repository URL to install this package:
|
Version:
2023.12.1 ▾
|
/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
* Use of this file is governed by the BSD 3-clause license that
* can be found in the LICENSE.txt file in the project root.
*/
using System;
using System.IO;
using System.Text;
using Antlr4.Runtime;
using Antlr4.Runtime.Misc;
using Antlr4.Runtime.Sharpen;
namespace Antlr4.Runtime
{
/// <summary>Utility class to create <see cref="ICharStream"/>s from various sources of
/// string data.
///
/// The methods in this utility class support the full range of
/// Unicode code points up to U+10FFFF, unlike <see cref="AntlrInputStream"/>,
/// which is limited to 16-bit Unicode code units up to U+FFFF.
/// </summary>
public static class CharStreams
{
/// <summary>Creates an <see cref="ICharStream"/> given a path to a UTF-8
/// encoded file on disk.
///
/// Reads the entire contents of the file into the result before returning.
/// </summary>
public static ICharStream fromPath(string path)
{
return fromPath(path, Encoding.UTF8);
}
/// <summary>Creates an <see cref="ICharStream"/> given a path to a
/// file on disk and the encoding of the bytes contained in the file.
///
/// Reads the entire contents of the file into the result before returning.
/// </summary>
public static ICharStream fromPath(string path, Encoding encoding)
{
var pathContents = File.ReadAllText(path, encoding);
var result = new CodePointCharStream(pathContents);
result.name = path;
return result;
}
/// <summary>Creates an <see cref="ICharStream"/> given an opened
/// <see cref="TextReader"/>.
///
/// Reads the entire contents of the TextReader then closes the reader before returning.
/// </summary>
public static ICharStream fromTextReader(TextReader textReader)
{
try {
var textReaderContents = textReader.ReadToEnd();
return new CodePointCharStream(textReaderContents);
} finally {
textReader.Dispose();
}
}
/// <summary>Creates an <see cref="ICharStream"/> given an opened
/// <see cref="Stream"/> from which UTF-8 encoded bytes can be read.
///
/// Reads the entire contents of the stream into the result then
/// closes the stream before returning.
/// </summary>
public static ICharStream fromStream(Stream stream)
{
return fromStream(stream, Encoding.UTF8);
}
/// <summary>Creates an <see cref="ICharStream"/> given an opened
/// <see cref="Stream"/> as well as the encoding of the bytes
/// to be read from the stream.
///
/// Reads the entire contents of the stream into the result then
/// closes the stream before returning.
/// </summary>
public static ICharStream fromStream(Stream stream, Encoding encoding)
{
using (StreamReader sr = new StreamReader(stream, encoding, false)) {
return fromTextReader(sr);
}
}
/// <summary>Creates an <see cref="ICharStream"/> given a <see cref="string"/>.
/// </summary>
public static ICharStream fromString(string s)
{
return new CodePointCharStream(s);
}
}
}