Rascal 命令行 REPL 中的输出被截断

Output truncated in Rascal Commandline REPL

我正在使用 Rascal 开发命令行 REPL 环境,并尝试查看分析树和来自 The Ambiguity 库的输出等内容。但是,这些在命令行中被截断了。例如:

rascal>diagnose(parse(|cwd:///Core/tests/F0.func|));
list[Message]: [
info(
   "Ambiguity cluster with 2 alternatives",
   |cwd:///Core/tests/F0.func|(0,0,<1,0>,<1,0>)),
info(
  "Production unique to the one alternative: Exp =  app: Exp  Exp ;",
  |cwd:///Core/tests/F0.func|(0,0,<1,0>,<1,0>)),
info(
  "Production unique to th...

我有兴趣查看此输出的其余部分。是否有我可以更改的设置,或者我可以通过某种方式查看此信息。谢谢。

这是出于性能原因。 (Terminal/Shells 不喜欢打印巨大的字符串)

您可以 import IO 并使用 iprintln to get the indented print without any truncating. For performance reasons you could als use iprintToFile:

import IO;
r = diagnose(parse(|cwd:///Core/tests/F0.func|));
iprintln(r)

作为替代方案,您可能希望使用 util::ValueUI::text 在编辑器中获取值:(仅适用于 eclipse)

import util::ValueUI;
r = diagnose(parse(|cwd:///Core/tests/F0.func|));
text(r, 4); // indentation level is 4

最后,我们有时会使用 util::Clipboard:

将值复制到剪贴板
import util::Clipboard;
r = diagnose(parse(|cwd:///Core/tests/F0.func|));
copy(r)

然后您可以使用 OS 快捷方式将它们粘贴到任何地方。