test.g
上传用户:afrynkmhm
上传日期:2007-01-06
资源大小:1262k
文件大小:7k
源码类别:

编译器/解释器

开发平台:

Others

  1. {
  2. import antlr.ASTFactory;
  3. import antlr.collections.ASTEnumeration;
  4. }
  5. class SupportTest extends Parser;
  6. options {
  7. buildAST = true;
  8. }
  9. {
  10. /** Test the equals, equalsSubtree, and findAll methods plus AST enumeration.
  11.  *  The output should be: 
  12. t is  ( = a 1 )
  13. u is  ( = b )
  14. v is  ( = 4 )
  15. w is  =
  16. t.equalsTree(t) is true
  17. t.equalsTree(u) is false
  18. t.equalsTree(v) is false
  19. t.equalsTree(w) is false
  20. t.equalsTree(null) is false
  21. t.equalsTreePartial(t) is true
  22. t.equalsTreePartial(u) is false
  23. t.equalsTreePartial(v) is false
  24. t.equalsTreePartial(w) is true
  25. t.equalsTreePartial(null) is true
  26. a is  ( A ( B C ( A B ) ) ( A B ) ( F ( A B ) ) ( A ( A B ) ) ) J
  27.               A---------------------J
  28.               |
  29.               B-----A-----F----A
  30.               |     |     |    |
  31.               C--A  B     A    A
  32.                  |        |    |
  33.                  B        B    B
  34. x is second sibling of upperleftmost A:  ( A B ) ( F ( A B ) ) ( A ( A B ) )
  35. y is child B of x:  B
  36. x.equalsTree(#(A B)) is true
  37. x.equalsList(#(A B)) is false
  38. x.equalsListPartial(#(A B)) is true
  39. a.equalsTree(#(A B)) is false
  40. a.equalsTreePartial(#(A B)) is true
  41. y.equalsList(#[B]) is true
  42. y.equalsListPartial(#[B]) is true
  43. a.findAllPartial(#(A B)):
  44.  ( A ( B C ( A B ) ) ( A B ) ( F ( A B ) ) ( A ( A B ) ) ) J
  45.  ( A B )
  46.  ( A B ) ( F ( A B ) ) ( A ( A B ) )
  47.  ( A B )
  48.  ( A B )
  49. a.findAllPartial(#[A])):
  50.  ( A ( B C ( A B ) ) ( A B ) ( F ( A B ) ) ( A ( A B ) ) ) J
  51.  ( A B )
  52.  ( A B ) ( F ( A B ) ) ( A ( A B ) )
  53.  ( A B )
  54.  ( A ( A B ) )
  55.  ( A B )
  56. a.findAll(#(A B)):
  57.  ( A B )
  58.  ( A B ) ( F ( A B ) ) ( A ( A B ) )
  59.  ( A B )
  60.  ( A B )
  61. Test results:
  62. equalsTree is ok
  63. equalsTreePartial is ok
  64. equalsList is ok
  65. equalsListPartial is ok
  66.  */
  67. public static void main(String[] args) {
  68. boolean r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14,r15,r16,r17;
  69. // define "astFactory" so translation of #(...) works
  70. ASTFactory astFactory = new ASTFactory();
  71. AST t = #([ASSIGN,"="], [ID,"a"], [INT,"1"]); // build "a=1" tree
  72. System.out.println("t is " + t.toStringList());
  73. AST u = #([ASSIGN,"="], [ID,"b"]); // build "b=?" tree
  74. System.out.println("u is " + u.toStringList());
  75. AST v = #([ASSIGN,"="], [INT,"4"]); // build "4=?" tree
  76. System.out.println("v is " + v.toStringList());
  77. AST w = #[ASSIGN,"="]; // build "=" tree
  78. System.out.println("w is " + w.toStringList());
  79. System.out.println("");
  80. System.out.println("t.equalsTree(t) is " + (r1=t.equalsTree(t)));
  81. System.out.println("t.equalsTree(u) is " + (r2=t.equalsTree(u)));
  82. System.out.println("t.equalsTree(v) is " + (r3=t.equalsTree(v)));
  83. System.out.println("t.equalsTree(w) is " + (r4=t.equalsTree(w)));
  84. System.out.println("t.equalsTree(null) is " + (r5=t.equalsTree(null)));
  85. System.out.println("");
  86. System.out.println("t.equalsTreePartial(t) is " + (r6=t.equalsTreePartial(t)));
  87. System.out.println("t.equalsTreePartial(u) is " + (r7=t.equalsTreePartial(u)));
  88. System.out.println("t.equalsTreePartial(v) is " + (r8=t.equalsTreePartial(v)));
  89. System.out.println("t.equalsTreePartial(w) is " + (r9=t.equalsTreePartial(w)));
  90. System.out.println("t.equalsTreePartial(null) is " + (r10=t.equalsTreePartial(null)));
  91. System.out.println("");
  92. /* (A (B C (A B)) (A B) (F (A B)) (A (A B)) ) J
  93.    Visually:
  94.               A---------------------J
  95.               |
  96.               B-----A-----F----A
  97.               |     |     |    |
  98.               C--A  B     A    A
  99.                  |        |    |
  100.                  B        B    B
  101. */
  102. AST a = #(null,
  103. ([A,"A"],
  104. ([B,"B"], [C,"C"], ([A,"A"],[B,"B"])),
  105. ([A,"A"],[B,"B"]),
  106. ([F,"F"], #([A,"A"], [B,"B"])),
  107. ([A,"A"], #([A,"A"], [B,"B"]))),
  108. [J,"J"]); 
  109. System.out.println("a is "+a.toStringList()+"n");
  110. System.out.println("              A---------------------J");
  111. System.out.println("              |");
  112. System.out.println("              B-----A-----F----A");
  113. System.out.println("              |     |     |    |");
  114. System.out.println("              C--A  B     A    A");
  115. System.out.println("                 |        |    |");
  116. System.out.println("                 B        B    Bn");
  117. AST x = a.getFirstChild().getNextSibling();
  118. System.out.println("x is second sibling of upperleftmost A: "+x.toStringList());
  119. AST y = a.getFirstChild().getNextSibling().getFirstChild();
  120. System.out.println("y is child B of x: "+y.toStringList());
  121. System.out.println("x.equalsTree(#(A B)) is "+(r11=x.equalsTree(#([A,"A"],[B,"B"]))));
  122. System.out.println("x.equalsList(#(A B)) is "+(r12=x.equalsList(#([A,"A"],[B,"B"]))));
  123. System.out.println("x.equalsListPartial(#(A B)) is "+(r13=x.equalsListPartial(#([A,"A"],[B,"B"]))));
  124. System.out.println("a.equalsTree(#(A B)) is "+(r14=a.equalsTree(#([A,"A"],[B,"B"]))));
  125. System.out.println("a.equalsTreePartial(#(A B)) is "+(r15=a.equalsTreePartial(#([A,"A"],[B,"B"]))));
  126. System.out.println("y.equalsList(#[B]) is "+(r16=y.equalsList(#[B,"B"])));
  127. System.out.println("y.equalsListPartial(#[B]) is "+(r17=y.equalsList(#[B,"B"])));
  128. ASTEnumeration enum;
  129. System.out.println("na.findAllPartial(#(A B)):");
  130. enum = a.findAllPartial(#([A,"A"],[B,"B"]));
  131. while ( enum.hasMoreNodes() ) {
  132. System.out.println(enum.nextNode().toStringList());
  133. }
  134. System.out.println("na.findAllPartial(#[A])):");
  135. enum = a.findAllPartial(#[A,"A"]);
  136. while ( enum.hasMoreNodes() ) {
  137. System.out.println(enum.nextNode().toStringList());
  138. }
  139. System.out.println("na.findAll(#(A B)):");
  140. enum = a.findAll(#([A,"A"],[B,"B"]));
  141. while ( enum.hasMoreNodes() ) {
  142. System.out.println(enum.nextNode().toStringList());
  143. }
  144. // check results
  145. System.out.println("nTest results:");
  146. if ( r1==true && r2==false && r3==false && r4==false &&
  147.  r5==false && r11==true && r14==false) {
  148. System.out.println("equalsTree is ok");
  149. }
  150. else {
  151. System.out.println("equalsTree is bad");
  152. }
  153. if ( r6==true && r7==false && r8==false && r9==true && r10==true ) {
  154. System.out.println("equalsTreePartial is ok");
  155. }
  156. else {
  157. System.out.println("equalsTreePartial is bad");
  158. }
  159. if ( r12==false && r16==true ) {
  160. System.out.println("equalsList is ok");
  161. }
  162. else {
  163. System.out.println("equalslist is bad");
  164. }
  165. if ( r13==true && r17==true ) {
  166. System.out.println("equalsListPartial is ok");
  167. }
  168. else {
  169. System.out.println("equalslistPartial is bad");
  170. }
  171. }
  172. }
  173. defTokenTypes
  174. : ID INT ASSIGN PLUS A B C D E F G H I J K
  175. ;
  176. /*
  177. rule[AST t] : BLAH;
  178. another
  179. {
  180.  #another = on here. // should translate
  181. }
  182. : rule[#another=foo] rule[#another] A
  183. // should get errors on those rule refs
  184. ;
  185. */