Добавление нового языкового процессора

From EjudgeWiki
Revision as of 08:29, 7 August 2008 by Cher (talk | contribs)

Навигация: Главная страница/Система ejudge/Расширение/Добавление нового языка программирования или компилятора.

Руководство по добавлению поддержки языков программирования, приведенное здесь, относится к системе ejudge версии не ниже 2.3.8.

Добавление поддержки нового языка программирования в систему ejudge выполняется в несколько шагов.

  1. Определение параметров добавляемого языка
  2. Написание настроечного скрипта (lang-version.in)
  3. Написание скрипта компиляции (lang.in)
  4. Переконфигурация поддерживаемых языков с помощью программы ejudge-configure-compilers

Определение параметров языка программирования

Основной параметр языка программирования — это архитектура. Под архитектурой понимается системное окружение, в котором запускается тестируемая программа. Система ejudge поддерживает следующие архитектуры:

  • linux — статически скомпонованная исполняемая программа
  • linux-shared — динамически скомпонованная исполняемая программа (в том числе и скрипты)
  • java — байт-код java
  • msil — байт-код .NET
  • dos — приложения DOS

Обозначим архитектуру языка программирования как arch.

Второй параметр языка — это флаг, корректно ли работает тестируемая программа на данном языке при запуске в безопасном режиме. Если язык имеет архитектуру linux, java или dos, то тестируемые программы на таком языке, как правило, корректно работают в безопасном режиме, при этом поддерживаются все ограничения безопасности. Если язык имеет архитектуру msil, то безопасный режим для него не поддерживаются. Приложения на таком языке могут тестироваться, но при этом никаких ограничений безопасности на работу приложения накладываться не будет. Если язык имеет архитектуру linux-shared, то безопасный режим для такого языка поддерживается, однако тестируемая программа в безопасном режиме может работать некорректно или не работать вообще.

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