Запятая точка что это такое

Запятая точка что это такое

О запятой между независимыми предложениями, объединёнными в одно сложное,

Между тем чай был выпит; давно запряжённые кони продрогли на снегу; месяц бледнел на западе и готов уж был погрузиться в чёрные свои тучи, висящие на дальних вершинах, как клочки разодранного занавеса (Лермонтов).

§ 131. Точка с запятой ставится между независимыми предложениями, объединяемыми в одно сложное предложение и связанными между собой:

Казалось бы, совершенно ей незачем было к нему ездить, и он сам был не слишком ей рад; однако ж она ездила и проживала у него по целым неделям, а иногда и более (Герцен).

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

Мне послышалось, что он заплакал; а надо вам сказать, что Азамат был преупрямый мальчишка, и ничем, бывало, у него слёз не выбьешь, даже когда он был и помоложе (Лермонтов).

1 В таких случаях предложения, начинающиеся союзами
и, да, являются по характеру связи присоединительными.

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

§ 132. Точка с запятой ставится между распространёнными однородными членами предложения, особенно если внутри хотя бы одного из них есть запятые, например:

Здесь были люди из города и из станиц и хуторов, задержанные по подозрению в том, что они советские работники, партизаны, коммунисты, комсомольцы; люди, поступком или словом оскорбившие немецкий мундир; люди, скрывавшие своё еврейское происхождение; люди, задержанные за то, что они без документов, и просто за то, что они люди (Фадеев).

§ 133. Точка с запятой ставится между значительно распространёнными придаточными предложениями, подчинёнными одному и тому же главному, если между придаточными нет сочинительного союза, особенно когда внутри таких придаточных имеются в свою очередь придаточные предложения, например:

Не потерплю, чтоб развратитель огнём и вздохом, и похвал младое сердце искушал; чтоб червь презренный, ядовитый точил лилеи стебелёк; чтобы двухутренний цветок увял ещё полураскрытый (Пушкин).

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

§ 134. Точка с запятой ставится между группами независимых предложений, а также между группами придаточных предложений, относящихся к одному главному, если необходимо указать границы между группами предложений в отличие от границ между отдельными предложениями, например:

В саду было множество ворон, гнёзда их покрывали макушки деревьев, они кружились около них и каркали; иногда, особенно к вечеру, они вспархивали целыми сотнями, шумя и поднимая других; иногда одна какая-нибудь перелетит наскоро с дерева на дерево, и всё затихнет. (Герцен).

Люди этой партии говорили и думали, что всё дурное происходит преимущественно от присутствия государя с военным двором при армии, что в армию перенесена та неопределённая, условная и колеблющаяся шаткость отношений, которая удобна при дворе, но вредна в армии; что государю нужно царствовать, а не управлять войском, что единственный выход из этого положения есть отъезд государя с его двором из армии; что одно присутствие государя парализует 50 тысяч войска, нужных для обеспечения его личной безопасности; что самый плохой, но независимый главнокомандующий будет лучше самого лучшего, но связанного присутствием и властью государя (Л. Толстой).

Об использовании в подобных перечислениях точки см. § 128.

Такой способ употребления мин заставил предъявить к ним требования:

увеличить безопасность постановки мин.

(Академик

Об использовании в подобных перечислениях точки см. § 128.

Источник

Зачем нужна точка с запятой и где её нужно ставить?

Грамотность на «Меле»

В школьных диктантах могут снизить оценку за то, что ученик не поставил точку с запятой там, где она была задумана автором. А есть ли вообще какие-то правила, по которым этот знак препинания ставится (или не ставится)? Отвечает Мария Чепиницкая, преподаватель и автор блога о русском языке в стихах и прозе.

Вопрос. Расскажите, пожалуйста, где правильно ставить точку с запятой. Моя мама уверена, что ее можно ставить где угодно, и считает, что Тургенев в «Записках охотника» так и делал. А я с ней не согласна, должно быть правило.

А правило есть, причём не такое уж и простое. Давайте попробуем разобраться.

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

1) молодой картофель, выращенный у подножья горы Хурхар;

2) привезённый из Альп сыр;

3) лапшу быстрого приготовления.

Во-вторых, точка с запятой любит сложные предложения и ставится перед союзами НО, ОДНАКО, ТЕМ НЕ МЕНЕЕ и подобными им союзами при противопоставлении:

У меня была только синяя краска; но, несмотря на это, я затеял нарисовать охоту. (Л. Толстой)

А вот перед союзами И и ДА (в значении «и») точка с запятой может встать только в том случае, если на этом месте можно поставить точку:

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

Если же в сложном предложении есть придаточные части, то точка с запятой может поселиться в таком предложении в двух случаях:

1) между придаточными нет сочинительных союзов, а сами придаточные имеют свои придаточные;

2) между группами независимых придаточных.

Правда, зачем вам нужны такие большие предложения (если вы, конечно, не писатель):

И, в-третьих, точка с запятой очень дружна с однородными членами предложения, особенно если внутри хотя бы одного из них есть запятые:

Здесь были люди из города и из станиц и хуторов, задержанные по подозрению в том, что они советские работники, партизаны, коммунисты, комсомольцы; люди, поступком или словом оскорбившие немецкий мундир; люди, скрывавшие свое еврейское происхождение; люди, задержанные за то, что они без документов, и просто за то, что они люди. (А. А. Фадеев)

Источник

точка с запятой

Полезное

Смотреть что такое «точка с запятой» в других словарях:

точка с запятой — (Semicolon) Одиночный разделительный знак препинания [точка, запятая, двоеточие, тире, многоточие и т.д.], служащий для внутреннего членения предложения. В русском языке употребляется в сложных предложениях, между однородными членами… … Шрифтовая терминология

ТОЧКА С ЗАПЯТОЙ — знак препинания (;), употребляющийся в сложном, реже в простом предложении для разделения относительно самостоятельных или значительно распространенных его частей … Большой Энциклопедический словарь

точка с запятой — сущ., кол во синонимов: 1 • знак (138) Словарь синонимов ASIS. В.Н. Тришин. 2013 … Словарь синонимов

точка с запятой — Печатный знак «;», применяемый для разделения предложения на две смысловые части. [http://www.morepc.ru/dict/] Тематики информационные технологии в целом EN semicolon … Справочник технического переводчика

Точка с запятой — как условный знак в библиогр. описании употребляется в следующих случаях: 1) перед каждый новым заглавием в сведениях о заглавии авт. сборника произведений без общего заглавия (напр.: Маккефри Э. Майор запаса; Планета под следствием; Ловушка для… … Издательский словарь-справочник

Точка с запятой — У этого термина существуют и другие значения, см. Точка (значения). ; Точка с запятой Пунктуация … Википедия

точка с запятой — знак препинания (;), употребляющийся в сложном, реже в простом предложении для разделения относительно самостоятельных или значительно распространённых его частей. * * * ТОЧКА С ЗАПЯТОЙ ТОЧКА С ЗАПЯТОЙ, знак препинания (;), употребляющийся в… … Энциклопедический словарь

Точка с запятой — знак препинания (См. Знаки препинания), состоящий из точки и расположенной под ней запятой (;). Ставится в бессоюзном сложном предложении между составляющими его частями (если они распространены и имеют внутри себя запятые); в… … Большая советская энциклопедия

точка с запятой — знак препинания. Сигнал более значимой границы, чем запятая: смысловой независимости и структурной сложности соединяемых частей в ряду однородных членов или в сложном предложении: Мчатся тучи, вьются тучи; Невидимкою луна Освещает снег летучий;… … Литературная энциклопедия

Точка с запятой в сложносочиненном предложении — Если части сложносочиненного предложения значительно распространены (часто они представляют собой соединение сложноподчиненных предложений) или имеют внутри себя запятые, то между такими частями ставится точка с запятой (чаще перед союзами а … Справочник по правописанию и стилистике

Источник

Всё, что надо знать о точке с запятой

Автовставка точек с запятой («;») — одна из наиболее спорных особенностей яваскрипта, вокруг которой скопилось много непонимания.

Некоторые программисты ставят «;» в конце каждого оператора, некоторые — только там, где строго необходимо. Большинство же где-то посередине, хотя есть и такие, которые добавляют лишние «;» из стилистических соображений.

Даже если вы всегда ставите «;» в конце каждого оператора, некоторые конструкции парсятся неочевидным образом. Вне зависимости от ваших предпочтений касательно «;», правила такого парсинга надо знать, чтобы использовать язык профессионально. Запомнив несколько простых правил, приведённых ниже, вы поймёте, как будет парситься любая программа, и станете экспертом в автовставке «;» в яваскрипте.

Где допустимы ТЗ

В формальной грамматике, данной в спецификации ECMAscript, «;» имеются в конце каждого оператора, где они могут быть. Вот оператор do-while:

do Statement while ( Expression );

ТЗ также возникают в грамматике на конце операторов var, операторов-выражений (наподобие «4+4;» или «f();»), операторов continue, return, break, throw и операторов отладчика.

Пустой оператор это одна «;», и является корректным оператором в яваскрипте. По этой причине «;;;» является корректной программой, оно парсится как три пустых оператора, и выполняет ничего три раза.

Иногда пустые операторы полезные, хотя бы синтаксически. Например, для бесконечного цикла можно написать «while(1);», точка с запятой парсится как пустой оператор, делая оператор while синтаксически валидным. Без ТЗ оператор while был бы неполон, поскольку после условия цикла необходим оператор.

Наконец, «;» используются в циклах в форме «for ( Выражение; Выражение; Выражение ) Оператор», и разумеется, могут использоваться в строчных и регексповых литералах.

Где точку с запятой можно пропустить

В формальной грамматике из спецификаций ECMAscript «;» упомянуты, как описано выше. Однако спецификация также даёт правила, описывающие, как реальный парсинг отличается от формальной грамматики. Правила описаны через воображаемые «;», вставляемые во входной поток, но это всего лишь спецификационная модель, на практике парсерам не нужно генерировать псевдо-«;», а можно воспринимать «;» как опциональные в определённых местах грамматике (см., например, грамматику парсинга в ECMAscript, в особенности правила Statement, EOS, EOSnoLB, и SnoLB). Везде, где спецификация говорит «вставляется »;»», имеется в виду, что текущий оператор заканчивается.

Правила автовставки ТЗ описаны в разделе 7.9 ECMA-262 [pdf].

Раздел даёт три правила и два исключения из них.

Когда программа встречает токен, недопустимый грамматикой, вставляется «;», если (а) в этом месте присутствует перенос строки, или (б) недопустимый токен является закрывающей фигурной скобкой. При достижении конце файла и невозможности иной интерпретации, вставляется «;». При появлении «ограниченного порождения» [restricted production], содержащего терминатор строки в месте, где грамматика говорит «[no LineTerminator here]», вставляется «;».

Иными словами, эти правила говорят, что оператор можно оканчивать без «;» (а) перед закрывающей фигурной скобкой, (б) в конце программы, (в) если следующий токен не может быть отпарсен иначе, и, кроме того, есть некоторые места в грамматике, где перенос строки завершает оператор безусловно. Во что это выливается на практике, обсуждается ниже.

Исключения: «;» никогда не вставляется в заголовок цикла вида «for ( Выражение; Выражение; Выражение ) Оператор», и «;» никогда не вставляется, если в результате получается пустой оператор.

Что это всё для нас означает?

Прежде всего, «;» опциональна только на конце строки, перед закрывающей фигурной скобкой, и в конце программы. Кром того, «;» не предполагается на конце строки, если первый токен следующей строки может быть отпарсен как часть предыдущего оператора.

«42; «hello!»» пример валидной программы, равно как и «42\n»hello!»» (где «\n» изображает перенос строки) но «42 «hello!»» уже нет, так как перенос строки вызывает автовставку «;», а пробел нет. «if(x)» также валидно. Здесь «y()» есть оператор-выражение, который может оканчиватся «;», но поскольку следующий токен это закрывающая фигурная скобка, «;» опциональна, несмотря на отсутствие переноса строки.

Оба исключения, для циклов и пустого оператора, можно проиллюстрировать вместе:

Цикл последовательно вызывает следующий родительский узел, пока не не найдётся узел без родителя. Всё это происходит в заголовке цикла, так что для тела цикла ничего не осталось. Однако синтаксис цикла требует оператор, и мы вставляем пустой оператор. Несмотря на то, что все три «;» в этом примере на концах строк, все три необходимы, так как «;» не вставляется в заголовках цикла или для создания пустого оператора.

Ограниченное порождение

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

Если getc() возвращает символ из входного потока, программа читает его, проверяет, не символ ли выхода это, и если да, передаёт управление за цикл. Помеченный оператор break нужен, чтобы вырваться за внешний цикл, а не только за внутренний. Такая же программа, различающаяюся лишь переносом строки, не даст тот же результат:

В этом случе токен charloop — не часть оператора break. Так как оператор break ограничен, перенос строки в этой позиции завершает оператор. Токен charloop парсится просто как переменная charloop, но управление это место так и не получит, а оператор break будет выходить из внутреннего цикла, а не из внешнего, как задумано.

Примеры остальных четырёх ограниченных порождений:

Это выдаст ошибку, и не отпарсит как «i++». Терминатор не может отделять постфиксный оператор инкремента или декремента, так что «++» или «—» в начале строки никогда не отпарсится как часть предыдущей строки.

А это не ошибка, отпарсится как «i; ++j». Префисные инкремент и декремент не являются ограниченным порождением, поэтому перенос строки может встретиться между «++» или «—» и модифицируемым ими выражением.

Это отпарсится как пустой оператор return, вслед за которым идёт оператор-выражение, до которого управление никогда не дойдёт. А вот это отпарсится так, как задумано:

Отметьте, что оператор return МОЖЕТ содержать переносы внутри выражения, только лишь не между токеном return и началом выражения. При намеренном пропуске «;», ограниченное порождение оператора return удобно, так как позволяет написать пустой return без того, чтобы случайно вернуть выражение со следующей строки:

Операторы continue и throw похожи на break и return:

Отступы не играют роли для парсинга программ на ECMAscript, а наличие или отсутстсвие переносов строки играет. Тем самым, любой процессор исходного текста на яваскрипте может вырезать начальные пробелы (кроме строковых констант!) без влияния на семантику программы, но переносы строк нельзя произвольно вырезать или заменять пробелами или точками с запятой. Минификатор, меняющей семантику валидных программ есть плохой, негодный минификатор, и единственный способ это написать полный и корректный парсер.

Переносы строк после return, break, continue и перед ++ и — влияют на парсинг. Поскольку ограничены только эти порождения, то пробелы и переносы строк могут быть свободно использованы в любом другом месте для улучшения читабельности программы. В частности, логические, арифметические, операторы строчной конкатенации, тройной (либо условный) оператор, доступ к члену через точку или скобки, вызовы функций, циклы while, for, операторы switсh, и остальные контрольные структуры могут быть записаны с разрывом строк где угодно.

Практический совет для программистов ECMAScript: постфиксные операторы «++» и «—» должны быть на одной строке со своим операндом. Выражение в операторах return или throw должно начинаться на одной строке с токеном return или throw. Идентификатор в операторе break или continue должен быть на одной строке с токеном break или continue.

Наиболее частая ошибка программиста при ограниченных порождениях — ставить возвращаемое значение на строку после токена return, особенно если возвращается большой объект или литерал массива, или многострочная константа. Ошибки с постфиксными операторами, и операторами break, continue, throw на практике редки, в силу того, что такое разбиение строки выглядит неестественным для большинства программистов.

Последняя тонкость автовставки «;» вытекает из первого правила, требующего, чтобы программа содержала недопустимый токен для вставки «;». Если вы пропускаете опциональные «;», помните, что есть и неопциональные, которые пропускать нельзя. Это правило позволяет растягивать операторы на несколько строк:

Правило касается лишь первого токена в строке. Если этот токен может отпарсится как часть оператора, то оператор продолжается (даже если парсинг не удастся дальше). Если же первый токен не может продолжить оператор, начинается следующий (в этом месте спецификация говорит «вставляется »;»»).

Потенциал для ошибок возникает, когда в паре операторов А и Б оба по отдельности валидны, но первый токен Б может также быть принят как продолжение А. В таких случаях, при остутствии «;», парсер не разберёт Б как отдельный оператор, и либо выдаст ошибку, либо отпарсит программу неожиданным образом. Таким образом, если «;» пропускаются, программисту нужно следить за любыми операторами А и Б, разделёнными переносом строки, не начинается ли Б с токена, который можно пристроить к концу А.

Большинство операторов в яваскрипте начинается идентификатором, а большинство остальных — ключевым словом наподобие «var», «function», «if». Для любого такого оператора Б, начинающего с идентификатора или ключевого слова, равно как и для любой строки, начинающейся со строковой константы, валидного оператора А не существует (доказательство сего из грамматики языка оставлено как упражнение для читателя).

К сожалению, есть пять токенов, которые могут как начинать оператор, так и продолжать уже завершённый. Это «(«, «[«, «/», «+» и «-«. На практике проблемы вызывают первые два.

Это значит, что не всегда перенос строки может заменить «;» между операторами.

Спецификация даёт пример:

не преобразуется автовставкой «;», так как выражение в скобках может быть отпарсено как аргумент вызова функции:

Спецификация предлагает, «когда оператор присваивания должен начинаться левой скобкой, неплохо явно поставить точку с запятой на предыдущей строке». Более строгой альтернативой является практика постановки ТЗ в начале строке, непосредственно перед токеном, рискующим внести двусмысленность:

Операторы, начинающиеся круглой или квадратной скобкой, нечасты, но встречаются.

Примеры с квадратной скобкой более часты, так как «функциональные» операции наподобие map, filter, forEach более часты при массивах. Часто удобно записать массивный литерал с forEach, нужным для своих побочных эффектов:

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

Последний проблемный токен это слеш, и он весьма неинтуитивен. Взгляните:

В строчках 1-3 мы заводим переменные, а на четвёртой мы вроде как пишем регекспный литерал «/[a-z]/g», который глобально находит a-z, а потом мы вызываем этот регексп со строкой методом exec. Так как возвращаемое значение exec() не используется, код не особо полезен, но мы бы ожидали, что он хотя бы скомпилируется. Однако же, слеш не только начинает регексп, но и является оператором деления. Это означает, что начальный слеш на строке 4 будет отпарсен как прдолжение оператора присваивания на предыдущей строке. Эти строки отпарсятся как «i равно 0 делить на [a-z] делить на g.exec(s)».

На практике эта проблема почти никогда не возникает, так как причин начинать оператор регекспом немного. В примере выше, значение вызова exec() обычно бы передавалось функции или присваивалось переменной, в любом из случаев строка бы не начиналась слешем. Возможное исключение это, опять же, метод forEach, который можно с пользой использовать [оригинал: usefully used] на значении, возвращённом вызовом exec().

Операторы «+» и «-» могут быть использованы как унарные, для преобразования значения к типу Number, и для реверсии знака в случае «-«. При использовании в начале строки при пропущенных «;» они могут быть восприняты как соответствующие бинарные операторы, и продолжение предыдущего оператора. Но и это редко составляет проблему, так как начальный унарный оператор встречается ещё реже, чем регексп (и он, к тому же, не выглядит завершённо). Как и с регекспами, если бы программист хотел привести значение к числу, он бы это значение как-то использовал, присвоил бы переменной, или передал функции, и ни в каком из этих случаев унарный оператор не был бы в начале:

Во всех таких случаях, если вы пропускаете «;», безопасной практикой является начинать строки со скобкой как раз точкой с запятой. Тот же совет для маловероятных случаев операторов «+», «-«, или слеша. Таким образом, даже если ТЗ не используются везде, строка будет защищена от неверного парсинга вне зависимости от того, как может измениться предыдущая строка.

Заблуждения

Многие начинающие программисты на яваскрипте получают советы ставить «;» везде, и полагают, что если они не используют правила автовставки «;», это свойство языка можно игнорировать. Это не так, из-за правил ограниченного порождения, приведённых выше, в особенности оператора return. А когда они знакомятся с ограниченным порождением, они начинаются боятся переносов строк, и избегают из даже когда они улучшают читабельность. Лучше всего освоить правила автовставки «;», чтобы мочь читать любой код, и мочь писать код наиболее ясным образом.

Ещё одно заблуждение гласит, что баги в броузерных движках яваскрипта означают, что ставить точки с запятой везде надёжнее, и что это повышает совместимость. Это просто не так. Все существующие броузеры реализуют спецификацию корректно в отношении автовставки «;», и любые баги, которые могли существовать, давно ушли во мрак ранней истории веба. Беспокоиться о бразуерной совместимости нет причин: все броузеры имплементируют эти правила так, так изложено выше.

Заключение

Ставить ли точки с запятой? Дело ваше. Просто выбор должен делаться на основании информации, а не туманных страхов по поводу неведомых синтаксических ловушек либо несуществующих багов броузеров. Если вы запомните эти правила, вы вооружены для верного выбора, и будет легко читать код на яваскрипте.

Если вы решили не ставить «;», советую вам ставить их перед открывающими скобками в операторах, которые ими начинаются, и в операторах, которые начинаются с «/», «+», «-«, если вам доведётся такой оператор написать.

Вне зависимости от точек с запятой, помните правила ограниченного порождения (return, break, continue, throw, и постфиксные операторы инкремента и декремента), и можете разбивать строки в любых других местах для удобства и читаемости кода.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *