Обратная польская запись

Teacher

Гость города
#1
Господа! Кто может подсказать алгоритм перевода в ОПЗ операторов цикла (с параметром, с предусловием и с постусловием)?
 

Aliens

Меня знают многие ;-)
#3
Обратная польская запись по сути это когда
1) сначала обозначаются аргументы
2) потом функция или оператор


Таким образом, если цикл Это

Метка
Тело
...
...
...
Взять счетчик
Вязять 1
Вычесть
Сравнить: получился не ноль, значит перейти к Метке



Дело в том, что нет как таковых в ОПЗ конструкций цикла целиком. Так как ОПЗ разработана для МАШИННОГО КОДА, таких абстрактных представлений как цикл тогда просто не было. Тогда вбивали только цифорки - с перфокарт :D
 

Teacher

Гость города
#4
Mr, Пронька, искал. Максимум, что находит - перевод арифметических выражений, обращение к массивам и к функциям.
 

Teacher

Гость города
#5
Nic
Уточню вопрос.
Задача в общем виде звучит так: составить транслятор, переводящий текст программы с одного ЯП на другой.
Для решения этой задачи решаются три подзадачи: 1) перевод операторов 1-го языка в лексемы; 2) перевод лексем в ОПЗ; 3) перевод ОПЗ в операторы другого языка.
Для решения второй подзадачи, как правило, применяется алгоритм Дейкстры. У меня есть описание применения этого алгоритма для арифметических выражений, функций, массивов, безусловных и условных переходов.
Вопрос: как применить Дейкстру для обработки циклов?
 

Aliens

Меня знают многие ;-)
#6
Никак. ОПЗ была создана для арифметики...
Если отбросить очковтирательство то ваши три шага можно сократить до двух:
1) перевод операторов 1-го языка в лексемы ОПЗ ; 2) перевод ОПЗ в операторы другого языка.

Само по себе ОПЗ, есть вид лексем. Более того я подозреваю, что ваша задача носит академический характер, а не практический... кому это вообще надо?
 

Ortodocs

Житель мегаполиса
#7
Teacher, а вы действительно тичер или просто ник такой?
А вообще данная задача у нас как курсовая была. А покуда у нас препод не бум-бум в этом вопросе, да и мы тоже как и он, потому что нас толком не научили этому, то он и сказал нам делать эту курсовую как получиться. И мы отделались малой кровью. Сначала лексический, потом синтаксический анализ текста, а далее используя полученные таблицу лексем и имён, а так же смекалку, переводили текст на другой язык, но совершенно не используя польской записи и вообще универсальных алгоритмов, которые бы следовало тут применять.
 

Teacher

Гость города
#8
Nic
Причём здесь очковтирательство?
Можно сократить и до двух, но технически будет сложно ее решить.
Конечно задача носит академический характер.
 

Teacher

Гость города
#9
Ortodocs

Задачу эту я решал для прикладной математики и информатики для ТГРТУ и она уже успешно сдана. В моём решении работало всё, кроме обработки циклов, в постановке задачи это и не требовалось, поэтому в этом направлении я и не парился. Но задача мне показалась очень интересной и хотелось бы найти полный алгоритм.
Teacher это конечно ник, но у каждого ник в чём-то связан с его обладателем.
 

Aliens

Меня знают многие ;-)
#10
Teacher а ты че яндексом не знаешь как пользоваться? Или ты думаешь тут мега умы сидят которые все про все знают? Никто тут ничего не знает, а кто знает не скажет, ибо ибо :D
 

Pagan

Житель окраин
#11
То что ты спаршиваеш у нас в радике было по теори трасляции и компиляции вот точно не помню было у нас циклы помню точно что условные перходы были какжеться залез на http://www.tsure.ru/ поспрашивай там на форуме наверника что нибуть дельно подскажут.
 

Lord_Arthur

Гость города
#13
Товарищи, точно могу сказать, что в радике не дают циклы - ибо это слишком сложная задача для реализации.
если это не носит глобальной важности, то лучше на это забить...
 

Aliens

Меня знают многие ;-)
#14
ну на экономике может и не дают... а то вдруг найдется теоретик, который докажет всемирный цикл обращения валют... теорию спирали, ну и всякое....