Запятые используются только в предложении изображения в Cobol - PullRequest
0 голосов
/ 30 сентября 2011

Я работаю с этим парсером http://mapage.noos.fr/~bpinon/cobol.jj и пытаюсь заставить картинки работать с запятыми. Кажется, он просто поддерживает запятые из строки изображения в качестве разделителя. Просто интересно, где еще запятые используются в Cobol.

Приветствия

1 Ответ

3 голосов
/ 30 сентября 2011

КОБОЛ имеет несколько разделителей.Запятая , за которой следует пробел , является одним из них.Однако запятая без пробела, как вы можете найти в строках PICTURE, является не разделителем, а частью строки PICTURE.Правила для разделителей COBOL не так уж и сложны.Обратите внимание, что точки, запятые и точки с запятой , за которыми следует пробел , всегда являются разделителями.Строго говоря, пространство необходимо, но несколько компиляторов (например, IBM Enterprise COBOL для z / OS) часто способны распознавать запятые, точки и точки с запятой, за которыми не следует пробел, в качестве разделителей на основе контекста, в котором они появляются (предупреждение можетбыть выдан, но действительный объектный модуль все еще генерируется).

Чтобы ответить на ваш конкретный вопрос: разделительная запятая может появляться везде, где может появиться пустое место.Запятая в контексте строки PICTURE является значимой и не рассматривается как спиратор (т. Е. После нее не должно быть пробела).

Может быть полезно отметить, что строки COBOL PICTURE разделенытолько по пробелу разделителя, запятой разделителя, точке с запятой или периоду разделителя.

При создании надежного анализатора COBOL вы скоро поймете, что есть три области исходного текста COBOL (после фазы «манипулирования текстом»)был завершен), которые требуют особого внимания.

  • КОММЕНТАРИЙ.Они устарели, но все еще часто встречаются во многих программах
  • Строки PICTURE
  • Все остальное

Блок «Все остальное» составляет основную часть исходного файла,тенденция состоит в том, чтобы сосредоточиться на синтаксическом анализе, в то же время игнорируя два других элемента.Однако строки PICTURE на самом деле являются довольно сложными объектами.КОММЕНТАРИЙ Записи просто глупы и потенциально могут быть удалены во время манипулирования текстом.

Прежде чем вы углубитесь в это, поймите, что грамматика, с которой вы работаете, предназначена только для распознавания исходного текста на языке COBOL после того, что обычно называют«манипулирование текстом» завершено.Это предварительный шаг, на котором раскрываются директивы COPY / REPLACE, обрабатываются строки продолжения и обрабатывается ряд других направляющих операторов COMPILER.Не стоит недооценивать работу, необходимую для выполнения этого шага.

Создание надежного синтаксического анализатора для COBOL является действительно сложной задачей.Это может занять лет , чтобы получить право.Частично потому, что язык не был разработан для анализа с использованием того, что с тех пор стало «отраслевым» стандартным методом синтаксического анализа, и частично потому, что каждый поставщик компиляторов COBOL имеет свой собственный набор уникальных отклонений от стандарта.

...