Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Вопрос про парсер.


Автор: compaq 28.5.2011, 09:44
Доброго времени суток.
Мне нужно сделать подобие CodeSmith.
В нашёл вот такую http://www.codeproject.com/KB/recipes/MixedContentParser.aspxв принципе всё понятно за исключением одной веши.
К примеру
Код

using System;
namespace HelloWorld
{
    class Hello 
    {
        static void Main() 
        {
            <% int x = 2 + 2; %>
            Console.WriteLine(<%= x%>);
        }
    }
}

Допустим я сделал шаблон, вставил в него разметку для парсера, запустил парсер извлёк с помощью регулярных выражений нужную разметку
но как быть с таким фрагментом <% int x = 2 + 2; %> этот код должен выполниться во время работы парсера над текстом. Я имею в виду что я хочу получить результат выражения а не само выражение.
То есть в результате работы парсера я хочу получить вот такой шаблон.
Код

using System;
namespace HelloWorld
{
    class Hello 
    {
        static void Main() 
        {
            Console.WriteLine(4);
        }
    }

Вопрос с помошью чего это можно реализовать?

Автор: jonie 28.5.2011, 10:49
рук?) Для того чтобы это сделать нужен почти полноценный компилятор (ну как минимум лексический, синтаксический парсер и дерево строить надо + язык описать).

Если вам надо своё - тогда вперед  читать курс лекций про Теорию комиляторов (и соотвествующую литературу).

Я думаю вам будет достаточно простого ASP.NET или TT шаблонов или Razor (это что уже готовое в .NET есть) - любой из них можно использовать без поднятия всяких веб серверов (например в консольном приложении)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)