如何在后记中创建一个以斜杠作为键的字典

How to create a dictionary with a slash as key in postscript

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

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

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

end 从字典堆栈中删除最顶层的字典

d n w put 在字典 d

中的名称 n 下存储值 w

d n get获取字典d中namen的值,并入栈

我想做的是创建一个字典来表示不同操作数的结合性。 +操作数和-操作数具有相同的优先级,因此都设置为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

非常感谢任何帮助

%!

/prioritydict 5 dict def

prioritydict begin

/+ 0 def
/- 0 def
/* 1 def
%// 1 def    conflicts with immediately evaluated name
/^ 2 def

* ^ add =

您可以使用 cvn(转换为名称)运算符将您想要的任何形式的字符串转换为文字名称。这些应该都是等价的:

prioritydict <2f> cvn 1 put

prioritydict (\/) cvn 1 put

prioritydict (7) cvn 1 put

如果您只想使用字面名称来提及它,那么您可以只使用一个斜体。

/ 

也就是说,空名称仅由修饰符表示,后跟下一个定界符之前的零个字符(space 或换行符或圆括号或大括号)。

你应该可以定义它并加载它,但你不能直接为它创建一个可执行文件名,所以你不能像其他定义那样使用自动加载。

/ 1 def
/ load =
/ cvx exec =