Японский Код КОБОЛа: правила для литералов G и идентификаторов?

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

VivaMP является подобным линту статическим анализатором кода C/C++, предназначенным для указания на ошибки в параллельных программах на основе технологии OpenMP. VivaMP статический анализатор добавляет много к способностям существующих компиляторов, диагностирует любой параллельный код, который имеет некоторые ошибки или является возможным источником таких ошибок. Анализатор интегрируется в среду разработки VisualStudio2005/2008.

VivaMP †“инструмент для Прерываний OpenMP

32 OpenMP Для Разработчиков C++

11
задан Makoto 29 April 2012 в 17:53
поделиться

2 ответа

Попытайтесь добавить одинарную кавычку в свое правило, чтобы увидеть, проходит ли оно путем внесения этого изменения,

  <squote><squote> => <squote>{1,2}

Если я правильно помню, одно различие между литералами N и G состоит в том, что G допускает одиночные цитата. Ваше регулярное выражение этого не допускает.

РЕДАКТИРОВАТЬ: Я думал, что у вас все другие литералы DBCS работают и у вас просто проблемы с G-строкой, поэтому я просто указал на разницу между N и G. Теперь я внимательно рассмотрел ваш RE. Есть проблемы. В используемом мною коболе вы можете смешивать ASCII с японским, например

  G"ABC<ヲァィ>" <> are Shift-out/shift-in

You RE предполагает только DBCS. Я бы снял это ограничение и попробовал еще раз.

Я не думаю, что можно полностью обрабатывать литералы G в регулярном выражении. Невозможно отслеживать соответствие котировок и SO / SI с помощью одного конечного автомата. Ваш RE настолько сложен, потому что он пытается сделать невозможное. Я бы просто упростил это и позаботился о несоответствии токенов вручную.

Вы также можете столкнуться с проблемами кодирования. Код может быть в EBCDIC (Катакана) или UTF-16, рассматривать его как ASCII не получится. SO / SI иногда преобразуются в 0x1E / 0x1F в Windows.

Я просто пытаюсь помочь вам снимать в темноте, не видя фактического кода :)

2
ответ дан 3 December 2019 в 12:05
поделиться

Does also include single and double quotation marks, or just apostrophes? That would be a problem, as it would consume the literal closing character sequence >' ...

I would check the definition of all other macros to make sure. The only obvious problem that I can see is the that you already seem to be aware of.

1
ответ дан 3 December 2019 в 12:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: