Какой подход у Нима, чтобы различать команды?

Я пытаюсь понять, какой подход использует 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)

Другие вопросы по тегам