如何解决如何在 postscript 中创建以斜杠为键的字典
所以我在 Postscript 中知道这些基本的 dict 命令:
i dict
创建一个包含 i
个条目的字典
d begin
将字典 d
移动到字典堆栈
end
从字典栈中移除最顶层的字典
d n w put
在字典 w
n
存储值 d
我想做的是创建一个表示不同操作数关联性的字典。 +
操作数和 -
操作数共享相同的优先级,因此它们都设置为 0,*
和 /
操作数也共享相同的优先级,但具有更高的优先级优先级高于 +
和 -
,因此设置为 1 等等...
问题是,我无法将字典键设置为 /
,因为它被视为某种“分隔符”。有什么办法可以解决这个问题,因为我无法更改密钥,也无法创建这样的字典:
/prioritydict 5 dict def
prioritydict /(-) 0 put
prioritydict /(+) 0 put
prioritydict /(*) 1 put
prioritydict /(/) 1 put
prioritydict /(^) 2 put
也不喜欢这样:
/prioritydict 5 dict def
prioritydict /- 0 put
prioritydict /+ 0 put
prioritydict /* 1 put
prioritydict // 1 put
prioritydict /^ 2 put
非常感谢任何帮助
解决方法
您可以使用 cvn(转换为名称)运算符将您想要的任何形式的字符串转换为文字名称。这些都应该是等价的:
prioritydict <2f> cvn 1 put
prioritydict (\/) cvn 1 put
prioritydict (\057) cvn 1 put
,
%!
/prioritydict 5 dict def
prioritydict begin
/+ 0 def
/- 0 def
/* 1 def
%// 1 def conflicts with immediately evaluated name
/^ 2 def
* ^ add =
,
如果您只想使用字面名称提及它,那么您可以只使用一个斜线。
/
也就是说,一个空名称,仅由装饰器和下一个分隔符(空格或换行符或括号或大括号)前的零个字符表示。
您应该能够定义并加载它,但是您不能直接为其创建可执行文件名称,因此您不能像其他定义一样使用自动加载。
/ 1 def
/ load =
/ cvx exec =
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。