>>  <<  Ркв  Ввд  JfC  LJ  Фрз  Слв  Изм  Рзг  !:  Помощь  Словарь

Отладка 13!:

См. Раздел II.J и сценарий system\main\debug.ijs.

13!:0 y Сброс. Сбросить стек и выключить (0) или включить (1) прерывание. Практически все подсистемы семейства 13!: требуют, чтобы прерывание было включено; все примеры ниже предполагают, что прерывание включено: 13!:0 ]1 . Только именованные определения (глаголы, наречия, или союзы) могут быть прерваны.
 
13!:1 y Показать Стек. В стек помещаются только именованые определения (глаголы, наречия, или союзы). См. также 13!:13 и 13!:18 .
 
13!:2 y Запросить Ловушки.
 
13!:3 y Установить Ловушки. Ловушки устанавливаются по имени и номеру строки в аргументе y, содержащем ноль или более описаний ловушек, разделенных точками с запятой. Каждое описание указывает имя, номера строк (если есть) в монадном случае, двоеточие, и номера строк (если есть) в диадном случае. Звездочка обозначает “все”, и тильда обозначает “кроме”. Например:
13!:3 'f 0' f строка 0 монадного случая
13!:3 'f :2' f строка 2 диадного случая
13!:3 'f 0 2:1' f монадный 0 2, диадный 1
13!:3 'f 0; g :*' f монадный 0 и g все строки диадного
13!:3 '* 0:0' монадный 0 и диадный 0
13!:3 'a* *:*; ~ab* *:*'   Все монадные и диадные случаи определений, имена которых начинаются на a, кроме тех, имена которых начинаются на ab
   f=: 3 : 0
10
11
:
20
)
   13!:3 'f 1:0'      Прервать f на стр. 1 монады, и стр. 0 диады
   f ''
|stop: f
|       11
|f[1]
      13!:0 ]1        Очистить стек и включить прерывание
   3 f 4
|stop: f
|       20
|f[:0]
13!:4 y Продолжить Снова. Продолжить выполнение с текущей строки. Например:
   g=: 3 : ('t=. 2*y'; '1+t')
   3 4,g 'abc'
|domain error: g
|   t=.2    *y
|g[0]
      y               отступ в 6 пробелов означает прерывание
abc                   Локальное значение y
      y=. 25          Переопределить локальное значение y.
      13!:4 ''        Продолжить, попытавшись выполнить снова
3 4 51
13!:5 y Продолжить Дальше. Продолжить выполнение со следующей сроки. Например:
   h=: 3 : ('t=. 2 3*y'; '1+t')
   3 4,h 5 6 7
|length error: h
|   t=.2 3    *y
|h[0]
      t=. 99          отступ в 6 пробелов означает прерывание
      13!:5 ''        Продолжить дальше
3 4 100
13!:6 y Выйти и Вернуть. Выходит из глагола/наречия/союза на вершине стека, возвращая результат y . Например:
   g=: 3 : ('t=. 2*y'; '1+t')
   3 4,g 'abc'
|domain error: g
|   t=.2    *y
|g[0]
      13!:6 [9        Выйти из g с результатом 9
3 4 9
   h=: 2&*
   3 4,h 'abc'
|domain error: h
|h[0]
      13!:6 [97       Выйти из h с результатом 97
3 4 97
13!:7 y Продолжить На. Продолжить выполнение со строки под номером y
 
[x] 13!:8 y Выдать ошибку. Выдать ошибку с кодом {.,y (целое от 1 до 255) и (необязательным) текстовым сообщением x
 
[x] 13!:9 y Выполнить Еще Раз. Продолжить выполнение, выполнив еще раз неявный глагол на вершине стека с указанными аргументами. Таким образом:
   plus=: +
   plus/'abc'
|domain error: plus
|plus[:0] *
      13!:13 ''       Интерпретацию стека см. ниже
+----+-+-+-+-++-----+--+-+
|plus|3|0|3|+||+-+-+|  |*|
|    | | | | |||b|c||  | |
|    | | | | ||+-+-+|  | |
+----+-+-+-+-++-----+--+-+
      2 (13!:9) 3     Еще раз, получая другую ошибку
|domain error: plus
|plus[:0] !
      13!:13 ''       Обратите внимание на аргументы ('a' и 5)
+----+-+-+-+-++-----+--+-+
|plus|3|0|3|+||+-+-+|  |*|
|    | | | | |||a|5||  | |
|    | | | | ||+-+-+|  | |
+----+-+-+-+-++-----+--+-+
      1 (13!:9) 5     Еще раз 
6
13!:11 y Код Ошибки. Код последней ошибки. Для работы не требует включенного прерывания.
 
13!:12 y Сообщение об Ошибке. Сообщение о последней ошибке. Для работы не требует включенного прерывания.
 
13!:13 y Стек. Производит матрицу из 9-ти столбцов с информацией о (именованых) глаголах/наречиях/союзах в стеке:
0  Имя
1Код ошибки или 0 если ее не было
2Номер строки
3Класс имени: 3, 1, или 2, соотв. глаголу, наречию или союзу
4Линейное представление обьекта
5Имя определяющего сценария
6Аргумент(ы) упакованные индивидуально
7Локальные имена в виде матрицы из 2-х столбцов: имени и значения
8* если начало прерывания; иначе пробел

В столбцах 6 и 7, существительные приводятся "как есть", а глаголы, наречия и союзы в их линейном представлении. Например:
   mean=: sum % #
   sum=: plus/
   plus=: 4 : 'x+y'
   mean 'abcd'
|domain error: plus
|   x    +y
|plus[:0]

      13!:13 ''       Заметьте, неявные о. не имеют локальных
+----+-+-+-+---------++------+-----+-+
|plus|3|0|3|4 : 'x+y'||+-+-+ |+-+-+|*|
|    | | | |         |||c|d| ||x|c|| |
|    | | | |         ||+-+-+ |+-+-+| |
|    | | | |         ||      ||y|d|| |
|    | | | |         ||      |+-+-+| |
+----+-+-+-+---------++------+-----+-+
|sum |0|0|3|plus/    ||+----+|     | |
|    | | | |         |||abcd||     | |
|    | | | |         ||+----+|     | |
+----+-+-+-+---------++------+-----+-+
|mean|0|0|3|sum % #  ||+----+|     | |
|    | | | |         |||abcd||     | |
|    | | | |         ||+----+|     | |
+----+-+-+-+---------++------+-----+-+
13!:14 y Запросить Латентное Выражение.
 
13!:15 y Установить Латентное Выражение. Латентное выражение выполняется перед тем как выполнение вот-вот прервется; сообщения об ошибках не выводятся; any continuation must be programmed in the latent expression.
 
13!:17 y Запросить. Включено ли прерывание ? (Устанавливается 13!:0)
 
13!:18 y Стек как Текст. Как 13!:1, но выдает стек в виде текстовой таблицы.
 

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

Доступны еще четыре глагола. Они являются частью отладочной подсистемы интегрированной среды языка J и обычно не вызываются явно. Их поведение и доступность могут быть изменены в будущем без предупреждения.

 
13!:19 y Отрезать Назад. Отрезать верхний уровень стека, останавливаясь на первой строке, исполняемой на следующем уровне.
 
[x] 13!:20 y Перешагнуть. Выполнить текущую строку (или строку x, если указана) до завершения, останавливаясь на следующей строке.
 
[x] 13!:21 y Войти. Выполнить текущую строку (или строку x, если указана), останавливаясь на следующей исполняемой строке.
 
[x] 13!:22 y Выйти. Выполнить текущий обьект до конца, начиная с текущей строки (или строки x, если указана), останавливаясь на следующей исполняемой строке.



>>  <<  Ркв  Ввд  JfC  LJ  Фрз  Слв  Изм  Рзг  !:  Помощь  Словарь