Difference between revisions of "Serve.cfg:global:preserve line numbers"
(Created page with "Навигация: Главная страница/Система ejudge/Использование/Конфигурационные файлы/se...") |
(...) |
||
Line 1: | Line 1: | ||
Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Использование]]/[[Конфигурационные файлы]]/[[serve.cfg]]/[[serve.cfg:global|Глобальные конфигурационные параметры]]/<code>[[Serve.cfg:global:preserve_line_numbers|preserve_line_numbers]]</code> | Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Использование]]/[[Конфигурационные файлы]]/[[serve.cfg]]/[[serve.cfg:global|Глобальные конфигурационные параметры]]/<code>[[Serve.cfg:global:preserve_line_numbers|preserve_line_numbers]]</code> | ||
+ | |||
+ | Для скриптовых языков, таких как python или node, процесс "компиляции" | ||
+ | заключается к приписыванию в начале файла конструкции <code>#! INTERP</code>. | ||
+ | После этого файл с программой на интерпретируемом языке может исполняться | ||
+ | стандартными средствами Unix без явного указания соответствующего | ||
+ | интерпретатора в строке запуска. То есть с точки зрения компонента | ||
+ | тестирования [[ej-super-run]] "скомпилированные" программы на скриптовых | ||
+ | языках ничем не отличаются от скомпилированных исполняемых программ | ||
+ | на языках C, C++, rust, go и аналогичных. | ||
+ | |||
+ | Однако у такой модели исполнения есть нежелательный побочный эффект: | ||
+ | номера строк программы при выполнении отличаются от номеров строк | ||
+ | программы, сданной на проверку. Поэтому сообщения об ошибках в программе, | ||
+ | выдаваемые при ее выполнении, имеют номера строк, не соответствующие | ||
+ | номерам строк в исходной программе. | ||
+ | |||
+ | Если в конфигурационном файле турнира задать глобальный конфигурационный | ||
+ | параметр <code>preserve_line_numbers</code> в положительное значение, | ||
+ | программы на скриптовых языках будут обрабатываться таким образом, | ||
+ | что номера строк при выполнении программы будут соответствовать | ||
+ | номерам строк в сданном программе. | ||
+ | |||
+ | Опция работает при условии, что не используются файлы, добавляемые | ||
+ | к исходному коду программы (<code>[[Serve.cfg:problem:source_header|source_header]]</code>). | ||
+ | |||
+ | Пример: | ||
+ | preserve_line_numbers | ||
+ | |||
+ | Поддерживается начиная с версии [[изменения в версии 3.11.0|3.11.0]]. |
Latest revision as of 22:21, 10 August 2023
Навигация: Главная страница/Система ejudge/Использование/Конфигурационные файлы/serve.cfg/Глобальные конфигурационные параметры/preserve_line_numbers
Для скриптовых языков, таких как python или node, процесс "компиляции"
заключается к приписыванию в начале файла конструкции #! INTERP
.
После этого файл с программой на интерпретируемом языке может исполняться
стандартными средствами Unix без явного указания соответствующего
интерпретатора в строке запуска. То есть с точки зрения компонента
тестирования ej-super-run "скомпилированные" программы на скриптовых
языках ничем не отличаются от скомпилированных исполняемых программ
на языках C, C++, rust, go и аналогичных.
Однако у такой модели исполнения есть нежелательный побочный эффект: номера строк программы при выполнении отличаются от номеров строк программы, сданной на проверку. Поэтому сообщения об ошибках в программе, выдаваемые при ее выполнении, имеют номера строк, не соответствующие номерам строк в исходной программе.
Если в конфигурационном файле турнира задать глобальный конфигурационный
параметр preserve_line_numbers
в положительное значение,
программы на скриптовых языках будут обрабатываться таким образом,
что номера строк при выполнении программы будут соответствовать
номерам строк в сданном программе.
Опция работает при условии, что не используются файлы, добавляемые
к исходному коду программы (source_header
).
Пример:
preserve_line_numbers
Поддерживается начиная с версии 3.11.0.