terminfo 参数化字符串中的 else 表达式
If else expression in terminfo parameterized strings
我正在用 C++ 为参数化字符串(用于指定终端的某些终端功能)实现解析器。然后我在 terminfo 的手册页上看到了这个:
%? expr %t thenpart %e elsepart %;
This forms an if-then-else. The %e elsepart is optional. Usually the %? expr part pushes
a value onto the stack, and %t pops it from the stack, testing if it is nonzero (true). If
it is zero (false), control passes to the %e (else) part.
所以,我的问题是:
正如手册页所说,字符串中的 expr
部分可以 通常 将值压入堆栈,因此 expr
部分还可以做些什么, 即expr部分除了压栈还可以做哪些操作?
短:"anything"
long:terminfo 表达式最多使用 9 个参数(原因很明显,数字 1-9 这反过来可能是 sgr
有 9 个参数)。
在给定的示例中,
%?
expr %t
thenpart %e
elsepart %;
把它想象成一个程序
%?
</code><em>expr</em><br> <strong><code>%t
</code><em>thenpart</em><br><strong><code>%e
</code><em>elsepart</em><br><strong><code>%;
可以包含其他 if-then-else 件。但是,terminfo 的目的是将这些参数转换为字符串以发送到终端。文字字符将是 "output"。您可以将文字字符作为 thenpart,这些字符将用于输出。或者你可以计算一些表达式并暂时保存它,例如,在堆栈上。在 thenpart 和 elsepart 中执行此操作可以让您在 if-then-else 和要么将其用于输出,要么用于其他表达式。
xterm 使用 setf
、setb
和 [=10 中的功能=](参见 link 至 "xterm-basic")。
我正在用 C++ 为参数化字符串(用于指定终端的某些终端功能)实现解析器。然后我在 terminfo 的手册页上看到了这个:
%? expr %t thenpart %e elsepart %;
This forms an if-then-else. The %e elsepart is optional. Usually the %? expr part pushes
a value onto the stack, and %t pops it from the stack, testing if it is nonzero (true). If
it is zero (false), control passes to the %e (else) part.
所以,我的问题是:
正如手册页所说,字符串中的 expr
部分可以 通常 将值压入堆栈,因此 expr
部分还可以做些什么, 即expr部分除了压栈还可以做哪些操作?
短:"anything"
long:terminfo 表达式最多使用 9 个参数(原因很明显,数字 1-9 这反过来可能是 sgr
有 9 个参数)。
在给定的示例中,
%?
expr%t
thenpart%e
elsepart%;
把它想象成一个程序
%?
</code><em>expr</em><br> <strong><code>%t
</code><em>thenpart</em><br><strong><code>%e
</code><em>elsepart</em><br><strong><code>%;
可以包含其他 if-then-else 件。但是,terminfo 的目的是将这些参数转换为字符串以发送到终端。文字字符将是 "output"。您可以将文字字符作为 thenpart,这些字符将用于输出。或者你可以计算一些表达式并暂时保存它,例如,在堆栈上。在 thenpart 和 elsepart 中执行此操作可以让您在 if-then-else 和要么将其用于输出,要么用于其他表达式。
xterm 使用 setf
、setb
和 [=10 中的功能=](参见 link 至 "xterm-basic")。