聪明绝顶的姬哥在这一天发明了新的语言,使世界上最好(雾)的语言 Java 脱胎换骨成为了 Jiva!我们知道类(class)在面向对象设计模式中是十分重要的,而 Jiva 很好地继承了这一点。Jiva 允许程序员声明若干类对象并合理进行继承关系。声明一个类对象的语法格式如下:
class CLASS_A
memberA
memberB
...
其中第一行使用 class 关键字声明一个名为 CLASS_A 的对象,然后往下若干行每行通过缩进声明一个属于 CLASS_A 的成员 memberX,其中缩进为 4个空格。
如果仅仅是这样那未免太简单了,同时 Jiva 也支持类对象的继承。一个对象 B 继承自另一个对象 A 表明对象 B 拥有所有对象 A 的成员,同时若在对象 B 中声明了新的成员,则新成员也属于对象 B,但不会属于对象 A。若 B 的新成员与 A 中某个成员同名,则新成员将会覆盖旧成员,即对象 B 中不会存在两个同名的成员。声明一个继承对象的语法格式如下:
class CLASS_B extends CLASS_A
memberB
memberC
...
其中类声明与成员声明语法不变,通过 extends 关键字表明对象 CLASS_B 继承自 CLASS_A,在上面的例子中,CLASS_B 中最终的成员有 memberA,memberB,memberC,而 CLASS_A 中最终的成员仅有 memberA,memberB。
请注意,继承关系是可嵌套的,例如若再增加如下声明
class CLASS_C extends CLASS_B
memberD
则最终 CLASS_C 中会包含成员 memberA,memberB,memberC,memberD,而并非只有成员 memberB,memberC,memberD。
现在姬哥写了一段 Jiva 程序,程序中包含了若干类对象的声明,其中有些类对象之间存在着继承关系。请你帮助姬哥解析一下程序的继承关系,告诉姬哥最后每个类对象中包含了多少个成员。
输入文件包含若干行,每行声明一个类对象或是一个成员。具体语法格式请参照题面。
为了简化数据,输入保证以下几点:
class 之前无空格,成员对象声明前有4个空格的缩进;请按照输入文件给定的类声明顺序输出每个类对象包含的成员个数,对于每个类输出格式如下:
CLASS_X : xxx 表示 CLASS_X 包含了 xxx 个成员。
class A
fb
fa
class B extends A
fb
fc
class C
fc
fb
A : 2
B : 3
C : 2