Esempio n. 1
0
 @Override
 public Node visit(Sequence node) {
   // Node result = new Sequence( node.a.accept(this), node.b);
   Node result =
       Sequence.getInstance(
           new SequenceChild(node.sequenceChild.a.accept(this), node.sequenceChild.b));
   // Dc(AB) = Dc(A)B if A does not contain the empty string
   if (!node.sequenceChild.a.accept(nullable)) {
     return result;
     // Dc(AB) = Dc(A)B | Dc(B) if A contains the empty string
   } else {
     /* return new Or(
     result, // Dc(AB)
     node.sequenceChild.b.accept(this) // Dc(B)
     );
                               */
     return Or.getInstance(
         new OrChild(
             result, // Dc(AB)
             node.sequenceChild.b.accept(this)) // Dc(B)
         );
   }
 }
Esempio n. 2
0
 @Override
 public Node visit(OrChild node) {
   // Dc(A | B) = Dc(A) | Dc(B)
   // return new Or(node.a.accept(this), node.b.accept(this));
   return Or.getInstance(new OrChild(node.a.accept(this), node.b.accept(this)));
 }