微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 postscript 中创建以斜杠为键的字典

如何解决如何在 postscript 中创建以斜杠为键的字典

所以我在 Postscript 中知道这些基本的 dict 命令:

i dict 创建一个包含 i 个条目的字典

d begin 将字典 d 移动到字典堆栈

end 从字典栈中移除最顶层的字典

d n w put 在字典 w

中以名称 n 存储值 d

d n get 获取字典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 举报,一经查实,本站将立刻删除。