Вот такой вот препроцессор.
От: c-smile Канада http://terrainformatica.com
Дата: 19.08.05 21:32
Оценка: 23 (3) +1
Захотелось мне вот чтобы было нечто позволяющее по струкутре вида:

var enumdef = 
{
  name:"test",
  members: 
  [
    { value: 1, name:"one" },
    { value: 2, name:"two" },
    { value: 3, name:"three"}
  ]
}


генерировать нечто типа (в С++)


struct test 
{
  enum _ 
  {
    one = 1, 
    two = 2, 
    three = 3, 
  };

  static const char* to_string( int n )
  {
    switch( n )
    {
      case 1: return "one";
      case 2: return "two";
      case 3: return "three";
      default: return 0;
    }
  }

  static int from_string( const char* str )
  {
      if( stricmp("one",str ) == 0 ) return 1;
      if( stricmp("two",str ) == 0 ) return 2;
      if( stricmp("three",str ) == 0 ) return 3;
      return 0;
  }

};


Подходов к автоматической генерации source code много.

Философически подумалось мне что подход в стиле формирования PHP pages или ASP для этого тоже будет полезным и удобным.

Написал вариацию ECMAScript и оформил ея в виде command line utility — эдакий local server pages engine.

Вот исходник скрипта формирующего enum для меня


<%
var enumdef = 
{
  name:"test",
  members: 
  [
    { value: 1, name:"one" },
    { value: 2, name:"two" },
    { value: 3, name:"three"}
  ]
}
%>

<%
function enumgen( enumdef ) 
{
%>
// enum <% =enumdef.name %>
struct <% =enumdef.name %> 
{
  enum _ 
  {
<% for( var i in enumdef.members )  { var item = enumdef.members[i]; %>
    <% =item.name%> = <% =item.value%>, 
<%}%>
  };
  
  static const char* to_string( int n )
  {
    switch( n )
    {
<% for( var i in enumdef.members ) { var item = enumdef.members[i]; %>
      case <% =item.value%>: return "<% =item.value%>";
<%}%>
      default: return 0;
    }
  }
  
  static int from_string( const char* str )
  {
<% for( var i in enumdef.members ) { var item = enumdef.members[i]; %>
      if( stricmp("<% =item.name%>",str ) == 0 ) return <% =item.value%>;
<%}%>
      return 0;
  }
};
<%
} // end of enumgen

enumgen( enumdef );

%>


Вот и все собственно...

----------------------------
Общая информация:

Основные "фичи":

1) Практически полная имплементация стандарта http://www.mozilla.org/js/language/E262.pdf, (во всяком случае асимптотически приближающаяся к оному.

2) Поддержка Client Script и Server Script:

Server Script это режим когда script вклеен в текст например в HTML конструкциями типа
text <% script %> text. Такой скрипт работает в процессе формирования страницы.

В режиме Client Script в HTMLayout позволяет обрабатывать события DOM элементов
включая события от стандартных HWND controls.

3) Поддерживается interactive mode (-i switch).

4) Работает на всех платформах поддерживаемых HTMLayout ( сейчас это Windows 32/64 и Windows Mobile )

5) Компилируемый ( -c switch ) — исходник компилируется в bytecode и можно этот bytecode сохранить в файл (.jsb) и запустить в последствии.

Примеры в tiscript_demo.zip:
enumgen.jsp
— генератор "smart enum" для С++ — по дефиниции enum строит структуру с методами to_string и from_string. Server Script mode sample.
try.js
— try/catch/finally exception handling.
re.js
— regular expressions demo.

tiscript это упрощенная версия моего c-smile.
Re: Вот такой вот препроцессор.
От: adontz Грузия http://adontz.wordpress.com/
Дата: 19.08.05 21:43
Оценка: :)
Здравствуйте, c-smile, Вы писали:

Имею аналогичные идеи, только у меня не JavaScript, а C#. Если одинаковая идея пришла двум разным людям, значит она полезная либо мы курили одну траву
A journey of a thousand miles must begin with a single step © Lau Tsu
Re: Вот такой вот препроцессор.
От: IT Россия linq2db.com
Дата: 20.08.05 00:56
Оценка: :))
Здравствуйте, c-smile, Вы писали:

CS>Захотелось мне вот чтобы было нечто позволяющее по струкутре вида:


Пора переходить на C#.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[2]: Вот такой вот препроцессор.
От: IT Россия linq2db.com
Дата: 20.08.05 01:06
Оценка:
Здравствуйте, adontz, Вы писали:

A>Имею аналогичные идеи, только у меня не JavaScript, а C#.


Вам, Рома, я могу только посоветовать учить мат. часть.

enum _
{
    one = 1,
    two = 2,
    three = 3
}

static void Main()
{
    Console.WriteLine(_.two.ToString());
    Console.WriteLine(Enum.Parse(typeof(_), "two"));
}
Если нам не помогут, то мы тоже никого не пощадим.
Re[3]: Вот такой вот препроцессор.
От: Павел Кузнецов  
Дата: 20.08.05 01:14
Оценка: +1
IT,

> A>Имею аналогичные идеи, только у меня не JavaScript, а C#.


> Вам, Рома, я могу только посоветовать учить мат. часть.

>
> <...>
>


Подозреваю, что речь шла об использовании C# в качестве скриптового языка ("у меня не JavaScript, а C#") для препроцессирования C++.
Posted via RSDN NNTP Server 2.0 beta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re: Вот такой вот препроцессор.
От: all-x Россия http://treedl.sf.net
Дата: 20.08.05 05:42
Оценка: 3 (2)
Здравствуйте, c-smile, Вы писали:

CS>Захотелось мне вот чтобы было нечто позволяющее по струкутре вида:

CS>...
CS>Подходов к автоматической генерации source code много.

CS>Философически подумалось мне что подход в стиле формирования PHP pages или ASP для этого тоже будет полезным и удобным.


CS>Написал вариацию ECMAScript и оформил ея в виде command line utility — эдакий local server pages engine.


Здесь есть две подзадачи:
1. Что описывать. Это исходные данные для генерации.
2. Чем генерировать. Тут от первой подзадачи жесткой зависимости нет.

У меня есть проект TreeDL, который позволяет описывать структуру деревьев
(изначально — abstract syntax tree) с типизированными узлами,
и определять операции над ними. Помимо языка описания есть инструмент,
который генерирует набор классов, соответствующих узлам, всяческие визитеры,
обходчики дерева и т.п. Конечно, есть возможность дописывать свои модули генерации,
в зависимости от потребностей. Сам инструмент исторически использует собственную библиотеку
кодогенерации (и пользователи отказываются переходить на что-то другое — почти все потребности
удовлетворены), но можно пользоваться любую template engine, которая умеет работать
с java beans — дерево входного текста само описано на TreDL, интерфейс хорошо описан и открыт
для плагинов.
Генератор сейчас есть для Java, в предыдущей версии был и для C#, дойдут руки — обновлю и его.
Инструмент использовался и используется в наших проектах по созданию спецификационных
расширений языка программирования (http://www.unitesk.com), достаточно стабилен, развивается.
Ну и конечно это open source (http://treedl.sf.net). Помимо самого инструмента
открыт, например, Java 5 frontend — парсер, который строит TreeDL дерево
и принтер, который обратно Java печатает.
Так что если надо для Java какую-то кодогенерацию сделать, или препроцессор умный
(например, пару statements добавить, которые можно в Java странслировать) —
большая часть работы уже сделана
Будет и semantic analyzer для этого дерева.
C# frontend в планах, но руки не доходят — парсер и дерево написаны, но надо адаптировать.
Ежели кому-то интересно адаптировать — могу выложить сырые версии.
Re[2]: Вот такой вот препроцессор.
От: raskin Россия  
Дата: 20.08.05 05:48
Оценка:
adontz wrote:
> Имею аналогичные идеи, только у меня не JavaScript, а C#. Если
> одинаковая идея пришла двум разным людям, значит она полезная либо мы
> курили одну траву

Пишу так же на Паскаль. Правда скрипты на Паскаль же. Лень (пока) делать
интерпретатор. Идея явно полезная.
Posted via RSDN NNTP Server 2.0 beta
Re: Извиняюсь, забыл ссылку
От: c-smile Канада http://terrainformatica.com
Дата: 20.08.05 06:40
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Примеры в tiscript_demo.zip:

CS>enumgen.jsp
CS>- генератор "smart enum" для С++ — по дефиниции enum строит структуру с методами to_string и from_string. Server Script mode sample.
CS>try.js
CS>- try/catch/finally exception handling.
CS>re.js
CS>- regular expressions demo.

http://terrainformatica.com/tiscript/tiscript_demo.zip
Re[2]: Вот такой вот препроцессор.
От: c-smile Канада http://terrainformatica.com
Дата: 20.08.05 06:43
Оценка:
Здравствуйте, IT, Вы писали:

CS>>Захотелось мне вот чтобы было нечто позволяющее по струкутре вида:


IT>Пора переходить на C#.


Мне не только enum генерировать надо в проектах. HTML собственно тоже надо.
Просто ASP/PHP как локальный engine оказался вельми здравой идеей.
Re[2]: Вот такой вот препроцессор.
От: c-smile Канада http://terrainformatica.com
Дата: 20.08.05 06:51
Оценка:
Здравствуйте, all-x, Вы писали:

AX>Здравствуйте, c-smile, Вы писали:


CS>>Захотелось мне вот чтобы было нечто позволяющее по струкутре вида:

CS>>...
CS>>Подходов к автоматической генерации source code много.

CS>>Философически подумалось мне что подход в стиле формирования PHP pages или ASP для этого тоже будет полезным и удобным.

CS>>Написал вариацию ECMAScript и оформил ея в виде command line utility — эдакий local server pages engine.

AX>Здесь есть две подзадачи:

AX>1. Что описывать. Это исходные данные для генерации.
AX>2. Чем генерировать. Тут от первой подзадачи жесткой зависимости нет.

...красота поскипана...

собственно моя идея про "Чем генерировать" как раз и заключается в
том что в качестве такого генератора выступает проверенный метод Server Pages.
Как один из подходов.

Технология то уже изъеденная. И каждый приличный боец нынче знаком с PHP, Perl, JavaScript со товарищи.

Как кстати такой метод генерации текста называется по науке?
Re[3]: Вот такой вот препроцессор.
От: c-smile Канада http://terrainformatica.com
Дата: 20.08.05 06:54
Оценка:
Здравствуйте, raskin, Вы писали:

R>adontz wrote:

>> Имею аналогичные идеи, только у меня не JavaScript, а C#. Если
>> одинаковая идея пришла двум разным людям, значит она полезная либо мы
>> курили одну траву

R>Пишу так же на Паскаль. Правда скрипты на Паскаль же. Лень (пока) делать

R>интерпретатор. Идея явно полезная.

Ну дык какой-нибудь LUA приделать для этого и гори оно огнем...
Re[4]: Вот такой вот препроцессор.
От: raskin Россия  
Дата: 20.08.05 06:58
Оценка:
c-smile wrote:
>> > Имею аналогичные идеи, только у меня не JavaScript, а C#. Если
>> > одинаковая идея пришла двум разным людям, значит она полезная либо мы
>> > курили одну траву
>
> R>Пишу так же на Паскаль. Правда скрипты на Паскаль же. Лень (пока) делать
> R>интерпретатор. Идея явно полезная.
>
> Ну дык какой-нибудь LUA приделать для этого и гори оно огнем...

Да ну его.. Если скрипты маленькие — оно и на компиляторе не тормозит. А
когда соберусь доделывать — то и интерпретатор Паскаль найду/напишу.
Posted via RSDN NNTP Server 2.0 beta
Re: Вот такой вот препроцессор.
От: lxa http://aliakseis.livejournal.com
Дата: 20.08.05 08:21
Оценка:
Здравствуйте, c-smile, Вы писали:
...
CS>генерировать нечто типа (в С++)

CS>

CS>struct test 
CS>{
CS>  enum _ 
CS>  {
CS>    one = 1, 
CS>    two = 2, 
CS>    three = 3, 
CS>  };

CS>  static const char* to_string( int n )
...

CS>  static int from_string( const char* str )
...

CS>};

CS>


CS>Подходов к автоматической генерации source code много.

...
CS>генератор "smart enum" для С++
...

Ну, в C/C++ уже есть препроцессор вполне могущий осилить smart enum-ы

Вот как например можно подойти к enum-ам (в конце):
http://www.codeguru.com/Cpp/Cpp/cpp_mfc/templates/article.php/c4137
или вот еще:
http://www.codeguru.com/Cpp/Cpp/cpp_mfc/serial/article.php/c8083
Re[4]: Вот такой вот препроцессор.
От: adontz Грузия http://adontz.wordpress.com/
Дата: 20.08.05 10:42
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Подозреваю, что речь шла об использовании C# в качестве скриптового языка ("у меня не JavaScript, а C#") для препроцессирования C++.


Вот именно.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[3]: Вот такой вот препроцессор.
От: adontz Грузия http://adontz.wordpress.com/
Дата: 20.08.05 10:44
Оценка: :)
Здравствуйте, IT, Вы писали:

IT>Вам, Рома, я могу только посоветовать учить мат. часть.

IT>
IT>enum _
IT>{
IT>    one = 1,
IT>    two = 2,
IT>    three = 3
IT>}

IT>static void Main()
IT>{
IT>    Console.WriteLine(_.two.ToString());
IT>    Console.WriteLine(Enum.Parse(typeof(_), "two"));
IT>}
IT>


Ну для примитивных задачек встроенные средства .Net действительно подходят. Только вот задачки в жизни бывают не только примитивные и встроенные средства быстро заканчиваются. Ну да ты наверное таких пока не решал
A journey of a thousand miles must begin with a single step © Lau Tsu
Re: Вот такой вот препроцессор.
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.08.05 11:46
Оценка:
Здравствуйте, c-smile, Вы писали:

Скачай КодСмит и не мучайся.
... << RSDN@Home 1.2.0 alpha rev. 591>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Вот такой вот препроцессор.
От: adontz Грузия http://adontz.wordpress.com/
Дата: 20.08.05 12:02
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Скачай КодСмит и не мучайся.


Не скачай, а купи
A journey of a thousand miles must begin with a single step © Lau Tsu
Re: Вот такой вот препроцессор.
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 20.08.05 12:46
Оценка: :))) :)
Здравствуйте, c-smile, Вы писали:

CS>Захотелось мне вот чтобы было нечто позволяющее по струкутре вида:


CS>
CS>var enumdef = 
CS>{
CS>  name:"test",
CS>  members: 
CS>  [
CS>    { value: 1, name:"one" },
CS>    { value: 2, name:"two" },
CS>    { value: 3, name:"three"}
CS>  ]
CS>}
CS>


А так пойдет (Ruby)?

require 'enumdef'

enumdef {
    name "test"
    members [
        { :value => 1, :name => "one" },
        { :value => 2, :name => "two" },
        { :value => 3, :name => "three" }
    ]
}


Результат:

struct test
{
    enum _
    {
        one = 1,
        two = 2,
        three = 3
    };

    static const char * to_string( n )
    {
        switch( n )
        {
            case 1: return "one";
            case 2: return "two";
            case 3: return "three";
            default: return 0;
        }
    }

    static int from_string( const char * str )
    {
        if( 0 == stricmp( str, "one" ) return 1;
        if( 0 == stricmp( str, "two" ) return 2;
        if( 0 == stricmp( str, "three" ) return 3;
        return 0;
    }
};



CS>Подходов к автоматической генерации source code много.


Это точно.

CS>Философически подумалось мне что подход в стиле формирования PHP pages или ASP для этого тоже будет полезным и удобным.


А мне Ruby

CS>Написал вариацию ECMAScript и оформил ея в виде command line utility — эдакий local server pages engine.


Я на Ruby (файл enumdef.rb):

module Enumdef_Impl

    class    Enum_Params

        def initialize
            @name = nil
            @members = []
        end

        def name( a_name )
            @name = a_name
        end

        def members( a_members )
            @members = a_members
        end

        def generate_name
            @name
        end

        def generate_enum_def
            @members.collect { |m|
                "#{m[ :name ]} = #{m[ :value ]}"
            }.join( ",\n\t\t" )
        end

        def generate_to_string_cases
            @members.collect { |m|
                "case #{m[ :value ]}: return \"#{m[ :name ]}\""
            }.join( ";\n\t\t\t" )
        end

        def generate_from_string_cases
            @members.collect { |m|
                "if( 0 == stricmp( str, \"#{m[ :name ]}\" ) return #{m[ :value ]}"
            }.join( ";\n\t\t" )
        end
    end

end # module Enumdef_Impl

def enumdef( &cmd )
    e = Enumdef_Impl::Enum_Params.new
    e.instance_eval( &cmd )

    puts <<VERBATIM
struct #{e.generate_name}
{
    enum _
    {
        #{e.generate_enum_def}
    };

    static const char * to_string( n )
    {
        switch( n )
        {
            #{e.generate_to_string_cases};
            default: return 0;
        }
    }

    static int from_string( const char * str )
    {
        #{e.generate_from_string_cases};
        return 0;
    }
};
VERBATIM

end


CS>Вот и все собственно...


Аналогично...

Небольшой комментарий. Если запускать "ryby -renumdef <some-file.rb>", то можно обойтись без первой директивы require. Тогда получится чистая декларативность:
enumdef {
    name "test"
    members [
        { :value => 1, :name => "one" },
        { :value => 2, :name => "two" },
        { :value => 3, :name => "three" }
    ]
}





Ссылки на статьи про возможности метапрограммирования на Ruby я давал здесь: Re[2]: Metaprogramming et al: Ruby?
Автор: eao197
Дата: 19.08.05





Похоже, что скоро к Сергею Губанову с Oberon, к VladD2 с C# и мне с Ruby будет в полной мере относится анекдот:

Из ленты новостей: "Недавно геологами в Сибири был найден мальчик, воспитанный в тайге дятлами. Через три дня он всех задолбал"...

... << RSDN@Home 1.1.4 stable rev. 510>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[3]: Вот такой вот препроцессор.
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.08.05 13:08
Оценка:
Здравствуйте, adontz, Вы писали:

A>Не скачай, а купи


A>http://www.codesmithtools.com/
... << RSDN@Home 1.2.0 alpha rev. 591>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Вот такой вот препроцессор.
От: adontz Грузия http://adontz.wordpress.com/
Дата: 20.08.05 13:18
Оценка:
Здравствуйте, VladD2, Вы писали:

A>>Не скачай, а купи

A>>http://www.codesmithtools.com/

Есть Trial а не FreeWare версия
http://www.codesmithtools.com/store/pricing.aspx
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[2]: Вот такой вот препроцессор.
От: c-smile Канада http://terrainformatica.com
Дата: 20.08.05 17:12
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, c-smile, Вы писали:


VD>Скачай КодСмит и не мучайся.


А зачем он мне нужен?
Re[4]: Вот такой вот препроцессор.
От: IT Россия linq2db.com
Дата: 20.08.05 18:12
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Подозреваю, что речь шла об использовании C# в качестве скриптового языка ("у меня не JavaScript, а C#") для препроцессирования C++.


И в чём проблема?
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[2]: Вот такой вот препроцессор.
От: c-smile Канада http://terrainformatica.com
Дата: 20.08.05 18:17
Оценка:
Здравствуйте, eao197, Вы писали:

E>Похоже, что скоро к Сергею Губанову с Oberon, к VladD2 с C# и мне с Ruby будет в полной мере относится анекдот:

E>

E>Из ленты новостей: "Недавно геологами в Сибири был найден мальчик, воспитанный в тайге дятлами. Через три дня он всех задолбал"...



Ruby хороший язык, Python тоже хороший

Но мне как-то ближе кракозябры { и }

И на JavaScript есть ECMA стандарт....
Re[5]: Вот такой вот препроцессор.
От: c-smile Канада http://terrainformatica.com
Дата: 20.08.05 18:21
Оценка:
Здравствуйте, IT, Вы писали:

IT>Здравствуйте, Павел Кузнецов, Вы писали:


ПК>>Подозреваю, что речь шла об использовании C# в качестве скриптового языка ("у меня не JavaScript, а C#") для препроцессирования C++.


IT>И в чём проблема?


А может ли C# компилятор понять такое

C# final code
<% C# meta code %>
C# final code

?
Re[5]: Вот такой вот препроцессор.
От: Павел Кузнецов  
Дата: 21.08.05 00:11
Оценка:
IT,

> ПК>Подозреваю, что речь шла об использовании C# в качестве скриптового языка ("у меня не JavaScript, а C#") для препроцессирования C++.


> И в чём проблема?


Просто в таком случае твой пример на C#
Автор: IT
Дата: 20.08.05
не в тему
Posted via RSDN NNTP Server 2.0 beta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[3]: Вот такой вот препроцессор.
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 21.08.05 06:43
Оценка: 1 (1) +1 :)
Здравствуйте, c-smile, Вы писали:

CS>Ruby хороший язык, Python тоже хороший


CS>Но мне как-то ближе кракозябры { и }


У каждого свои недостатки

CS>И на JavaScript есть ECMA стандарт....


Имхо, сейчас это вообще ничего не определяет. На Java вообще нет стандарта. Зато сама Java как стандарт. На C++ есть стандарт. При этом масса компиляторов, которые ему не соответствуют. Был когда-то стандарт объектных баз данных ODMG. Да сплыл.

На Ruby и Python стандарта нет, зато сами Ruby и Python есть на таком количестве платформ, что иным стандартам и не снилось.

Но это уже совсем другая история...
... << RSDN@Home 1.1.4 stable rev. 510>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[2]: Вот такой вот препроцессор.
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 21.08.05 07:24
Оценка:
all-x,

AX>У меня есть проект TreeDL, который позволяет описывать структуру деревьев

AX>(изначально — abstract syntax tree) с типизированными узлами,
AX>и определять операции над ними.

Как это соотносится с R#? Твой проект и R# решают разные задачи или одну и ту же?
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[4]: Вот такой вот препроцессор.
От: c-smile Канада http://terrainformatica.com
Дата: 21.08.05 07:26
Оценка: :))) :))) :))) :))) :)
Здравствуйте, eao197, Вы писали:

E>На Ruby и Python стандарта нет, зато сами Ruby и Python есть на таком количестве платформ, что иным стандартам и не снилось.


E>Но это уже совсем другая история...


Про Python была такая история...

На вечеринке в ActiveState надравшись текиловки нашел благодатного
слушателя (он был тоже под текилой) и все ему как н духу рассказал шо я думаю про Питон
и почему пацаны должны юзать c-smile...
Оказалось это был сам Гвидо ( http://www.python.org/~guido/ )
Re[3]: Вот такой вот препроцессор.
От: all-x Россия http://treedl.sf.net
Дата: 21.08.05 09:38
Оценка:
Здравствуйте, Lazy Cjow Rhrr, Вы писали:

LCR>all-x,


AX>>У меня есть проект TreeDL, который позволяет описывать структуру деревьев

AX>>(изначально — abstract syntax tree) с типизированными узлами,
AX>>и определять операции над ними.

LCR>Как это соотносится с R#? Твой проект и R# решают разные задачи или одну и ту же?


Скажем так, TreeDL можно было бы использовать при разработке R#.
R# похож на то, как я вижу toolkit для работы с языком программирования:
кроме компилятора, который генерирует жестко заданный код, желательно бы иметь доступ к парсеру и дереву абстрактного ситнаксиса, для того чтобы иметь возможность расишрять язык, реализовавыть дополнительные анализаторы и кодогенераторы.
TreeDL помогает писать такие toolkit'ы, задавая основную их часть — структуру дерева.
Re[5]: Вот такой вот препроцессор.
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 21.08.05 10:27
Оценка:
Здравствуйте, c-smile, Вы писали:

E>>На Ruby и Python стандарта нет, зато сами Ruby и Python есть на таком количестве платформ, что иным стандартам и не снилось.


E>>Но это уже совсем другая история...


CS>Про Python была такая история...


CS>На вечеринке в ActiveState надравшись текиловки нашел благодатного

CS>слушателя (он был тоже под текилой) и все ему как н духу рассказал шо я думаю про Питон
CS>и почему пацаны должны юзать c-smile...
CS>Оказалось это был сам Гвидо ( http://www.python.org/~guido/ )

Ну, а он что?
... << RSDN@Home 1.1.4 stable rev. 510>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[6]: Вот такой вот препроцессор.
От: SchweinDeBurg Россия http://zarezky.spb.ru/
Дата: 21.08.05 10:43
Оценка: 10 (1)
Здравствуйте, eao197, Вы писали:

E>Ну, а он что?


Штрафной изолятор, ночь. За стеной, позвякивая наручниками, бродит
Анаги. Опер Борташевич говорит мне:
— Конечно, всякое бывает. Люди нервные, эгоцентричны до предела...
Например? Раз мне голову на лесоповале хотели отпилить бензопилой "Дружба".
— И что? — спросил я.
— Ну, что... Бензопилу отобрал и морду набил.
— Ясно.
— С топором была история на пересылке.
— И что? Чем кончилась?
— Отнял топор, дал по роже...
— Понятно...
— Один чифирной меня с ножом прихватывал.
— Нож отобрали и в морду?
Борташевич внимательно посмотрел на меня, затем расстегнул гимнастерку.
Я увидел маленький, белый, леденящий душу шрам...


(c) Сергей Довлатов, "Зона"
[ posted via RSDN@Home 1.1.4 stable SR1 r568, accompanied by Led Zeppelin — Brown-Yr-Aur Stomp ]
- Искренне ваш, Поросенок Пафнутий ~ ICQ#116846877
In Windows, there’s always a catch… © Paul DiLascia
Re[7]: Вот такой вот препроцессор.
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 21.08.05 11:47
Оценка: :))
Здравствуйте, SchweinDeBurg, Вы писали:

E>>Ну, а он что?


SDB>

SDB> Борташевич внимательно посмотрел на меня, затем расстегнул гимнастерку.
SDB>Я увидел маленький, белый, леденящий душу шрам...


SDB>(c) Сергей Довлатов, "Зона"


Так вот и интересно, шрам у кого остался, у Гвидо или у c-smile?
... << RSDN@Home 1.1.4 stable rev. 510>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[8]: Вот такой вот препроцессор.
От: SchweinDeBurg Россия http://zarezky.spb.ru/
Дата: 21.08.05 11:57
Оценка: +2 :)))
Здравствуйте, eao197, Вы писали:

E>Так вот и интересно, шрам у кого остался, у Гвидо или у c-smile?


Я за брата Смайла!.. да я!... "поллитру? вот эту? вдребезги?.."
[ posted via RSDN@Home 1.1.4 stable SR1 r568, accompanied by Hammerfall — Stronger Than All ]
- Искренне ваш, Поросенок Пафнутий ~ ICQ#116846877
In Windows, there’s always a catch… © Paul DiLascia
Re[3]: Вот такой вот препроцессор.
От: VladD2 Российская Империя www.nemerle.org
Дата: 21.08.05 12:04
Оценка: -1 :)
Здравствуйте, c-smile, Вы писали:

CS>А зачем он мне нужен?


Чтобы не изобретать велосипеды.
... << RSDN@Home 1.2.0 alpha rev. 591>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Вот такой вот препроцессор.
От: IT Россия linq2db.com
Дата: 21.08.05 14:32
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Просто в таком случае твой пример на C#
Автор: IT
Дата: 20.08.05
не в тему


Т.е. ты считаешь, что для такой задачи лучше городить свой огород?
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[4]: Вот такой вот препроцессор.
От: IT Россия linq2db.com
Дата: 21.08.05 14:32
Оценка: +4 :))) :)
Здравствуйте, VladD2, Вы писали:

CS>>А зачем он мне нужен?


VD>Чтобы не изобретать велосипеды.


10-15 лет назад каждый уважающий себя программист писал текстовый редактор и оконную библиотеку. Сегодня их место заменили система плагинов и генератор кода. Так что это не велосипед, просто время такое
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[4]: Вот такой вот препроцессор.
От: Павел Кузнецов  
Дата: 21.08.05 16:35
Оценка: +1 :)
VladD2,

> CS>А зачем он мне нужен?

>
> Чтобы не изобретать велосипеды.

Насколько я вижу из сайта, CodeSmith не кроссплатформенный. Это делает его применение значительно ограниченным.
Posted via RSDN NNTP Server 2.0 beta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[7]: Вот такой вот препроцессор.
От: Павел Кузнецов  
Дата: 21.08.05 16:39
Оценка: +1
IT,

> ПК> Просто в таком случае твой пример на C#
Автор: IT
Дата: 20.08.05
не в тему

>
> Т.е. ты считаешь, что для такой задачи лучше городить свой огород?

Нет. Я считаю, что если нужен генератор, порождающий код на C++, то возможности C#, позволяющие на нем для этой задачи обходиться без генерации кода, здесь ничему не помогают.
Posted via RSDN NNTP Server 2.0 beta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[8]: Вот такой вот препроцессор.
От: IT Россия linq2db.com
Дата: 21.08.05 17:25
Оценка: +1 :)))
Здравствуйте, Павел Кузнецов, Вы писали:

>> Т.е. ты считаешь, что для такой задачи лучше городить свой огород?


ПК>Нет. Я считаю, что если нужен генератор, порождающий код на C++, то возможности C#, позволяющие на нем для этой задачи обходиться без генерации кода, здесь ничему не помогают.


Ну и ладно
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[3]: Вот такой вот препроцессор.
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 21.08.05 19:18
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Просто ASP/PHP как локальный engine оказался вельми здравой идеей.


А ASP.NET нет? И писать ничего не надо — http://www.codesmithtools.com/.

P.S. Замечу, что лично мне XSLT для этих целей показался более удобным.
... << RSDN@Home 1.2.0 alpha rev. 606>>
AVK Blog
Re[6]: Вот такой вот препроцессор.
От: c-smile Канада http://terrainformatica.com
Дата: 21.08.05 23:10
Оценка: 2 (2) :))
Здравствуйте, eao197, Вы писали:

E>Ну, а он что?


Ну вяло отбивался ( лайма кончилась, а соль была )
типа "ну и что что на VB похож? зато отступы какие!".
А я ему "Мля, ну ты же вроде умный пацан..."
Ну и так далее.
Цитаты утрированы, но демонстрируют уровень аргументации.
Если я все помню правильно .
Но морды не били, это точно.
Re[4]: Вот такой вот препроцессор.
От: c-smile Канада http://terrainformatica.com
Дата: 22.08.05 16:34
Оценка: 22 (2) +3 -1 :))
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, c-smile, Вы писали:


CS>>А зачем он мне нужен?


VD>Чтобы не изобретать велосипеды.


по поводу велосипедов...

Велосипеды — это нехилый бизнес.
Я столько новых моделей вижу и конца этому делу нет.

Вот например электрические байки которые я вижу на улицах здесь.











А ты говоришь "не изобретай"...

А самый богатый челеовек планеты (IKEA owner) вообще
изобретает табуретки...

Так чта мимо кассы твое заявление, Влад ...
Re[5]: Вот такой вот препроцессор.
От: PeterZT  
Дата: 22.08.05 18:24
Оценка: 23 (1)
http://www.codesmithtools.com/freeware.aspx
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[6]: Вот такой вот препроцессор.
От: adontz Грузия http://adontz.wordpress.com/
Дата: 22.08.05 18:34
Оценка:
Здравствуйте, PeterZT, Вы писали:

PZT>http://www.codesmithtools.com/freeware.aspx


Так это же старая версия
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[7]: Вот такой вот препроцессор.
От: PeterZT  
Дата: 23.08.05 03:50
Оценка: +1
Здравствуйте, adontz, Вы писали:

A>Так это же старая версия


Разница невелика
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[5]: Вот такой вот препроцессор.
От: dshe  
Дата: 23.08.05 06:36
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>>>А зачем он мне нужен?


VD>>Чтобы не изобретать велосипеды.


CS>по поводу велосипедов...


CS>Велосипеды — это нехилый бизнес.

CS>А самый богатый челеовек планеты (IKEA owner) вообще
CS>изобретает табуретки...

CS>Так чта мимо кассы твое заявление, Влад ...


Так может лучше переключить свое внимание с велосипедов на табуретки.

А вообще, те фотографии, которые ты привел, относятся скорее к усовершенствованию уже изобретенного велосипеда, чем к изобретению его заново.
--
Дмитро
Re[6]: Вот такой вот препроцессор.
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 23.08.05 07:15
Оценка:
dshe,

D>А вообще, те фотографии, которые ты привел, относятся скорее к усовершенствованию уже изобретенного велосипеда, чем к изобретению его заново.

Ну хорошо, а такой?


Здесь справедливость твоего утверждения будет сильно зависеть от того, как мы определим велосипед. Если мы к дельтаплану приделаем педали с винтом, будет ли это велосипедом?
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[6]: Вот такой вот препроцессор.
От: c-smile Канада http://terrainformatica.com
Дата: 23.08.05 07:17
Оценка:
Здравствуйте, dshe, Вы писали:

D>А вообще, те фотографии, которые ты привел, относятся скорее к усовершенствованию уже изобретенного велосипеда, чем к изобретению его заново.


Зело философический вопрос однако...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.