Re[30]: Опциональные типы
От: WolfHound  
Дата: 14.03.17 12:02
Оценка: :)
Здравствуйте, vdimas, Вы писали:

V>Ты эпично слился с ЗТ в С++. Если оттрекать весь спор с самого начала — ни одно моё утверждение не было ошибочным.


Тип — это именованное множество значений.
Множество значений ЗТ зависит от значения.
На С++ так нельзя. И на хаскеле так тоже нельзя.
Всё.

V>Ваша Нитра идёт на одну всего платформу, т.е. её потенциальный рынок тоже 2-3 построенных на ней ИДЕ.

Наша нитра уже сейчас может быть встроена в любую ИДЕ на винде, маке и линухе.
Ибо движок живёт в отдельном процессе и общается с ИДЕ по очень тонкому протоколу.

V>Любой тулкит ASN.1 — это генератор парсеров.

А ещё сериализаторов и биндингов к языкам.
А если бинарный формат нужно парсить ANTLR'ом то тут явный неадекват.

V>Дурацкий вопрос.

V>Ты пробовал читать схемы электрические принципиальные через net-list?
V>А карту местности через список координат населённых пунктов?
V>Ну вот попробуй.
Какое это отношение имеет к грамматике? Да никакого.

V>Смысл появляется начиная от грамматики банального калькулятора, где через грамматику описывается приоритет операций.

Ну это проблемы генератора парсеров если там так приходится приоритеты задавать.
В нормальных инструментах это делают вот так
    precedence Additive:
    | add        = expr sm '+' sm expr { override Value = Expr1.Value() + Expr2.Value(); }
    | sub        = expr sm '-' sm expr { override Value = Expr1.Value() - Expr2.Value(); }

    precedence Multiplicative:
    | mul        = expr sm '*' sm expr { override Value = Expr1.Value() * Expr2.Value(); }
    | div        = expr sm '/' sm expr { override Value = Expr1.Value() / Expr2.Value(); }
    | mod        = expr sm '%' sm expr { override Value = Expr1.Value() % Expr2.Value(); }

    precedence Power:
    | pow        = expr sm '^' sm expr right-associative
                                       { override Value = System.Math.Pow(Expr1.Value(), Expr2.Value()); }

    precedence Unary:
    | neg        = '-' expr            { override Value = -Expr.Value(); }

В крайнем случае можно использовать числа.

А вот это:
input    ::= ws expr ws eoi;

expr    ::= ws powterm [{ws '^' ws powterm}];
powterm    ::= ws factor [{ws ('*'|'/') ws factor}];
factor    ::= ws term [{ws ('+'|'-') ws term}];
term    ::= '(' ws expr ws ')' | '-' ws expr | number;

Звиздец неадекватный.
Поддерживать такое невозможно.
А про добавление операторов про которые не знал разработчик основной грамматики вообще можно забыть.

V>И не надо мне опять про набивший оскомину ПЕГ, где приоритет задаётся явно через "правильную" очередность описания правил.

Приоритетный выбор не имеет никакого отношения к приоритету операций.

V>Мне надо без всякой "правильной" очередности.

V>Мне надо честный choice.
Тебе ничего не надо. Ибо ты не понимаешь, что там происходит, а значит не можешь осмысленно выбрать.

V>Дерево — это и есть графическое представление графа (масло масляное, но ничего не поделать).

V>А чего тогда спрашиваешь "зачем"?
Я спрашиваю нахрена мне графическое представление грамматики?
Дерево разбора и грамматика — это разные вещи.

WH>>Что тебе даст стрелка, идущая мимо expression по сравнению со знаком "?" стоящим после expression?

V>Покажет, правильно ли я поставил закрывающие скобки.


V>>>>>Там вообще своё восстановление написать можно, бо кишки Бизона открыты.

WH>>>>Ты вообще понимаешь какой неадекват ты тут несёшь?
V>>>Да ну? Это я, значит, по обрывкам информации ориентируюсь и считаю, что владею ею? ))
WH>>1)Именно ты.
WH>>2)Как эти две твои фразы соотносятся между собой не ясно.
V>Потому что ты выдаешь "окончательные суждения" именно на основе неполной информации.
V>Специалист обязан во всём сомневаться и сам всё проверять.
V>Считай, что это религия такая. Обязательная к принятию догма.
Ты опять облажался и пытаешься соскочить с вопроса.

V>Ну так в другой раз переспроси, если некая терминология не понятна, а не накидывайся сходу.

Ну так я и спрашиваю. Как ручное описание алгоритма восстановления (что само по себе дикий неадекват) относится к целевым правилам в лексере?

V>В бизоне описываются только парсер, лексер для него описывается отдельно через flex.

V>Т.е. ты этого не знал, но опять бежишь на меня наезжать.
V>Теперь-то хоть прояснилось?
Это вообще к делу не относится.
Ты опять наслушался голосов и тебя понесло чёрт знает куда.

V>Считай, что ты таким образом помечаешь правила, до которых имеет смысл восстановиться.

V>Потому что тут чисто человеческий фактор — не до любых правил имеет смысл восстанавливаться.
Вот только о чудо. Нитра без этого работает.

V>Ты же взял Эрли, а там всё было еще печальнее в тестах?

Ты меня совсем не слушаешь. Эрли работает на 1% кода и только в случае если код сломан.

V>>>Пакрат запоминает удачные ветки разбора, Эрли все. Это принципиально. Держим это в уме и пытаемся ставить задачу.

WH>>Классический пакрат для каждой позиции в тексте запоминает результат разбора всех правил грамматики для этой позиции.
V>Учись пользоваться общепринятой терминологией.
V>Описанное верно для "предпросмотра" строго на 1, т.е. имея на руках текущую лексему.
Что за бред опять. Ты вообще про пакрат читал? Похоже, что нет. Или вместо чтения слушал голоса.
Пакрат работает посимвольно без всякого предпросмотра.

V>Причем, вот даже сейчас я через всего две фразы показал ЛЮБОМУ читателю со стороны суть происходящего.

Ну давай спросим у читателя.
Читатель ты понял, что тут наговорил вдимас?

V>Если ты НЕ МОЖЕШЬ донести до коллег информацию, то лучше вообще молчать, чем потом строить из себя обиженного на весь белый свет, что, мол, "гений был не понят", ы-ы-ы. )))

Вот и молчи.
Ибо информации у тебя нет.
Совсем.
Только трёп, который противоречит всем независимым тестам.
В прочем от тебя вообще никаких тестов не было.

V>Ну вот слона-то ты и не заметил. ))

V>Я работаю с таким языком, где одна ошибка в начале h-файла делает весь остальной файл невалидным. Ну и еще десятки зависимых впридачу.
V>Вроде бы я не скрываю, какой у меня основной язык по работе.
Только все эти ошибки отлавливаются не парсером. А кодом, который работает после парсера.

WH>>Так что ничего из того что уже отпарсено не перепарсивается.

WH>>Нужно только несколько раз в таблицу мемоизации заглянуть.
WH>>Ты понимаешь, что с таким захлёбом о наносекундах говоришь? При том что время реакции человека 100 миллисекунд.
V>Так тебя не поймешь. То тебе одной миллисекунды на десятки килобайт мало (средний размер файла исходника), то теперь "взахлёб говоришь".
V>Смишно.
V>За 100 миллисекунд у меня парсится несколько метров.
Что ты опять несёшь? Ты вообще читаешь что написано?
Или отвечаешь на то что тебе голоса в голове напели?

WH>>Особенно это касается моего варианта Эрли у которого в правой части правил не последовательность, а произвольный автомат. Ибо вместо бестолковой рекурсии он просто бежит по автомату.

V>По LL(k) можно построить автомат, и?
V>Правильно ли я тебя понимаю, что ты построил Эрли не на основе распараллеливания LL(1) как в исходном алгоритме, а на основе LL(k)?
V>А чему равно k?
Неправильно.
1)В Эрли вообще нет никакого предпросмотра. Ты даже основной алгоритм не понял. А он же прост как пробка. Он даже проще чем LL(1).
2)Ты же вообще не читаешь. Ты голоса в голове слушаешь.
У меня Эрли не по BNF работает, а по надмножеству EBNF без переписывания грамматики в BNF.
3)Что характерно, когда я обсуждал свою модификацию Эрли с человеком, который действительно занимается разработкой GLR парсеров он понял, что я сделал после слов "автомат вместо последовательности".
Всё объяснение секунд 10-20 заняло.

V>>>Даже в том обсуждении про БНФ ты не понял очевидной вещи — это возможности автоматической трансформации грамматик.

WH>>Не нужно. Просто не нужно если алгоритм и так работает.
V>При разработке сложного языка — нужно обязательно.
Сложного это какого?
Назови имя.
C# это сложный язык или нет?
И мы сейчас говорим исключительно про парсер. И в этом контексте C# намного сложнее C++.

V>Если ты про описание ПЕГ — то это НЕ удобно для огромного класса грамматик.

V>Еще раз, медленно — мне удобней для обработки такое AST, которое построено на честном choice.
V>Т.е. НЕ зависит от последовательности упоминания правил.
V>Потому что такое AST будет самым простым, т.е. наиболее выразительным.
1)Форма АСТ не зависит от того есть приоритетный выбор или нет.
2)Нитра никогда не была ПЕГ'ом. В нитре никогда не было приоритетного выбора. И я об этом уже говорил. Но ты же не читаешь, а голоса слушаешь.
При этом нитра пакрат. Ибо пакратом можно парсить не только ПЕГ.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.