Postscript文件提前阅读

时间:2014-02-28 16:26:40

标签: file postscript peek

我是直接编写postscript的新手。

我正在读取文件,我正在使用read命令来解析符号。

我要检查的大多数符号长度为2个字符,一个长度为3个字符。我会将长度为3个字符的那个改为两个字符,但由于以下原因,这无济于事:

  1. 符号是标准,所以我不能说..好吧,谢谢你制作 其中只有一个与其他人不同的3个字符!
  2. 包含3个字符的符号的前2个字符与另一个符号相同。
  3. 如果前两个符号匹配,我需要能够“查看”文件中的下一个字符,如果偷看的字符与我想要制作3个字符的符号不匹配则不能修改读取顺序

    实施例: 将文本文本作为字符串:“AB3; ABB4;”

    在这种情况下,我会读A,然后是B,因为两个字符在一起是“AB”,我需要看看读下一个字符是否会产生B ..如果没有,我不想修改我的阅读顺序,所以我可以正常进行代码提取值。如果是的话,我现在有了3个字符符号,可以继续正常提取值。

    谢谢。

1 个答案:

答案 0 :(得分:0)

Postscript没有unget函数,因此您无法将一个字节推回到流上以便稍后再次读取它。但是,根据操作系统支持,Level 2 Postscript允许您重新定位文件。因此,您可以像这样实现peek函数:

% file  peek  int true
%             false
/peek {
    dup fileposition exch dup  % pos file file
    read { %true:  pos file int
        3 1 roll exch setfileposition true
    }{ %false: pos file
        pop pop false
    } ifelse
} def