Мы создаем анализатор кода VivaMP для обнаружения ошибок в параллельных программах OpenMP.
VivaMP является подобным линту статическим анализатором кода C/C++, предназначенным для указания на ошибки в параллельных программах на основе технологии OpenMP. VivaMP статический анализатор добавляет много к способностям существующих компиляторов, диагностирует любой параллельный код, который имеет некоторые ошибки или является возможным источником таких ошибок. Анализатор интегрируется в среду разработки VisualStudio2005/2008.
Попытайтесь добавить одинарную кавычку в свое правило, чтобы увидеть, проходит ли оно путем внесения этого изменения,
<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.
Я просто пытаюсь помочь вам снимать в темноте, не видя фактического кода :)
Does
I would check the definition of all other macros to make sure. The only obvious problem that I can see is the