0

我正在使用这个解析器http://mapage.noos.fr/~bpinon/cobol.jj并试图让图片与逗号一起使用。它似乎只支持图片字符串中的逗号作为分隔符。只是想知道 Cobol 中还有哪些地方使用了逗号。

干杯

4

1 回答 1

3

COBOL 有几个分隔符。逗号后跟空格就是其中之一。但是,您可能会在 PICTURE 字符串中找到不带空格的逗号,它不是分隔符,而是 PICTURE 字符串的一部分。COBOL 分隔符的规则 并不复杂。请注意,句点、逗号和分号后跟空格始终是分隔符。严格来说,空格是必需的,但一些编译器(例如 IBM Enterprise COBOL for z/OS)通常能够根据它们出现的上下文将逗号、句点和不跟空格的分号识别为分隔符(警告可能发出但仍然生成有效的目标模块)。

要回答您的具体问题:分隔符逗号可以出现在任何可以出现空格的地方。PICTURE 字符串上下文中的逗号很重要,不被视为分隔符(即,它后面不能跟空格)。

请注意,COBOL PICTURE 字符串仅由分隔符空格、分隔符逗号、分隔符分号或分隔符句点分隔。

在构建健壮的 COBOL 解析器时,您很快就会认识到 COBOL 源文本的三个区域(在“文本操作”阶段完成之后)需要特别注意。

  • 评论条目。这些已折旧,但在许多程序中仍然很常见
  • 图片字符串
  • 其他一切

“其他所有”块构成了源文件的大部分,倾向于专注于解析它,而几乎忽略了其他两项。然而,PICTURE 字符串实际上是相当复杂的实体来处理。评论条目只是愚蠢的,可能会在文本操作期间被删除。

在深入了解这一点之前,请认识到您正在使用的语法仅用于在完成通常称为“文本操作”之后识别 COBOL 源文本。这是扩展 COPY/REPLACE 指令、处理续行并处理许多其他编译器指令语句的前置步骤。不要低估执行此步骤所需的工作。

为 COBOL 构建一个健壮的解析器确实是一项艰巨的任务。可能需要数年时间才能做到正确。部分原因是该语言并非设计为使用后来成为“行业”标准解析技术的东西进行解析,部分原因是每个 COBOL 编译器供应商都有自己的一组与标准的特殊差异。

于 2011-09-30T14:46:22.763 回答