Парсер C# на Nemerle
От: hardcase Пират http://nemerle.org
Дата: 01.11.10 06:21
Оценка:
Здравствуйте, adontz, Вы писали:

A>Здравствуйте, Tom, Вы писали:


Tom>>1. Что значит Compiler As Service? Означает ли это что все елементы компилятора будет возможно реюзить. Скажем просто парсер C# можно ли будет использовать?


A>Я этого жду


Зачем ждать, когда уже он есть готовый
Автор: hardcase
Дата: 24.08.10
?
На дотнете и при том доступный в исходниках.

09.11.10 15:32: Ветка выделена из темы Compiler As Service — зачем?
Автор: Tom
Дата: 01.11.10
— AndrewVK
/* иЗвиНите зА неРовнЫй поЧерК */
Re: Парсер C# на Nemerle
От: adontz Грузия http://adontz.wordpress.com/
Дата: 01.11.10 08:43
Оценка:
Здравствуйте, hardcase, Вы писали:

A>>Я этого жду

H>Зачем ждать, когда уже он есть готовый
Автор: hardcase
Дата: 24.08.10
?

H>На дотнете и при том доступный в исходниках.

На Немерле. Мне нужна библиотека с понятным интерфейсом, а не куча исходникков на языке, который я не знаю.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[2]: Парсер C# на Nemerle
От: hardcase Пират http://nemerle.org
Дата: 01.11.10 09:06
Оценка:
Здравствуйте, adontz, Вы писали:

A>На Немерле. Мне нужна библиотека с понятным интерфейсом, а не куча исходникков на языке, который я не знаю.


Насколько мне известно Nemerle компилируемый .NET язык.
И библиотеку эту можно легко использовать из программ на C# и VB.NET.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[3]: Парсер C# на Nemerle
От: adontz Грузия http://adontz.wordpress.com/
Дата: 01.11.10 10:08
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Насколько мне известно Nemerle компилируемый .NET язык.


Это никто и не оспаривал.

H>И библиотеку эту можно легко использовать из программ на C# и VB.NET.


То есть оно оформлено как библиотека?
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[4]: Парсер C# на Nemerle
От: hardcase Пират http://nemerle.org
Дата: 01.11.10 10:15
Оценка: 137 (6)
Здравствуйте, adontz, Вы писали:

H>>И библиотеку эту можно легко использовать из программ на C# и VB.NET.


A>То есть оно оформлено как библиотека?


Естественно оно оформлено как отдельная библиотека.
При том сейчас она входит в наш инсталлятор, но всегда можно собирать свежую версию из исходников (сейчас активно допиливается генератор парсера).
По сути сейчас единственное ограничение парсера — отсутствие процессинга директив (они просто игнорируются), но этот недостаток скоро устраним.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[5]: Парсер C# на Nemerle
От: adontz Грузия http://adontz.wordpress.com/
Дата: 01.11.10 10:17
Оценка: :)))
Здравствуйте, hardcase, Вы писали:

H>Естественно оно оформлено как отдельная библиотека.

H>При том сейчас она входит в наш инсталлятор, но всегда можно собирать свежую версию из исходников (сейчас активно допиливается генератор парсера).
H>По сути сейчас единственное ограничение парсера — отсутствие процессинга директив (они просто игнорируются), но этот недостаток скоро устраним.

Ну всё, я вас тут запомнил.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[3]: Парсер C# на Nemerle
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 01.11.10 22:41
Оценка:
Здравствуйте, hardcase, Вы писали:

H>И библиотеку эту можно легко использовать из программ на C# и VB.NET.


А это совсем не факт. Немерле имеет особенность, особенно при активном использовании МП, делать использование его кода из других языков довольно сложным, особенно если об этом специально не позаботились.
... << RSDN@Home 1.2.0 alpha 4 rev. 1476 on Windows 7 6.1.7600.0>>
AVK Blog
Re[4]: Парсер C# на Nemerle
От: hardcase Пират http://nemerle.org
Дата: 01.11.10 22:46
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>А это совсем не факт. Немерле имеет особенность, особенно при активном использовании МП, делать использование его кода из других языков довольно сложным, особенно если об этом специально не позаботились.


МП использутся там в двух местах:
1) генератор парсера,
2) обход дерева с целью поиска синтаксических ошибок

На выходе синтаксическое дерево CompilationUnit-а, которое можно анализировать.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[2]: Парсер C# на Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 02.11.10 01:15
Оценка:
Здравствуйте, adontz, Вы писали:

H>>Зачем ждать, когда уже он есть готовый
Автор: hardcase
Дата: 24.08.10
?

H>>На дотнете и при том доступный в исходниках.

A>На Немерле. Мне нужна библиотека с понятным интерфейсом, а не куча исходникков


Я так и знал. Главная проблема найдена.

Скажи, а чем будет отличаться библиотека написанная МС-ом? Они ведь тебе исходники точно не дадут. Радуйся если они их обфускации не подвергнут.

A>на языке, который я не знаю.


Ой, дело только в этом? Ну, так зачем дело встало. Головастые люди изучивают немерле за месяц.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Парсер C# на Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 02.11.10 01:24
Оценка:
Здравствуйте, AndrewVK, Вы писали:

H>>И библиотеку эту можно легко использовать из программ на C# и VB.NET.


AVK>А это совсем не факт. Немерле имеет особенность, особенно при активном использовании МП, делать использование его кода из других языков довольно сложным, особенно если об этом специально не позаботились.


А причем тут ПМ? ПМ вам — мэйнстримовцам — недоступен. Ты наверно говоришь об описании AST в вдие вариантов?

Ага. AST там именно в таком виде. Но варианты реализованы на базе классов. Вот как выглядит AST в Рефлекторе:

public abstract class Expr : Located
{
    // Methods
    protected Expr();
    protected Expr(Location location);
    public override string ToString();

    [VariantOption]
    public sealed class Alias : Expr
    {
        // Fields
        public readonly Identifier id;

        // Methods
        public Alias(Identifier id);
        public Alias(Location location, Identifier id);
        public override int _N_GetVariantCode();
    }

    [VariantOption]
    public sealed class Assign : Expr
    {
        // Fields
        public readonly Identifier op;
        public readonly Expr to;
        public readonly Expr value;

        // Methods
        public Assign(Expr to, Expr value, Identifier op);
        public Assign(Location location, Expr to, Expr value, Identifier op);
        public override int _N_GetVariantCode();
    }

    [VariantOption]
    public sealed class Base : Expr
    {
        // Methods
        public Base();
        public Base(Location location);
        public override int _N_GetVariantCode();
    }

    [VariantOption]
    public sealed class BinaryOperator : Expr
    {
        // Fields
        public readonly Expr left;
        public readonly Identifier op;
        public readonly Expr right;

        // Methods
        public BinaryOperator(Expr left, Expr right, Identifier op);
        public BinaryOperator(Location location, Expr left, Expr right, Identifier op);
        public override int _N_GetVariantCode();
    }

    [VariantOption]
    public sealed class Call : Expr
    {
        // Fields
        public readonly list<FunctionArgument> arguments;
        public readonly Expr expr;

        // Methods
        public Call(Expr expr, list<FunctionArgument> arguments);
        public Call(Location location, Expr expr, list<FunctionArgument> arguments);
        public override int _N_GetVariantCode();
    }


Любой представитель мэйнстрима может написать Визетер для этого дела и использовать в свое удовольствие на подчеркнуто мэйнстрим-яызке. Для генерации Визетера можно даже воспользоваться ульта-современными технологиями вроде T4.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Парсер C# на Nemerle
От: _FRED_ Черногория
Дата: 02.11.10 05:07
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Ага. AST там именно в таком виде. Но варианты реализованы на базе классов. Вот как выглядит AST в Рефлекторе:

VD>    [VariantOption]
VD>    public sealed class Alias : Expr
VD>    {
VD>        // Fields
VD>        public readonly Identifier id;


А можно что-либо сделать (на сколько это принципиально и как крепко прибито), что бы имена полей получались бы в UpperCase или в виде private readonly-полей и public-свойств? За это отвечает описание граматики (то есть достаточно переписать граматику парсера C#) или компилятор Немерле?
Help will always be given at Hogwarts to those who ask for it.
Re[6]: Парсер C# на Nemerle
От: samius Япония http://sams-tricks.blogspot.com
Дата: 02.11.10 05:13
Оценка:
Здравствуйте, _FRED_, Вы писали:

_FR>А можно что-либо сделать (на сколько это принципиально и как крепко прибито), что бы имена полей получались бы в UpperCase или в виде private readonly-полей и public-свойств? За это отвечает описание граматики (то есть достаточно переписать граматику парсера C#) или компилятор Немерле?


За генерацию вариантов отвечает компилятор. А парсер скорее всего очень жестко завязан на варианты.
Re[7]: Парсер C# на Nemerle
От: _FRED_ Черногория
Дата: 02.11.10 05:19
Оценка:
Здравствуйте, samius, Вы писали:

_FR>>А можно что-либо сделать (на сколько это принципиально и как крепко прибито), что бы имена полей получались бы в UpperCase или в виде private readonly-полей и public-свойств? За это отвечает описание граматики (то есть достаточно переписать граматику парсера C#) или компилятор Немерле?


S>За генерацию вариантов отвечает компилятор. А парсер скорее всего очень жестко завязан на варианты.


Но имена, в частности, "id" из моего примера, не компилятор же выдумывает — это имя же где-то человек указал. Так вот, если указать "Id", "то есть … переписать граматику парсера C#", значит в результате, в классе, будет поле "Id"? Или там всё сложнее?
Help will always be given at Hogwarts to those who ask for it.
Re[8]: Парсер C# на Nemerle
От: samius Япония http://sams-tricks.blogspot.com
Дата: 02.11.10 05:21
Оценка:
Здравствуйте, _FRED_, Вы писали:

_FR>Здравствуйте, samius, Вы писали:


_FR>>>А можно что-либо сделать (на сколько это принципиально и как крепко прибито), что бы имена полей получались бы в UpperCase или в виде private readonly-полей и public-свойств? За это отвечает описание граматики (то есть достаточно переписать граматику парсера C#) или компилятор Немерле?


S>>За генерацию вариантов отвечает компилятор. А парсер скорее всего очень жестко завязан на варианты.


_FR>Но имена, в частности, "id" из моего примера, не компилятор же выдумывает — это имя же где-то человек указал. Так вот, если указать "Id", "то есть … переписать граматику парсера C#", значит в результате, в классе, будет поле "Id"? Или там всё сложнее?

Имя пишет человек. А вот за генерацию поля (а не свойства) отвечает компилятор.
Re[8]: Парсер C# на Nemerle
От: samius Япония http://sams-tricks.blogspot.com
Дата: 02.11.10 05:32
Оценка:
Здравствуйте, _FRED_, Вы писали:

S>>За генерацию вариантов отвечает компилятор. А парсер скорее всего очень жестко завязан на варианты.


_FR>Но имена, в частности, "id" из моего примера, не компилятор же выдумывает — это имя же где-то человек указал. Так вот, если указать "Id", "то есть … переписать граматику парсера C#", значит в результате, в классе, будет поле "Id"? Или там всё сложнее?


Expr.n
Обойдется рефакторингом. Но думаю, что авторы будут против такого коммита.
Re[9]: Парсер C# на Nemerle
От: _FRED_ Черногория
Дата: 02.11.10 05:39
Оценка:
Здравствуйте, samius, Вы писали:

S>>>За генерацию вариантов отвечает компилятор. А парсер скорее всего очень жестко завязан на варианты.


_FR>>Но имена, в частности, "id" из моего примера, не компилятор же выдумывает — это имя же где-то человек указал. Так вот, если указать "Id", "то есть … переписать граматику парсера C#", значит в результате, в классе, будет поле "Id"? Или там всё сложнее?


S>Expr.n

S>Обойдется рефакторингом. Но думаю, что авторы будут против такого коммита.

Ну, если не удастся договориться с авторами, то коммитить, конечно, не стоит.
Help will always be given at Hogwarts to those who ask for it.
Re[5]: Парсер C# на Nemerle
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 02.11.10 09:34
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Любой представитель мэйнстрима может написать Визетер для этого дела


И визитер в сотню, если не больше, узлов, да еще без контроля со стороны компилятора, придется, как я понимаю, писать ручками?
... << RSDN@Home 1.2.0 alpha 4 rev. 1476 on Windows 7 6.1.7600.0>>
AVK Blog
Re[3]: Парсер C# на Nemerle
От: adontz Грузия http://adontz.wordpress.com/
Дата: 02.11.10 10:36
Оценка:
Здравствуйте, VladD2, Вы писали:

A>>На Немерле. Мне нужна библиотека с понятным интерфейсом, а не куча исходникков

VD>Я так и знал. Главная проблема найдена.
VD>Скажи, а чем будет отличаться библиотека написанная МС-ом? Они ведь тебе исходники точно не дадут. Радуйся если они их обфускации не подвергнут.

На момент написания этого сообщения, я не знал, что парсер оформлен как самостоятельная библиотека.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[6]: Парсер C# на Nemerle
От: hardcase Пират http://nemerle.org
Дата: 02.11.10 11:09
Оценка:
Здравствуйте, _FRED_, Вы писали:

_FR>А можно что-либо сделать (на сколько это принципиально и как крепко прибито), что бы имена полей получались бы в UpperCase или в виде private readonly-полей и public-свойств? За это отвечает описание граматики (то есть достаточно переписать граматику парсера C#) или компилятор Немерле?


Я пока не вижу пракического смысла в таком переписывании. Объекты всеравно иммутабельные.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[6]: Парсер C# на Nemerle
От: hardcase Пират http://nemerle.org
Дата: 02.11.10 11:10
Оценка:
Здравствуйте, _FRED_, Вы писали:

_FR>А можно что-либо сделать (на сколько это принципиально и как крепко прибито)


Это завязано на механизм сопоставления с образцом в Nemerle (паттерн "конструктор").
/* иЗвиНите зА неРовнЫй поЧерК */
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.