广义表是一种类似线性表的数据结构。广泛地用于人工智能等领域的表处理语言LISP语言,把广义表作为基本的数据结构,就连程序也表示为一系列的广义表。
    广义表一般记作

LS = (α1,α2,…,αn)

    其中,LS是广义表(α1,α2,…,αn)的名称,n是它的长度。αi可以 是单个元素,也可以是广义表,分别称为广义表LS的原子和子表。
    广义表的标准表示法通常难以阅读。比如,像“(a,(a,b),d,e,((i,j),k))”这样的广义表,通常我们很难一眼就看清它的结构。为了让人们能够更容易地看清广义表的结构,我们需要将广义表“画”出来。
    现在,你的任务是写程序“画出”给定的广义表。
    由于没有图形库,所以我们只好用字符来拼。用字符画广义表的规则是:
    一、广义表的元素自上而下排列,中间用“|”连接,相邻元素之间至少间隔两个“|”。
    二、如果某元素是原子,则直接打印;如果是子表,则在该元素的位置打印“L”(表示List),再打印“--”(两个减号),然后再按第一条规则自上而下打印子表的元素。
    三、空表的字符表示为空串。
    四、每行末尾不能有多余的空格。

输入

    输入有多组测试数据,每组测试数据为一行。每行为一个广义表,广义表的原子由一个小写字母表示,空格可以在任何地方出现。
    每组测试数据的长度不超过100。
    输入以“END”结束,这一行不需要处理。

输出

    对于每组测试数据,输出相应广义表的字符表示,再输出一行 “********************”(二十个星号)。

输入示例

(a)
(a,b)
(a,(b,c))
(a,(b,c),d)
END

输出示例

a
********************
a
|
|
b
********************
a
|
|
L--b
   |
   |
   c
********************
a
|
|
L--b
|  |
|  |
|  c
|
|
d
********************

姜边 2004.4