编译器高级研究的理想平台

在20世纪90年代,作为GNU项目或其它开放源代码项目标一部分,许多免费编译器和编译器开发工具被开发出来。这些工具可用来编译所有的计算机程序语言。它们中的一些项目被认为是高质量的,而且对现代编译理论感兴趣的人可以很容易的得到它们的免费源代码。

大约在1999年,SGI公布了他们的一个工业化的并行化优化编译器Pro64的源代码,后被全世界多个编译器研究小组用来做研究平台,并命名为Open64。Open64的设计结构好,分析优化全面,是编译器高级研究的理想平台。

 

  1 package Com.Table;
  2 
  3 public abstract class TwelveTable {
  4     abstract int area();
  5     abstract int perimeter();
  6 }
  7  
  8 
  9 class Rect extends TwelveTable
 10 {
 11     int length;
 12     int wight;
 13     public int getLength() {
 14         return length;
 15     }
 16  
 17     public void setLength(int length) {
 18         this.length = length;
 19     }
 20  
 21     public int getWight() {
 22         return wight;
 23     }
 24  
 25     public void setWight(int wight) {
 26         this.wight = wight;
 27     }
 28  
 29     @Override
 30     int area() {
 31  
 32         return length * wight;
 33     }
 34  
 35     @Override
 36     int perimeter() {
 37         return (length + wight) * 2;
 38     }
 39 }
 40  
 41 
 42 class Trangle extends TwelveTable
 43 {
 44     int aSide;
 45     int bSide;
 46     int cSide;
 47  
 48     public int getaSide() {
 49         return aSide;
 50     }
 51  
 52     public void setaSide(int aSide) {
 53         this.aSide = aSide;
 54     }
 55  
 56     public int getbSide() {
 57         return bSide;
 58     }
 59  
 60     public void setbSide(int bSide) {
 61         this.bSide = bSide;
 62     }
 63  
 64     public int getcSide() {
 65         return cSide;
 66     }
 67  
 68     public void setcSide(int cSide) {
 69         this.cSide = cSide;
 70     }
 71  
 72     @Override
 73     int area() {
 74         int s = (aSide + bSide + cSide) / 2;
 75         double area = (double) (s * (s - aSide) * (s - bSide) * (s - cSide));
 76         return (int) Math.pow(area, 0.5);
 77     }
 78  
 79     @Override
 80     int perimeter() {
 81         return aSide + bSide + cSide;
 82     }
 83 }
 84 
 85 
 86  
 87 class Round extends TwelveTable
 88 {
 89     int Rides;
 90  
 91     public int getRides() {
 92         return Rides;
 93     }
 94  
 95     public void setRides(int rides) {
 96         Rides = rides;
 97     }
 98  
 99     @Override
100     int area() {
101         return (int) (Rides * Rides * 3.14);
102     }
103  
104     @Override
105     int perimeter() {
106         return (int) (2 * Rides * 3.14);
107     }
108 }
109  
110 
111 class ExObj
112 {
113     public static void main(String []args)
114     {
115         Rect rc = new Rect();
116         rc.setLength(3);
117         rc.setWight(4);
118         System.out.println("矩形面积 = " + rc.area()
119                 + ",矩形周长 = " + rc.perimeter());
120  
121         Trangle tg = new Trangle();
122         tg.setaSide(3);
123         tg.setbSide(4);
124         tg.setcSide(5);
125         System.out.println("三角形面积 = " + tg.area()
126                 + ",三角形周长 = " + tg.perimeter());
127  
128         Round rd = new Round();
129         rd.setRides(2);
130         System.out.println("圆面积 = " + rd.area()
131                 + ",圆周长 = " + rd.perimeter());
132     }
133 }
原文地址:https://www.cnblogs.com/borter/p/9384334.html