Re[11]: [PEG] Парсер C# 4.0
От: Воронков Василий Россия  
Дата: 11.11.10 14:52
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Давай. Можешь и нашу реализацию подключить.


Послал.
Re[6]: [PEG] Парсер C# 4.0
От: VladD2 Российская Империя www.nemerle.org
Дата: 11.11.10 15:18
Оценка:
Здравствуйте, matumba, Вы писали:

VD>>Все что нужно находится в солюшене


M>Т.е. мне его создавать не надо, просто дописать код в солюшен, так? Уже качаю сорсы.


Солюшен — это не проект. Тебе нужно создать новый проект. Этот проект действительно можно добавить в указанный солюшен. Ему там будет самое место.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: [PEG] Парсер C# 4.0
От: Аноним  
Дата: 11.11.10 23:16
Оценка:
C>>На практике встречал в работе с железом. Там сплошь и рядом этажерки указателей на помойки со структурами и указателями в которых указатели на массивы. Новейшее китайское железо с ихним же апи (железо в смысле промышленное которое на шине RS485). Хорошо когда массив с получаемыми данными можно сразу fixed и GC просто понервирничает, а бывает где все совсем плохо, что умножается на в принципе сложную тему invoke/interop... ну вы поняли. Кто умнее пишут в неуправляемых плюсах либу-прокладку, но большинство не парится — unsafe.

VD>А что людей работающих с никоуровневыми АПИ на дотнете много?


Весьма. Причем есть забавная тенденция — asm помню, микроконтроллеры программлю, .net помню пишу софт... а вот ++ хреново помню, пишу и читаю уже медленно.

Скажу больше, в самой теме низкоуровневого программинга касающегося железа, в особенности железа промышленного все меньше низкоуровневого и все чаще встречаются уже готовые производителем API под .Net. Прогресс виден невооруженным глазом, но это пока только очевидная тенденция, о прорыве такими темпами года два-три еще, потом будет дурным тоном не дать готовый API .Net. Причем есть положительная обратная связь, те кто делают .Net API у них и API к ++ вдруг проще и понятнее оказываются. Ну а процы под .Net Micro Framework вообще сказка, там прошивку сразу на чистом .Net пишешь.

Китайцы ODM-щики (делают платформу-прототип на выставки, потом зафигачивают бренды покупателей, типа Rover) тоже коммерсанты, .net платформа это еще +1 способ завоевания рынка.
Re[7]: [PEG] Парсер C# 4.0
От: Аноним  
Дата: 11.11.10 23:25
Оценка:
H>>>Там дел не слишком много — вручную придется юзинги и пространства имен писать, остальное (декларации и выражения) Немерл сам умеет писать.
C>>Это по хорощему счету разбирать сорец по честному, например есди вдруг там уже есть юзинги?
H>Вы топик пробовали от начала читать?

Виноват. Я и немерлом заинтересовался с точки зрения парсинга, вот и подумал "в лоб".
Re[10]: [PEG] Парсер C# 4.0
От: VladD2 Российская Империя www.nemerle.org
Дата: 12.11.10 04:05
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Весьма. Причем есть забавная тенденция — asm помню, микроконтроллеры программлю, .net помню пишу софт... а вот ++ хреново помню, пишу и читаю уже медленно.


Что-то мне кажется, что их не так уж и много. А учитывая слова про наличие готовых дотнетных АПИ актуальность так же понижается.

Мне кажется лучшим выходом тут будет использование C++/CLI для создания безопасных оберток.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: [PEG] Парсер C# 4.0
От: para  
Дата: 13.11.10 20:19
Оценка: 18 (1)
Здравствуйте, hardcase, Вы писали:

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


H>Парсер C#4.0, генерирующий AST, вроде как принял законченную форму к r9078. Кому интересно, может посмотреть и ужаснуться.


rev 9343
Не получилось разобрать пример, который идёт в комплекте с NUnit

основные проблемы:
1.line#~374 :неизвестен формат записи с 'u'
Assert.That(3999999999u, Is.EqualTo(4000000000u).Within(5u));

2.
string[] array = { "abc", "bca", "xyz", "qrs" };

3.проблема с атрибутами
Error    26    custom attribute Test() is not valid on method method NUnit.Framework.Tests.AssertSyntaxTests.IsNull() : void

эту ошибку парсер отнёс к line#26:
[TestFixture]

4. из зависимой сборки C:\Program Files\NUnit 2.5.8\bin\net-1.1\framework\nunit.framework.dll
не подцепился тип Constraint (line#803)
Assert.That(7, !(Constraint)null & !Is.LessThan(5) & !Is.GreaterThan(10));
Re[2]: [PEG] Парсер C# 4.0
От: hardcase Пират http://nemerle.org
Дата: 13.11.10 22:27
Оценка:
Здравствуйте, para, Вы писали:

В ссновном косяки поправил (в т.ч. косяк с кривым сообщением об ошибке).

Осталась непонятка с куском кода:

[code]
Assert.That(7, !(Constraint)null & !Is.LessThan(5) & !Is.GreaterThan(10));
Expect(7, !(Constraint)null & !LessThan(5) & !GreaterThan(10));
[code]

Почему-то немерл неможет его прожевать. Если использовать из другой ветки (там #if MONO), то все компилируется.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[3]: [PEG] Парсер C# 4.0
От: hardcase Пират http://nemerle.org
Дата: 13.11.10 22:37
Оценка: 46 (1)
Здравствуйте, hardcase, Вы писали:

H>Осталась непонятка с куском кода:


H>[code]

H>Assert.That(7, !(Constraint)null & !Is.LessThan(5) & !Is.GreaterThan(10));
H>Expect(7, !(Constraint)null & !LessThan(5) & !GreaterThan(10));
H>[code]

Теперь и она поддерживается.


Давайте еще тесткейзы
/* иЗвиНите зА неРовнЫй поЧерК */
Re[4]: [PEG] Парсер C# 4.0
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.11.10 21:25
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Давайте еще тесткейзы


Хорошей идеей было взять тесты от других парсеров. Моно, парсер для АНТЛР-а... первое что приходит на ум.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: [PEG] Парсер C# 4.0
От: hardcase Пират http://nemerle.org
Дата: 17.11.10 20:50
Оценка: 46 (1)
Здравствуйте, hardcase, Вы писали:

goto великий и могучий теперь поддерживается!
Исходники с ним теперь компилируются

goto case пока под вопросом.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[2]: [PEG] Парсер C# 4.0
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.11.10 14:28
Оценка:
Здравствуйте, hardcase, Вы писали:

H>goto великий и могучий теперь поддерживается!

H>Исходники с ним теперь компилируются

Замечательно! Не загорами время когда большая часть С"-проектов сможет быть скомпилирована немерлом!

H>goto case пока под вопросом.


А в чем вопрос? Мне кажется, что твой текущий опыт должен позволить решить и эту проблему. Нет?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: [PEG] Парсер C# 4.0
От: hardcase Пират http://nemerle.org
Дата: 18.11.10 14:55
Оценка:
Здравствуйте, VladD2, Вы писали:

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


H>>goto великий и могучий теперь поддерживается!

H>>Исходники с ним теперь компилируются

VD>Замечательно! Не загорами время когда большая часть С"-проектов сможет быть скомпилирована немерлом!


Да уж
Я тренерую конвертер на SharpDevelop-овских исходниках (версии 3.2). Именно goto какраз мешает компилироваться.
Хотя вот интеграция F#-а и еще пары небольших библиотек вполне собирается и работает.

H>>goto case пока под вопросом.


VD>А в чем вопрос? Мне кажется, что твой текущий опыт должен позволить решить и эту проблему. Нет?


Есть идея по эмуляции, но нужно собственный макрос изготавливать (идея основана на работе с ConstantFolder-ом).
/* иЗвиНите зА неРовнЫй поЧерК */
Re[4]: [PEG] Парсер C# 4.0
От: Алексей.  
Дата: 18.11.10 15:10
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Да уж

H>Я тренерую конвертер на SharpDevelop-овских исходниках (версии 3.2). Именно goto какраз мешает компилироваться.

Попробуй еще погонять на исходниках IronPython и/или BlToolkit.
Re[4]: [PEG] Парсер C# 4.0
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.11.10 15:57
Оценка:
Здравствуйте, hardcase, Вы писали:

VD>>А в чем вопрос? Мне кажется, что твой текущий опыт должен позволить решить и эту проблему. Нет?


H>Есть идея по эмуляции, но нужно собственный макрос изготавливать (идея основана на работе с ConstantFolder-ом).


Идею не понял. Но раз есть — пробуй!

Я бы, возможно, подумал над банальным запихиванием меток во вхождения match-а. Но там могут возникнуть сложности с тем, что при разворачивании кода match-ей компилятор может заниматься "копи-пэстом", т.е. дублировать участки кода во вложенных if-ах. А двух одинаковых меток ведь быть не должно.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: [PEG] Парсер C# 4.0
От: hardcase Пират http://nemerle.org
Дата: 19.11.10 22:57
Оценка: +1
Наиполезнейшие инструкции goto case и goto default теперь также поддерживаются.
Пока несколько ограниченно: каков был "case XXX", таким и должен быть "goto case XXX", иначе транслятор AST расскажет об ошибке.
Константные выражения также не поддерживаются, это не техническое ограничение (можно вполне вырутиться на макросе), это мое нежелание делать ненужную работу.
/* иЗвиНите зА неРовнЫй поЧерК */
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.