Анимация
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

error leader( [file [, line]])

Возвращает начало сообщения об ошибке в формате "file", line line: . Если аргументы file и/или line опущены, используются текущие имя файла и номер строки. Такой формат сообщения об ошибке является общепринятым и воспринимается редактором Emacs и другими инструментами UNIX.

Экземпляры класса shlex также имеют следующие атрибуты, управляющие процессом лексического анализа:

commenters

Строка символов, которые воспринимаются как начало комментария. Все символы от начала комментария до конца строки игнорируются. По умолчанию включает только символ #.

wordchars

Строка символов, последовательности из которых воспринимаются как одна лексема. По умолчанию включает цифры, символ подчеркивания и буквы латинского алфавита.

whitespace

Строка из символов, которые считаются разделителями лексем (символы пропуска). По умолчанию этот атрибут равен \t\r\n.

quotes

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

infile

Имя текущего входного файла (или None, если имя файла не установлено). Полезен при конструировании сообщений об ошибке.

instream

Файловый объект, представляющий текущий входной поток. source

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

debug

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

lineno

Номер текущей строки (число прочитанных символов перехода на новую строку плюс 1).



30.4. cmd - создание командных интерпретаторов 417

token

Буфер лексем. Может быть полезен при обработке исключений.

Обратите внимание, что символы, не входящие в строки wordchars , whitespace и quotes , воспринимаются как односимвольные лексемы. Кроме того, символы кавычек внутри слов теряют свое значение, а комментарии маскируют также и символ перехода на новую строку. Так, ввод aint и ain#d\nt будут восприняты как одна и та же лексема - строка "aint".

30.4 cmd - создание командных интерпретаторов

Этот модуль определяет класс Cmd, который может служить основой при написании командных интерпретаторов, ориентированных на строки. Хорошим примером использования этого метода может послужить отладчик языка Python (модуль pdb).

Cmd()

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

Экземпляры класса Cmd имеют следующие методы и атрибуты данных:

cmdloop ([intro])

Выполняет в цикле следующие операции: выводит приглашение, воспринимает ввод, обрабатывает начало введенной команды и вызывает для ее выполнения соответствующий метод, передавая в качестве аргумента остаток строки. Аргумент intro (строка) определяет выводимый перед первым приглашением заголовок, по умолчанию используется атрибут intro .

Интерпретатор будет воспринимать команду foo только, если объект имеет метод do foo() . Символы ? и ! в начале строки воспринимаются как команды help и shell соответственно, конец файла - как команда EOF.

Предопределенный метод do help с аргументом bar вызывает метод help bar() . Без аргументов do help() выводит список всех доступных тем, для которых может быть получена помощь (определен соответствующий метод help *()), и список недокументированных команд. Класс Cmd не определяет методы do shell() и do EOF() .

Большинство методов do *() должно возвращать None. Если возвращаемое значение является истиной (и метод postcmd() не переопределен), работа интерпретатора будет завершена.

onecmd( str)

Воспринимает строку str, как если бы она была введена в ответ на приглашение интерпретатора.



emptyline()

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

default( line)

Этот метод вызывается, если первая лексема команды не распознана (не имеет соответствующего метода do *()). По умолчанию выводит сообщение об ошибке.

precmd( line)

Этот метод вызывается для предварительной обработки введенной строки (аргумент line). По умолчанию возвращает строку без изменений.

postcmd(stop, line)

Этот метод вызывается после обработки и выполнения команды. В качестве аргументов stop и line используются значение, возвращаемое соответствующим методом do *(), и строка ввода, обработанная методом precmd(). Если значение, возвращаемое этим методом, является истиной, работа интерпретатора будет завершена. По умолчанию возвращает свой аргумент stop без изменений.

preloop()

Этот метод вызывается один раз при запуске интерпретатора (вызове метода cmdloop() ) перед выводом заголовка. По умолчанию ничего не делает.

postloop()

Этот метод вызывается один раз при завершении работы интерпретатора. По умолчанию ничего не делает.

prompt

Строка, выводимая в качестве приглашения. По умолчанию используется (Cmd) .

identchars

Строка из символов, последовательность из которых воспринимается как один идентификатор. По умолчанию содержит цифры, символ подчеркивания и буквы1.

lastcmd

Строка, содержащая последнюю непустую команду (первую лексему введенной строки).

intro

Строка, которая используется в качестве заголовка, выводимого при запуске интерпретатора. Этот атрибут может быть переопределен, если при вызове метода cmdloop() использован аргумент, отличный от None.

doc header

Заголовок к списку документированных команд (для которых есть соответствующие методы do *() и help *()).

1 Текущая реализация использует данные в соответствии с национальными установками на момент инициализации модуля.



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