Задача восходящего анализа
От: serber  
Дата: 30.05.10 09:48
Оценка:
Добрый день!
Помогите написать синтаксический анализатор для языка функционального программирования ( Например (F1,(G1,x,y),(G2,a,b,c)) ) на основе восходящего анализа. Поиск в интернете не дал никаких примеров. Может кто то делал подобные задачи?
Re: Задача восходящего анализа
От: batu Украина  
Дата: 30.05.10 16:10
Оценка:
Здравствуйте, serber, Вы писали:

S>Добрый день!

S>Помогите написать синтаксический анализатор для языка функционального программирования ( Например (F1,(G1,x,y),(G2,a,b,c)) ) на основе восходящего анализа. Поиск в интернете не дал никаких примеров. Может кто то делал подобные задачи?
Восходящий анализ подходит для лексического анализа. Синтаксический анализ лучше делать сверху.
Re: Задача восходящего анализа
От: conraddk Россия  
Дата: 30.05.10 20:06
Оценка:
Здравствуйте, serber, Вы писали:

S>Поиск в интернете не дал никаких примеров.

Интернет разный, что ли
Bottom-up parsing
Да и по-русски неплохо гуглится по запросу "восходящий синтаксический анализ"
D.K. << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Все на свете должно происходить медленно и неправильно...
Re: Задача восходящего анализа
От: mefrill Россия  
Дата: 31.05.10 07:03
Оценка:
Здравствуйте, serber, Вы писали:

S>Добрый день!

S>Помогите написать синтаксический анализатор для языка функционального программирования ( Например (F1,(G1,x,y),(G2,a,b,c)) ) на основе восходящего анализа. Поиск в интернете не дал никаких примеров. Может кто то делал подобные задачи?

Если у тебя скобочная структуру, то используй магазинную память для запоминания текущего контекста скобки. Надо добавить структурку типа (имя функции, списко параметров) и при встрече скобки "(" добавлять ее в магазин. Магазин проверит корректность скобок и позволит сформировать дерево программы. Это наверное будет восходящий анализ, т.к. узлы верхнего уровня дерева не будут построены до тех пор, пока не распарсятся скобки внутри.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.