Распознавание в тексте комментариев и кода программы - C#
Формулировка задачи:
Добрый день. Иммется такая задача. Нужно написать программу, которая будет считывать файл, распозновать комментарии и код. К примеру есть такой файл:
В конечном итоге программа должна выводить в консоль что-то типо этого:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace rowscan
{
// Начало программы
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Это строчка 1");
/*************/
Console.WriteLine("Это строчка 2");
Console.WriteLine("А между ними 2 комментария");
}
}
}
Строки кода: 1, 2, 3, 4, 6, 7, 9, 10, 11, 12, 13, 15, 16, 17, 18
Строки комментариев: 8, 14
Решение задачи: «Распознавание в тексте комментариев и кода программы»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using ICSharpCode.NRefactory.CSharp;
class Program
{
static IEnumerable<T> GetNodes<T>(IEnumerable<AstNode> nodes) where T: AstNode
{
foreach(var node in nodes)
{
if (node is T)
yield return (T)node;
if (node.Children.Count() > 0)
foreach (var subNode in GetNodes<T>(node.Children))
yield return subNode;
}
}
static void Main(string[] args)
{
CSharpParser parser = new CSharpParser();
var tree = parser.Parse(System.IO.File.OpenText("E:\\Program.cs"));
var comments = GetNodes<Comment>(tree.Children);
foreach (var comment in comments)
Console.WriteLine("Start: {0} Finish: {1} Text: {2}", comment.StartLocation.Line, comment.EndLocation.Line, comment.GetText());
Console.ReadKey(true);
}
}