КОБОЛ имеет несколько разделителей.Запятая , за которой следует пробел , является одним из них.Однако запятая без пробела, как вы можете найти в строках PICTURE, является не разделителем, а частью строки PICTURE.Правила для разделителей COBOL не так уж и сложны.Обратите внимание, что точки, запятые и точки с запятой , за которыми следует пробел , всегда являются разделителями.Строго говоря, пространство необходимо, но несколько компиляторов (например, IBM Enterprise COBOL для z / OS) часто способны распознавать запятые, точки и точки с запятой, за которыми не следует пробел, в качестве разделителей на основе контекста, в котором они появляются (предупреждение можетбыть выдан, но действительный объектный модуль все еще генерируется).
Чтобы ответить на ваш конкретный вопрос: разделительная запятая может появляться везде, где может появиться пустое место.Запятая в контексте строки PICTURE является значимой и не рассматривается как спиратор (т. Е. После нее не должно быть пробела).
Может быть полезно отметить, что строки COBOL PICTURE разделенытолько по пробелу разделителя, запятой разделителя, точке с запятой или периоду разделителя.
При создании надежного анализатора COBOL вы скоро поймете, что есть три области исходного текста COBOL (после фазы «манипулирования текстом»)был завершен), которые требуют особого внимания.
- КОММЕНТАРИЙ.Они устарели, но все еще часто встречаются во многих программах
- Строки PICTURE
- Все остальное
Блок «Все остальное» составляет основную часть исходного файла,тенденция состоит в том, чтобы сосредоточиться на синтаксическом анализе, в то же время игнорируя два других элемента.Однако строки PICTURE на самом деле являются довольно сложными объектами.КОММЕНТАРИЙ Записи просто глупы и потенциально могут быть удалены во время манипулирования текстом.
Прежде чем вы углубитесь в это, поймите, что грамматика, с которой вы работаете, предназначена только для распознавания исходного текста на языке COBOL после того, что обычно называют«манипулирование текстом» завершено.Это предварительный шаг, на котором раскрываются директивы COPY / REPLACE, обрабатываются строки продолжения и обрабатывается ряд других направляющих операторов COMPILER.Не стоит недооценивать работу, необходимую для выполнения этого шага.
Создание надежного синтаксического анализатора для COBOL является действительно сложной задачей.Это может занять лет , чтобы получить право.Частично потому, что язык не был разработан для анализа с использованием того, что с тех пор стало «отраслевым» стандартным методом синтаксического анализа, и частично потому, что каждый поставщик компиляторов COBOL имеет свой собственный набор уникальных отклонений от стандарта.