Здравствуйте, Аноним, Вы писали:
А>имена по умолчанию Expression2, Expression1 всегда зло (наверно?)
Практика показала, что это миф. Всегда можно задать имена явно, а там где они не задаются (как в этом случае) имена не имеют особого смысла (важно просто различать их по порядку).
Проблем вроде случайного изменения ссылок в следствии переупорядочивания правил, на практике, не возникает, так как грамматики упорядочены по смыслу, а не прихоти человека (как это происходит с параметрами методов или свойствами в классах).
А>будет ли от них отход?
Нет. Найденное решение показало себя отлично. Идти на поводу мифов нет никакого смысла.
Кому хочется — могут ввести имена явно. Автоматическая нумерация полей для одинаковых подправил просто позволяет не делать лишних телодвижений при разработке грамматик и иметь компактный синтаксиса.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: вопросу по дизайну нитры
От:
Аноним
Дата:
20.11.13 07:21
Оценка:
Здравствуйте, Аноним, Вы писали:
В нитре для разбора даже очень короткой строки создаеться достаточно большой массив ast
например для "+(1,1,1)*2+7*2-88+22*1+ +(4,4,4)-11+45" размер массива уже ast 855 и memoized 39
а для "+(1,1,1)*2+7*2-88+22*1+ +(4,4,4)-11+45-1" размер массива уже ast 900 и memoized 41
а для "+(1,1,1)*2+7*2-88+22*1+ +(4,4,4)-11+45-1-1" размер массива уже ast 945 и memoized 43
т.е. увеличение кода на 2 символа приводит к росту таблицы аст на 45+2 интов.
Памяти хватит?
Re[2]: вопросу по дизайну нитры
От:
Аноним
Дата:
20.11.13 07:35
Оценка:
Здравствуйте, Аноним, Вы писали:
Увеличение в 47*4/(2*2)= в 47 раз. для исходника в 5 мегабайт потребуется примерно 250 метров.
Re: вопросу по дизайну нитры
От:
Аноним
Дата:
20.11.13 10:00
Оценка:
Здравствуйте, Аноним, Вы писали:
MulDiv = Exp1=Expression sm Exp2=((Mul sm Expression)*) precedence 20
выраженеи разбора 7/7/7/7 результат 1
при этом получается в Exp2 список размером 1, в первый член которого вложена ссылка на 7/7/7 и т д
Здравствуйте, hardcase, Вы писали:
H>Оптимизацией использования памяти ещё просто не занимались.
Занимались. Просто у него почти все токены из одного символа.
Тут любой АСТ такого размера будет.
... << RSDN@Home 1.2.0 alpha 5 rev. 62>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн