Commas只用于Cobol中的图片条款

时间:2011-09-30 10:38:37

标签: cobol javacc

我正在使用此解析器http://mapage.noos.fr/~bpinon/cobol.jj并尝试使用逗号处理图片。它似乎只是支持图片字符串中的逗号作为分隔符。 只是想知道在Cobol中还有其他逗号使用的地方。

干杯

1 个答案:

答案 0 :(得分:3)

COBOL有几个分隔符。逗号后跟空格就是其中之一。然而, 逗号后面没有空格,就像在PICTURE字符串中找到的那样,不是分隔符而是 PICTURE字符串的一部分。 rules for COBOL separators {{3}} 并不是那么复杂。请注意,句点,逗号和分号后跟空格始终是分隔符。 严格来说,这个空间是必要的,但有几个编译器(例如IBM Enterprise COBOL for z / OS) 通常能够识别逗号,句号和分号后面没有空格作为基于的分隔符 它们出现的上下文(可能会发出警告,但仍会生成有效的对象模块)。

要回答您的具体问题:分隔符逗号可以出现在任何可以显示空格的位置。 PICTURE字符串上下文中的逗号很重要,不会被视为一个spearator(即它不能跟一个空格)。

可能需要注意的是,COBOL PICTURE字符串仅由分隔符空格,分隔符逗号,分隔符分号或分隔符句点分隔。

在构建强大的COBOL解析器时,您很快就会发现有三个区域 COBOL源文本(在“文本操作”阶段完成之后) 这需要特别注意。

  • 评论条目。这些是折旧的,但在许多程序中仍然很常见
  • PICTURE Strings
  • 其他所有

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

在你深入研究之前,要认识到你正在使用的语法只是为了设计 在通常所谓的“文本操作”已经完成之后识别COBOL源文本。 这是一个前期步骤 COPY / REPLACE指令被扩展,继续行被处理以及许多其他指令 处理编译器指示语句。不要 低估了执行此步骤所需的工作。

为COBOL构建强大的解析器是一项真正艰巨的任务。为了做到这一点,可能需要。 部分原因是因为该语言不是设计为使用已经成为的东西进行解析 “行业”标准解析技术,部分原因是每个COBOL编译器供应商都有 它与标准有一套特殊的差异。