using System.Collections.Generic;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CSharp;
"string s = \"Hello,\"+\"\\r\\n\"+\r\n"+
"int x = 42; /* Inline comment \r\n"+
Console.WriteLine("```");
Console.WriteLine("```");
var tree = CSharpSyntaxTree.ParseText(code);
var root = tree.GetRoot();
var elements = new List<string>();
foreach (var token in root.DescendantTokens())
elements.Add($"Token: {token.Kind()} '{ReplaceCRLF(token.Text)}' {token.Value}'");
foreach (var trivia in token.LeadingTrivia)
elements.Add($" /-- LeadingTrivia: {trivia.Kind()} '{ReplaceCRLF(trivia.ToString())}'");
foreach (var trivia in token.TrailingTrivia)
elements.Add($" \\-- TrailingTrivia: {trivia.Kind()} FullString: '{trivia.ToFullString()}' ToString: '{ReplaceCRLF(trivia.ToString())}'");
foreach (var element in elements)
Console.WriteLine(element);
static string ReplaceCRLF(string input)
return input.Replace("\r", "<CR>").Replace("\n", "<LF>");