Re[10]: [Macro] PEG-парсер (разработка)
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.03.10 14:00
Оценка:
Здравствуйте, para, Вы писали:

P>под "нечего" я подразумеваю отсутсвие этого токена и отсутствие информации от расположении токена в исходной разбираемой строке.


P>на вход парсеру подашь "1 / 2"

P>вызовется гененрирующий метод с параметрами: ("1", ["2"])

P>так что сейчас буду заниматься тем, чтоб "/" после парсинга добавлялось к "АСТ"

P>и на вход методу шло: ("1", ["/","2"])

Ты меня не слышишь.

Давай еще раз по порядку. Дай свое описание термина "АСТ" и объясни зачем оно тебе нужно.

P>когда будет создаватьтся корректное АСТ, буду переходить на прямые вызовы.


Не нужно ни формировать АСТ, ни дожидаться того когда он стане корректным. Надо тупо вызвать методы-обработчики для всех для всех разобранных правил, а промежуточные результаты просто держать в стеке. Если результат некоторого метода в дальнейшем не понадобится, то и фиг бы с ним. Это следствие выбранного алгоритма.

Посторайся понять, промежуточное АСТ будет существенно тормозить скорость парсера, так как создание объектов — это дорогая операция.

P>Кстати.

P>если неправильно составить грамматику, парсер может уйти в бесконечный цикл.
P>Есть ли планы/алгоритмы проверки корректности семантики грамматики?

ЗЫ

Постарайся все же понять, что построение АСТ это не нужная, вредная операция. От нее нужно отказаться. Это возможно и даже не очень сложно.

Да, но сначала нужно качественно реализовать основной алгоритм и вызов методов-обработчиков.
Прямую левую рекурсию нужно переписывать, а не прямую детектить и сообщать об ошибке.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.