Здравствуйте, System Goose, Вы писали:
GA>>Что значит покрытие дерева паттернами и где возникает перебор?
SG>Это обычно актуально при генерации машинного кода. У нас для каждой машинной
SG>инструкции имеется соответствующий ей паттерн в дереве. Если инструкция простая,
SG>вроде add r0, r2, r3 --- то ей соответсвует просто одна вершина дерева (+ int:x1 int:x2),
SG>а вот если это нечто вроде lea eax, dword ptr [edx + 4*edi + <offset>],
SG>то такой инструкции соответствует целый фрагмент из 3-х узлов ---
SG>(+ int:x1 (+ (* 4 int:x2) int:imm32)).
Помоему нужно быть диким извращенцем, что бы писать на входном языке так, что получаются такие деревья

Насколько я понял это пример уже модифицированого дерева, а в оригинале было чтото попроще?
GA>>Для пирмера сузим задачу до следующей: входной язык — паскаль, выходной — С.
GA>>Как должна действовать схема транслятора?
SG>Вполне так можно сделать. Особенно если не стоит задача получения красивого года на выходе.
Сишный код является промежуточным, между входным текстом ибинарником.... как правило его никто не видит...
SG>Между прочим, если Вам и впрямь паскаль в Си превратить надо, есть open-source конвертор,
SG>поищите на http://www.garret.ru/~knizhnik/lang.html (Это мой бывший ученик и впоследствии
SG>коллега по работе делал).
SG>Если напрямую не сумеете применить, то хоть некоторые идеи сможете использовать.
SG>Там, правда, на си все написано.
Ну на самом деле мой входной язык ничего общего с паскалем не имеет. Так просто декларативный язык для описания переменных и типов данных в системе... Паскаль я привел для примера...
Впрочем за ссылку пасиба.... Действительно полезная весч... хотя бизоновские грамматики как по мне читать сложнее....
Вот только никак не могу понять одного: почему если во входном языке идет объявление существующей переменной или переменной необъявленого типа, то ее все равно пихают в дерево?
Я имею в виду языки которые можно проверять одним проходом (аля С)
GA>>Что я смогу выиграть, если в эту схему я включу парсер дерева?
SG>В данном случае, думаю, надо делать без парсера.
Помоему тоже...