Хищник писал(а):
Думается, state-smart все же терпимы.... Но все равно интересно, как без них.
STATE задает как бы контекст, в котором слова имеют другой смысл, разный для разного значения STATE - либо интерпретировать, либо компилировать, и оно общее для всех слов.
В CF цвет задает способ использования конкретного слова - то ли его использовать как
имя нового определения (реально - как начальный адрес), то ли
компилировать, то ли
исполнить. Еще можно компилировать
макрос. Ну, есть и несколько вариантов комментариев.
Мур(еще с cmForth), убрал STATE (вернее, IMMEDIATE), используя разные словари для компиляции и интерпретации.
Я убрал STATE , сделав отдельно цикл интерпретации и цикл исполнения. А слова
[ ] ], переключают эти циклы. Систему планировалось использовать в виде простых текстов, поэтому о разных цветах и шрифтах речь даже не шла. Префиксы перед каждым словом мне тоже не понравились. Поэтому я продлил действие состояний. Т.о. у меня все же используется аналог STATE , но не флагом, а сразу значением - соответствующим состоянию циклом обработки - циклом интерпретации или циклом компиляции.
Потом уже я увидел пример
profit-а с суффиксами, он мне понравился.
profiT писал(а):
И вообще, у меня уверенность что кто-то из "классиков" однозначно выразил своё "фи" state-smart словам.
Да:
Броуди, глава 8. писал(а):
СОВЕТ
Слова не должны зависеть от переменной STATE, если
программист собирается когда-либо использовать их для
вызова из высокоуровневого определения и при этом ожидает
получить от них такое же поведение, как и при
интерпретации.
А неприятность STATE-зависимых слов в том, что получается неожиданное поведение. Ты хочешь прикомпилировать слово, а оно почему-то выполняется...
И сложность - больше анализа, больше сложность, меньше эффективность, больше код...