Распознавание в тексте комментариев и кода программы - 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);
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4 из 5
Похожие ответы