Формальное определение переводчика - PullRequest
0 голосов
/ 01 февраля 2012

Моя книга гласит: если есть язык с именем L и язык с именем L ', интерпретатор, написанный на L', - это программа, реализующая частичную функцию I (L): (prog (L) x D) -> P (L) (D);При D = данных или вводе программа Prog (L), написанная на L, I (L), интерпретатор, написанный на L ', который интерпретирует язык L', P (L), результат интерпретации.Я не понимаю, почему доменом является Prog (L) xD, а не просто Prog (L), если у меня есть простая инструкция, написанная на python, такая как:

s=input('enter a value: ')

Этот случай я понимаюпочему домен - это Prog (L) xD, но что, если у меня просто:

s='hello'

В этом случае нет никакого ввода, может кто-нибудь объяснить мне, почему домен - это Prog (L) xD?

1 Ответ

0 голосов
/ 21 августа 2017

@ NealB частично рассмотрел это в комментариях, но хотя данных на самом деле нет, домен все еще тривиален Prog(L)xD, просто данных нет.

Фактически, тот факт, что нет ввода, является частью его домена. Думайте об этом так: всегда будет набор допустимых входных данных. Это не изменится для вещей, которые не принимают данных - его действительные данные - пустой набор. Вы просто указываете, что не будете принимать входные данные. Если у вас есть функция f() = 100, например, и вы пытаетесь вызвать ее как f(23), то, очевидно, вы сделали что-то недопустимое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...