Интерпретаторы и shebang

Обсуждение вопросов, связанных с системой проведения турниров ejudge.
Post Reply
zodiac
Posts:3
Joined:17 November 2014, 19:06
Интерпретаторы и shebang

Post by zodiac » 17 November 2014, 20:24

Сейчас для проверки задач на интерпретируемых языках используется следующий подход:
  1. Записываем в начало файла "#! interpreter [optional-arg]".
  2. Копируем все из присланного исходника.
Проблема в том, что optional-arg должен либо отсутствовать, либо содержать одно слово без пробелов, так как реализация этого механизма на разных системах разная. В Линуксе, например, вся строка после interpreter передается единым аргументом интерпретатору [1] [2] [3].

Из-за этого могут возникнуть проблемы для таких языков, как:
  • Dr. Scheme (mzscheme.in),
  • Perl (perl.in),
  • PHP (php.in),
  • Python (pypy.in, pypy3.in, python.in, python3.in),
  • Ruby (ruby.in),
  • yabasic (yabasic.in).
Например, для языка Python строка запуска интерпретатора следующая:

Code: Select all

echo "#! ${PYTHONPATH} -W ignore ${EJUDGE_FLAGS}" > $2
Но запустится он так:

Code: Select all

${PYTHONPATH} "-W ignore ${EJUDGE_FLAGS}" [filename]
Как решить эту проблему со "склеиванием" аргументов?
Last edited by zodiac on 21 November 2014, 13:30, edited 1 time in total.

cher
Posts:1153
Joined:13 March 2004, 17:00
Contact:

Re: Интерпретаторы и shebang

Post by cher » 21 November 2014, 13:18

Похоже, что только подстановкой своего скрипта интерпретации в PYTHONPATH

Post Reply