Как я могу заставить синтаксический анализатор, сгенерированный ANTLR3.5 в C, работать в среде MVS EBCDIC?

Мы используем ANTLR 3.5.2 в Linux для создания парсера на C. Нам удалось скомпилировать и связать сгенерированный парсер C и среду выполнения ANTLR C на z/OS с помощью компилятора LE C. Конечно, хотелось бы, чтобы парсер мог работать в среде EBCDIC.

Что нам нужно установить или изменить, чтобы это произошло? Легче ли запустить ANTLR на MVS, чтобы получить код, работающий на MVS, или можно продолжить генерировать код на Linux и запускать (с небольшими изменениями) на z/OS? Большое спасибо, Тони


person user3803240    schedule 25.02.2015    source источник
comment
Поиск в Google antlr z/os дает эту ссылку groups.google. com/forum/#!topic/il-antlr-interest/U5P7berIQO8, что кажется актуальным. Похоже, что принцип имеет идентификатор переполнения стека и может отображаться с более прямым ответом.   -  person cschneid    schedule 26.02.2015
comment
Актуально точно. Попробую то, что предлагает Джим Айдл. Я понимаю, что это означает компилировать для ascii и использовать преобразование ebcdic/ascii для ввода/вывода. Прокомментируем результаты после того, как попробуем это. Спасибо!   -  person user3803240    schedule 26.02.2015


Ответы (1)


Вы можете переключить кодовую страницу сгенерированных файлов на EBCDIC Latin-1, используя:

 ??=pragma filetag ("IBM-1047")

Тогда ваш синтаксический анализатор будет искать символы EBCDIC в правильных кодовых точках. Возможно, вы захотите внимательно изучить сгенерированный файл, чтобы увидеть, сгенерировал ли ANTLR явные порядковые номера ASCII (например, используя 0x13 вместо символа CR), и вам может потребоваться их исправить, но это не должно.

person Joe Zitzelberger    schedule 10.03.2015
comment
Спасибо, Джо. Это сработало. С правильной кодовой страницей все работает довольно хорошо. - person user3803240; 16.03.2015
comment
Рад, что смог помочь :-) - person Joe Zitzelberger; 17.03.2015
comment
Рискуя беззастенчиво накачать мою репутацию, если ответ вам помог, было бы неплохо проголосовать за него. подсказка подсказка - person Joe Zitzelberger; 20.03.2015