Могут ли компиляторы определять состояние бесконечного цикла?

Я создаю компилятор для собственного языка. Может ли компилятор обнаружить какое-либо условие бесконечного цикла без запуска программы?

Если да, то как я могу это реализовать?


person Ashrith Sheshan    schedule 27.06.2013    source источник
comment
См. en.wikipedia.org/wiki/Halting_problem Непростая проблема.   -  person Martin V.    schedule 27.06.2013
comment
Некоторые компиляторы могут обнаруживать некоторые условия цикла, но если ваш цикл основан на значении переменной, которая изменяется во время цикла, компилятор не может угадать, какие значения будут вставлены во время выполнения.   -  person    schedule 27.06.2013
comment
Ознакомьтесь с полным функциональным программированием.   -  person CMCDragonkai    schedule 09.04.2015


Ответы (1)


Возможно, вы сможете обнаружить некоторые бесконечные циклы, но в целом вы не можете обнаружить все возможные бесконечные циклы (если только ваш пользовательский язык не разработан специально для устранения общих конструкций циклов). См. http://en.wikipedia.org/wiki/Halting_problem.

person Kristopher Johnson    schedule 27.06.2013