| File: parent\Shared\LanguageParser\CSharptokenizer.cs | Web Access |
| Project: Microsoft.Build.Tasks.csproj (Microsoft.Build.Tasks.Core) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Collections; using System.IO; #nullable disable namespace Microsoft.Build.Shared.LanguageParser { /* * Class: CSharpTokenizer * * Given C# sources, return an enumerator that will provide tokens one at a time. * */ internal sealed class CSharpTokenizer : IEnumerable { /* These are the tokens that are specific to the C# tokenizer. Tokens that should be shared with other tokenizers should go into Token.cs. */ internal class CharLiteralToken : Token { } // i.e. A char value. internal class NullLiteralToken : Token { } // i.e. A literal Null. internal class UnrecognizedStringEscapeToken : SyntaxErrorToken { } // An unrecognized string escape character was used. internal class EndOfFileInsideStringToken : SyntaxErrorToken { } // The file ended inside a string. internal class NewlineInsideStringToken : SyntaxErrorToken { } // The string has a newline embedded. internal class EndOfFileInsideCommentToken : SyntaxErrorToken { } // The file ended inside a multi-line comment. internal class OpenScopeToken : OperatorOrPunctuatorToken { } // i.e. "{" internal class CloseScopeToken : OperatorOrPunctuatorToken { } // i.e. "}" // The source lines private Stream _binaryStream = null; // Whether to force ANSI or not. private bool _forceANSI = false; /// <summary> /// Construct. /// </summary> /// <param name="binaryStream"></param> /// <param name="forceANSI"></param> internal CSharpTokenizer(Stream binaryStream, bool forceANSI) { _binaryStream = binaryStream; _forceANSI = forceANSI; } /* * Method: GetEnumerator * * Return a new token enumerator. */ public IEnumerator GetEnumerator() { return new CSharpTokenEnumerator(_binaryStream, _forceANSI); } } }