Условия для мета-циркулярного оценщика - PullRequest
2 голосов
/ 04 апреля 2009

Существуют ли какие-либо условия, которым должен удовлетворять язык, чтобы можно было написать мета-циклический оценщик для этого языка? Могу ли я написать один для бейсика или для Python?

Ответы [ 2 ]

3 голосов
/ 04 апреля 2009

Цитировать Рег Брейтуэйт :

Разница между самоинтерпретаторами и мета-циклическими интерпретаторами заключается в том, что последние переформулируют языковые функции в терминах самих функций, а не фактически реализуют их. (Круговые определения, другими словами; отсюда и название). Они зависят от среды своего хоста, чтобы придать функциям смысл.

Учитывая, что одной из ключевых особенностей языка, позволяющего писать для них мета-циклические интерпретаторы, является гомоиконичность , то есть то, что основным представлением программы является примитивная структура данных сам язык. Lisp демонстрирует это в силу того факта, что программы сами выражаются в виде списков.

0 голосов
/ 04 апреля 2009

Вы можете написать его для любого языка, полного по Тьюрингу, однако ваш пробег может отличаться.

Для Python это было сделано (PyPy). Список языков, для которых это было сделано, можно найти в статье Википедии .

...