2012-05-29 4 views
3

Я работаю над парсером кода, который построен на Rexx. Это один скрипт файла с примерно 5000 строк кода или больше. Раньше я никогда не работал над Rexx. Добавляя к этому, проблема читаемости делает мою жизнь еще более жесткой. Итак,Как отлаживать код Rexx?

Есть ли инструменты для отладки и понимания кода Rexx?

+2

Учитывая, насколько сильно Майк Коулишов работал над тем, как сделать Rexx удобочитаемым, я должен спросить: «Что вы испытываете?»? Предполагая, что вы читаете английский, программа Rexx в значительной степени делает то, что говорят слова. –

+0

@RossPatterson. Читаемость не является языком w.r.t.Это нужно сделать больше с 5000+ loc, вымощенными в один скрипт. –

+0

В зависимости от того, на кого вы работаете, я, возможно, написал этого монстра :-) –

ответ

8

Использовать заявление trace? Самый простой способ отслеживания - «A». Это заставляет каждую команду отображаться до ее выполнения. Ваша инструкция отображается с номером строки и тремя символами -, предшествующими ей, чтобы вы могли идентифицировать ее как строку в своем скрипте.

+2

Правильно, 'TRACE' - обычный ответ. В частности, «TRACE? I» запускает то, что большинство IDE описывают как одношаговый отладчик. Когда программа приостанавливается и отладчик берет верх, вы можете ввести любой оператор Rexx, такой как 'SAY variableICareAbout' или' SomeVar = 'Новое значение' '. –

2

Wikipedia имеет pretty good article on Rexx, что должно помочь вам понять синтаксис Rexx и структуру программы. И почти любая книга Rexx будет применяться к вашей среде, потому что Rexx чрезвычайно кросс-система (аналогично тому, что относится к младшим языкам Perl и Python). Существует не так много онлайн-книг, потому что почти все, что написано о Rexx, было написано до того, как существовала сеть, но reference manual для Regina implementation есть, и это особенно хорошая справочная работа.

0

Дата по этому вопросу устарела, но я поделюсь тем, что нашел полезным для следующего человека, который подтягивает это. Уже упоминался вариант TRACE. Я нашел, что это может быть подавляющим в небольшом наборе кода, не говоря уже о 5000 или более строк.
Вот некоторые варианты, которые я нашел полезными:

  1. Используйте «if», чтобы включить трассировку только в определенных ситуациях.
    if counter < 25 then trace "A"
    Не забудьте выключить трассировку прочь:
    else trace "OFF"
  2. Использование say с последующим pull. То, что сказано, останется на экране, пока вы не нажмете enter.
  3. Добавить подпрограмму:
    AskIt:
    parse pull comment
    say comment
    say 'enter "X" to exit program'
    pull continue
    if Continue \= "X" then return
    exit
    Это вызывается с call AskIt "In routine that loops, counter=" counter
    и будет отображаться:
    In routine that loops counter='##
    enter "X" to exit program
    Тестер выбирает, чтобы вернуться к коду, нажав кнопку ввода или выхода из программы с помощью X, чтобы отредактировать источник.
    Временная вставка return в строке, следующей за лейблом подпрограммы, позволит вам запускать код без прерывания без удаления всех вызовов.

    Я написал макрос редактирования для z/OS, который вставляет say *routine name* после каждой стандартной метки. Он вставляет код с /* comment */, содержащий легко идентифицированную фразу для упрощения очистки.
    Аудитория для этого была бы небольшой, поэтому я не буду включать здесь код.

    Надеюсь, это поможет кому-то.
Смежные вопросы