Python/Справочник по языку Python 3.1: различия между версиями

Содержимое удалено Содержимое добавлено
Строка 130:
Каждое правило начинается с имени (которое является именем, определенным правилом), и символов ":: =". Вертикальный штрих (|) используется, чтобы разделять альтернативы; это - наименее обязательный оператор в этой нотации. Звездочка (*) означает нуль или больше повторений предыдущего элемента; аналогично, плюс (+) означает одно или более повторений, а фраза, заключенная в квадратные скобки ([ ]) означает нуль или более повторов вхождения (другими словами, заключенная в них фраза является опциональной). "*" и "+" операторы связаны настолько сильно насколько возможно; круглые скобки используются для группировки. Литеральные строки заключаются в кавычки. Пустое пространство также является значимым для разделения лексемм. Правила обычно заданы в одной строке; правила со многими альтернативами могут быть отформатированы иначе - каждая следующая строка после первой начинается с вертикального штриха.
 
В лексических определениях (таких, как в примере выше), используются два дополнительных соглашения: Два буквенных символа разделенные тремя точками означают выбор одного символа из заданного этим выражением диапазона (включающего два вышеуказанных символа) ASCII символов. Фраза, заключенная в угловые скобки (<...>) дает неформальное описание заданного символа; например это может использоваться для описания значения 'управляющих символов', если таковое описание необходимо.
<!--
 
<!--
In lexical definitions (as the example above), two more conventions are used: Two literal characters separated by three dots mean a choice of any single character in the given (inclusive) range of ASCII characters. A phrase between angular brackets (<...>) gives an informal description of the symbol defined; e.g., this could be used to describe the notion of ‘control character’ if needed.
 
Even though the notation used is almost the same, there is a big difference between the meaning of lexical and syntactic definitions: a lexical definition operates on the individual characters of the input source, while a syntax definition operates on the stream of tokens generated by the lexical analysis. All uses of BNF in the next chapter (“Lexical Analysis”) are lexical definitions; uses in subsequent chapters are syntactic definitions.