如何在后记中创建一个以斜杠作为键的字典
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 =
所以我知道 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 =