Какой подход у Нима, чтобы различать команды?
Я пытаюсь понять, какой подход использует Nim для различения команд.
Существует "сепаратистский подход", где точка с запятой просто разделяет команды (например, используется в Pascal), "терминистский подход", когда точка с запятой полностью завершает команду (используется в C, C++, Java и т. Д.) И "либеральный подход" где программист может решить, стоит ли использовать точку с запятой.
Я думаю, что Nim относится к либеральному подходу, но это будет означать, что точки с запятой могут быть добавлены в конце команд, и Nim не поддерживает это.
Есть еще мысли?
2 ответа
Я пытаюсь понять, какой подход использует Ним для различения команд.
Зачем? Это никоим образом не помогает... У Nim сложный синтаксис, который не укладывается в такие рамки.
Ваш вопрос запутан по-разному. Во-первых, что такое "команда"? Точки с запятой разделяют утверждения или выражения. Разница между вашими категориями имеет значение главным образом в языках выражений - она определяет, является ли значение блока, заканчивающегося точкой с запятой, нижним значением или значением предыдущего выражения. "Сепаратистские" языки сбивают с толку, подвержены ошибкам, имеют плохой дизайн и устарели - ошибки Алгола - древняя история. Во-вторых, категории не имеют большого смысла в таких языках, как Nim, где конец строки синтаксически важен - "отсутствующая" точка с запятой перед новой строкой на самом деле не отсутствует, потому что новая строка выполняет ту же функцию. В-третьих, Nim, безусловно, допускает точки с запятой в конце выражений или операторов (но не допускает пустых операторов или выражений,так;;
запрещено).
Рассмотреть возможность:
proc a: int = 5 # returns 5
proc b: int = 5; # syntax error
proc c: int = # returns 5
5
proc d: int = # returns 5
5;
proc e: int = # syntax error
5;;
Поскольку ;
что отличает c
а также d
не имеет смысловой разницы, можно сказать, что это ближе к "либеральному", чем к "сепаратистскому" или "терминологическому", но оно не очень либерально... вы не можете просто поставить точку с запятой где угодно.
Утверждения Нима - это, как правило, строка, означающая, что они разделены символом новой строки, а не точкой с запятой. Существуют также блоки, определяемые отступом, и выражения списка операторов, которые содержат операторы, разделенные (не завершенные) точкой с запятой.
Nim, как и Python, является языком, поддерживающим пробелы. Он использует переводы строк в качестве разделителей операторов и отступ для создания блочных структур.
Не все языки имеют видимые разделители операторов, хотя в некоторых случаях допускается использование видимых разделителей операторов. (Например, в Python простые операторы могут быть разделены точками с запятой, но не составными операторами.)
"На небесах и на земле больше вещей, о чем Гораций, о которых вы мечтали в своей философии" (Гамлет I.5:159–167)