Structural Equivalence

来源:百度知道 编辑:UC知道 时间:2024/09/22 16:32:23
Input:equivalence.in output:标准输出

问题描述:
在编程语言设计圈子里,就有关类型匹配的“结构等价”相对于“名字等价”的优点一直是有争论的。Pascal的主旨是有“名字等价”;C的目的是有结构等价;Algol 68编程语言的拉丁语,有纯粹的结构等价。
Algol 68类型定义的简化语法如下:
type_def -> type T = type_expr
type_expr -> T | int | real | char | struct ( field_defs )
field_defs -> T | field_defs T
在这个语法中,T是程序员定义的类型名(在这个问题中,为简单起见,用单个大写字母)。ASCII文本符号照字义出现在输入中,语法中有空格的地方可有0个或多个空格。
Algol 68的类型等价是说如果两种类型有相同的基类型或两者都是结构类型且包含相同顺序的等价类型,那么这两种类型就是等价的。

输入:
输入有多个测试用例,每个测试用例是一系列的Algol 68定义,定义方式如上所述,每个定义占一行。各测试用例之间用“-”分隔。最后一个测试用例后是"--"。

输出:
对每个测试用例,其输出可能会有几行,每行都包含一串类型名,它们都是等价类型。每个类型名仅在输出中的一行出现,输出的行数应该最小。每一串类型名以字母顺序排列,该测试用例输出的各行也应以字母顺序排列。每两个测试用例之间输出一空行。

Sample Input:
type A = int
type B = A
type C = int
-
type A = int
type B = A
type C = int
type X = struct(A B)
type Y = struct(B A)
type Z = struct(A Z)
type S = struct(A S)
type W

确实,一直以来都是从事的应用开发,考虑怎么把客户的需求实现的完美和完善,一直执着于对软件功能的完善。
而对于这种学术性的研究生疏已久。

吾表兄,年四十余。始从文,连考三年而不中。遂习武,练武场上发一矢,中鼓吏,逐之出。改学医,自撰一良方,服之,卒。

楼主这里可没几个真才实学的。你在这里问没多大希望、这些东西我再当兵前手里还有些好代码。现在。。我自己看着都可笑