Re[11]: Чем лучше парсить сложный текст?
От: Mystic Artifact  
Дата: 23.10.19 20:18
Оценка:
Здравствуйте, Codealot, Вы писали:

Ох, выше про недостатки, ну и взамен он даёт сильно больше, плюс один из самых человеколюбивых синтаксисов описания грамматики.

C>Меня вполне устроит ptree.

Вот, очевидно, что тогда нитра тебе не нужна. Хотя она делает и то и другое и даже плагин к студии могла сгенерить с подсветкой, или что-то в этом духе, но это из разряда пушки по воробьям с кучей констрейнов.

Короче, определяйся с грамматикой и бери, что нравится.
Re[12]: Чем лучше парсить сложный текст?
От: Codealot Земля  
Дата: 23.10.19 20:29
Оценка:
Здравствуйте, Mystic Artifact, Вы писали:

MA>плюс один из самых человеколюбивых синтаксисов описания грамматики.


А что в нем такого необычного?

MA> Короче, определяйся с грамматикой и бери, что нравится.


А не с алгоритмом разбора?
Ад пуст, все бесы здесь.
Re[13]: Чем лучше парсить сложный текст?
От: Mystic Artifact  
Дата: 23.10.19 21:21
Оценка:
Здравствуйте, Codealot, Вы писали:

MA>>плюс один из самых человеколюбивых синтаксисов описания грамматики.

C>А что в нем такого необычного?
Я не буду давать такие оценки. Просто синтаксис достаточно лаконичен и приятен. Это субьективная оценка.
Так же он использует безсканерный (scannerless) парсер, что избавляет от необходимости токенизации как таковой, а соответственно тебе не нужно думать о них. Но, это обоюдоострая вещь: есть и преимущества и недостатки.

MA>> Короче, определяйся с грамматикой и бери, что нравится.

C>А не с алгоритмом разбора?
Ты ж ведь не хочешь писать парсер или генератор парсера, ты хочешь взять готовый инструмент на подобии ANTLR, который избавит тебя от этих подробностей. Для общего развития и понимания некоторых деталей, вероятно прийдется познакомиться с семействами LL/LR/PEG, если ты ещё не знаком, но знать досконально как оно работает, как бы и не нужно. Иначе на кой чёрт эти инструменты нужны?
LL/LR традиционно заражены левой-правой рекурсивностью и могут требовать дополнительных телодвижений для описания некоторых правил. Но, они, во-первых наверняка освещены в документации, во-вторых должны быть уже реализованы в примере элементарного калькулятора/парсера выражений. На сегодня, серьезные инструменты должны уметь с этим справляться автоматически, по крайней мере в классических случаях.
Поэтому, нужно ли знать алгоритм разбора? Ты завтра выберешь опцию в генераторе использовать другой алгоритм и... в принципе всё должно работать.
Re[14]: Чем лучше парсить сложный текст?
От: Codealot Земля  
Дата: 23.10.19 21:29
Оценка:
Здравствуйте, Mystic Artifact, Вы писали:

MA> Ты ж ведь не хочешь писать парсер или генератор парсера, ты хочешь взять готовый инструмент на подобии ANTLR, который избавит тебя от этих подробностей.


От понимания принципов разбора они уж никак не избавят.

MA> LL/LR традиционно заражены левой-правой рекурсивностью и могут требовать дополнительных телодвижений для описания некоторых правил.


А PEG разве нет?

MA>Ты завтра выберешь опцию в генераторе использовать другой алгоритм и... в принципе всё должно работать.


Сомневаюсь. Выберешь другую опцию, и изменится только набор движений с бубном, чтобы обойти сложные для этого алгоритма моменты.
Ад пуст, все бесы здесь.
Re[15]: Чем лучше парсить сложный текст?
От: Mystic Artifact  
Дата: 23.10.19 22:18
Оценка:
Здравствуйте, Codealot, Вы писали:

MA>> LL/LR традиционно заражены левой-правой рекурсивностью и могут требовать дополнительных телодвижений для описания некоторых правил.

C>А PEG разве нет?
У PEG это по моему более интуитивно понятно, но в вышесказанном смысле, да — он такой же.

MA>>Ты завтра выберешь опцию в генераторе использовать другой алгоритм и... в принципе всё должно работать.

C>Сомневаюсь. Выберешь другую опцию, и изменится только набор движений с бубном, чтобы обойти сложные для этого алгоритма моменты.
В практическом понимании — сложных моментов то и нет. Нет, можно конечно создавать вырожденные случаи и скармливать специальный текст, и это всё будет безбожно тормозить, но с осмысленными-практическими случаями в основном всё нормально. Ну, это как бы мог бы быть тоже одним из параметров исходных требований...
Re: Чем лучше парсить сложный текст?
От: novitk США  
Дата: 23.10.19 22:35
Оценка: 2 (1)
Здравствуйте, Codealot, Вы писали:

C>ANTLR? Есть еще какие-то альтернативы?


https://tomassetti.me/parsing-in-java/
Re[16]: Чем лучше парсить сложный текст?
От: Codealot Земля  
Дата: 23.10.19 22:52
Оценка:
Здравствуйте, Mystic Artifact, Вы писали:

MA> В практическом понимании — сложных моментов то и нет.


Насколько я понимаю, сделать нечерезжопную грамматику с левыми рекурсиями для LL — довольно нетривиально. Или с правыми для LR.
Ад пуст, все бесы здесь.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.