我有一个需要等价的情况,例如:
[
{Foo}
http://example.com/some/stuff.html
separator
]
...就像你写的那样处理:
[
[{Foo}]
[http://example.com/some/stuff.html]
[separator]
]
增加一点复杂性的是,如果您将项目放在一个块中,那么它可以有参数:
[
[{Foo} /some-refinement]
[http://example.com/some/stuff.html {stuff caption} 3]
[separator dashed-line]
]
我想要一个基于 PARSE 的引擎,它可以为 、 和 (我们称之为 STRING-HANDLER) 运行相同的处理程序{Foo}
,[{Foo}]
并且[{Foo} /some-refinement]
只需使用正确数量的参数调用它。
在没有 PARSE 的情况下编写这个很容易......单个元素被包装在一个临时块中(如果它不是一个块)。然后在 CASE 语句中测试第一项。但我想将其转换为基于 PARSE 的,其中一个分支使用 INTO 而另一个不使用,无需重复代码。
它需要支持嵌套,因此您可能最终会处理以下内容:
[http://example.com/some/stuff.html [{Foo} /some-refinement] 3]