Анимация
JavaScript


Главная  Библионтека 

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 [ 137 ] 138 139 140 141 142 143 144 145

Приложение B

Грамматика языка

Здесь используются следующие обозначения для лексем:

NAME

Имя (идентификатор).

NUMBER

Числовое литеральное выражение. STRING

Строковое литеральное выражение.

NEWLINE

Символ (или последовательность из двух символов), обозначающий переход на новую строку.

ENDMARKER

Конец файла (потока).

INDENT

Увеличение уровня отступа.

DEDENT

Уменьшение уровня отступа.

Начальные символы грамматики:

single input

Одна интерактивная инструкция.

file input

Модуль или последовательность команд, считываемая из файла.

eval input

Инструкция-выражение, передаваемое функции eval() или ввод, получаемый функцией input() .

single input: NEWLINE

simple stmt compound stmt NEWLINE



file input: eval input:

(NEWLINE stmt)* ENDMARKER testlist NEWLINE* ENDMARKER

funcdef:

parameters:

varargslist:

fpdef:

fplist:

def NAME parameters : suite ( [varargslist] ) (fpdef [= test] ,)*

(* NAME [, ** NAME] ** NAME) fpdef [= test] (, fpdef [= test])* [,]

NAME ( fplist ) fpdef (, fpdef)* [,]

stmt:

simple stmt: small stmt:

expr stmt:

augassign:

print stmt:

del stmt:

pass stmt:

flow stmt:

simple stmt compound stmt small stmt (; small stmt)* [;]

NEWLINE

expr stmt print stmt del stmt pass stmt flow stmt import stmt global stmt exec stmt assert stmt

testlist (augassign testlist (= testlist)*)

+= -= *= /= %= &= = = <<= >>= i**=i

print ( [ test (, test)* [,] ] >> test [ (, test)+ [,] ] )

del exprlist

pass

break stmt continue stmt return stmt raise stmt

break stmt:

break



continue stmt: continue return stmt: return [testlist]

raise [test [, test [, test]]]

raise stmt: import stmt:

import dotted as name (, dotted as name)* from dotted name import (* import as name (, import as name)*)

import as name: NAME [NAME NAME] dotted as name: dotted name [NAME NAME]

dotted name: global stmt: eXec stmt: assert stmt:

NAME (. NAME)*

global NAME (, NAME)*

exec expr [in test [, test]]

assert test [, test]

compound stmt: if stmt while stmt for stmt

try stmt funcdef classdef

if stmt:

while stmt:

for stmt:

try stmt:

if test : suite (elif test : suite)* [else : suite]

while test : suite [else : suite]

for exprlist in testlist : suite [else : suite]

(try : suite (except clause : suite)+ [else : suite] try : suite finally : suite)

except clause: except [test [, test]]



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 [ 137 ] 138 139 140 141 142 143 144 145